canvas-emulator 1.0.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 (147) hide show
  1. package/.gitignore +233 -0
  2. package/CLAUDE.md +61 -0
  3. package/README.md +128 -0
  4. package/dist/cjs/playground.d.ts +2 -0
  5. package/dist/cjs/playground.d.ts.map +1 -0
  6. package/dist/cjs/playground.js +37 -0
  7. package/dist/cjs/playground.js.map +1 -0
  8. package/dist/cjs/src/canvas/canvas.d.ts +41 -0
  9. package/dist/cjs/src/canvas/canvas.d.ts.map +1 -0
  10. package/dist/cjs/src/canvas/canvas.js +83 -0
  11. package/dist/cjs/src/canvas/canvas.js.map +1 -0
  12. package/dist/cjs/src/canvas/context-2d.d.ts +37 -0
  13. package/dist/cjs/src/canvas/context-2d.d.ts.map +1 -0
  14. package/dist/cjs/src/canvas/context-2d.js +245 -0
  15. package/dist/cjs/src/canvas/context-2d.js.map +1 -0
  16. package/dist/cjs/src/canvas/index.d.ts +2 -0
  17. package/dist/cjs/src/canvas/index.d.ts.map +1 -0
  18. package/dist/cjs/src/canvas/index.js +18 -0
  19. package/dist/cjs/src/canvas/index.js.map +1 -0
  20. package/dist/cjs/src/common/array.d.ts +40 -0
  21. package/dist/cjs/src/common/array.d.ts.map +1 -0
  22. package/dist/cjs/src/common/array.js +99 -0
  23. package/dist/cjs/src/common/array.js.map +1 -0
  24. package/dist/cjs/src/common/colors.d.ts +62 -0
  25. package/dist/cjs/src/common/colors.d.ts.map +1 -0
  26. package/dist/cjs/src/common/colors.js +93 -0
  27. package/dist/cjs/src/common/colors.js.map +1 -0
  28. package/dist/cjs/src/common/hash.d.ts +3 -0
  29. package/dist/cjs/src/common/hash.d.ts.map +1 -0
  30. package/dist/cjs/src/common/hash.js +44 -0
  31. package/dist/cjs/src/common/hash.js.map +1 -0
  32. package/dist/cjs/src/common/index.d.ts +7 -0
  33. package/dist/cjs/src/common/index.d.ts.map +1 -0
  34. package/dist/cjs/src/common/index.js +23 -0
  35. package/dist/cjs/src/common/index.js.map +1 -0
  36. package/dist/cjs/src/common/ppm.d.ts +2 -0
  37. package/dist/cjs/src/common/ppm.d.ts.map +1 -0
  38. package/dist/cjs/src/common/ppm.js +21 -0
  39. package/dist/cjs/src/common/ppm.js.map +1 -0
  40. package/dist/cjs/src/common/scalar.d.ts +27 -0
  41. package/dist/cjs/src/common/scalar.d.ts.map +1 -0
  42. package/dist/cjs/src/common/scalar.js +65 -0
  43. package/dist/cjs/src/common/scalar.js.map +1 -0
  44. package/dist/cjs/src/common/types.d.ts +9 -0
  45. package/dist/cjs/src/common/types.d.ts.map +1 -0
  46. package/dist/cjs/src/common/types.js +3 -0
  47. package/dist/cjs/src/common/types.js.map +1 -0
  48. package/dist/cjs/src/data/font/index.d.ts +2 -0
  49. package/dist/cjs/src/data/font/index.d.ts.map +1 -0
  50. package/dist/cjs/src/data/font/index.js +18 -0
  51. package/dist/cjs/src/data/font/index.js.map +1 -0
  52. package/dist/cjs/src/data/font/noto-mono-regular-48.d.ts +747 -0
  53. package/dist/cjs/src/data/font/noto-mono-regular-48.d.ts.map +1 -0
  54. package/dist/cjs/src/data/font/noto-mono-regular-48.js +15544 -0
  55. package/dist/cjs/src/data/font/noto-mono-regular-48.js.map +1 -0
  56. package/dist/cjs/src/data/font/noto-mono-regular-48.json +15540 -0
  57. package/dist/cjs/src/data/index.d.ts +2 -0
  58. package/dist/cjs/src/data/index.d.ts.map +1 -0
  59. package/dist/cjs/src/data/index.js +18 -0
  60. package/dist/cjs/src/data/index.js.map +1 -0
  61. package/dist/cjs/src/index.d.ts +4 -0
  62. package/dist/cjs/src/index.d.ts.map +1 -0
  63. package/dist/cjs/src/index.js +20 -0
  64. package/dist/cjs/src/index.js.map +1 -0
  65. package/dist/esm/playground.d.ts +2 -0
  66. package/dist/esm/playground.d.ts.map +1 -0
  67. package/dist/esm/playground.js +37 -0
  68. package/dist/esm/playground.js.map +1 -0
  69. package/dist/esm/src/canvas/canvas.d.ts +41 -0
  70. package/dist/esm/src/canvas/canvas.d.ts.map +1 -0
  71. package/dist/esm/src/canvas/canvas.js +83 -0
  72. package/dist/esm/src/canvas/canvas.js.map +1 -0
  73. package/dist/esm/src/canvas/context-2d.d.ts +37 -0
  74. package/dist/esm/src/canvas/context-2d.d.ts.map +1 -0
  75. package/dist/esm/src/canvas/context-2d.js +245 -0
  76. package/dist/esm/src/canvas/context-2d.js.map +1 -0
  77. package/dist/esm/src/canvas/index.d.ts +2 -0
  78. package/dist/esm/src/canvas/index.d.ts.map +1 -0
  79. package/dist/esm/src/canvas/index.js +18 -0
  80. package/dist/esm/src/canvas/index.js.map +1 -0
  81. package/dist/esm/src/common/array.d.ts +40 -0
  82. package/dist/esm/src/common/array.d.ts.map +1 -0
  83. package/dist/esm/src/common/array.js +99 -0
  84. package/dist/esm/src/common/array.js.map +1 -0
  85. package/dist/esm/src/common/colors.d.ts +62 -0
  86. package/dist/esm/src/common/colors.d.ts.map +1 -0
  87. package/dist/esm/src/common/colors.js +93 -0
  88. package/dist/esm/src/common/colors.js.map +1 -0
  89. package/dist/esm/src/common/hash.d.ts +3 -0
  90. package/dist/esm/src/common/hash.d.ts.map +1 -0
  91. package/dist/esm/src/common/hash.js +44 -0
  92. package/dist/esm/src/common/hash.js.map +1 -0
  93. package/dist/esm/src/common/index.d.ts +7 -0
  94. package/dist/esm/src/common/index.d.ts.map +1 -0
  95. package/dist/esm/src/common/index.js +23 -0
  96. package/dist/esm/src/common/index.js.map +1 -0
  97. package/dist/esm/src/common/ppm.d.ts +2 -0
  98. package/dist/esm/src/common/ppm.d.ts.map +1 -0
  99. package/dist/esm/src/common/ppm.js +21 -0
  100. package/dist/esm/src/common/ppm.js.map +1 -0
  101. package/dist/esm/src/common/scalar.d.ts +27 -0
  102. package/dist/esm/src/common/scalar.d.ts.map +1 -0
  103. package/dist/esm/src/common/scalar.js +65 -0
  104. package/dist/esm/src/common/scalar.js.map +1 -0
  105. package/dist/esm/src/common/types.d.ts +9 -0
  106. package/dist/esm/src/common/types.d.ts.map +1 -0
  107. package/dist/esm/src/common/types.js +3 -0
  108. package/dist/esm/src/common/types.js.map +1 -0
  109. package/dist/esm/src/data/font/index.d.ts +2 -0
  110. package/dist/esm/src/data/font/index.d.ts.map +1 -0
  111. package/dist/esm/src/data/font/index.js +18 -0
  112. package/dist/esm/src/data/font/index.js.map +1 -0
  113. package/dist/esm/src/data/font/noto-mono-regular-48.d.ts +747 -0
  114. package/dist/esm/src/data/font/noto-mono-regular-48.d.ts.map +1 -0
  115. package/dist/esm/src/data/font/noto-mono-regular-48.js +15544 -0
  116. package/dist/esm/src/data/font/noto-mono-regular-48.js.map +1 -0
  117. package/dist/esm/src/data/font/noto-mono-regular-48.json +15540 -0
  118. package/dist/esm/src/data/index.d.ts +2 -0
  119. package/dist/esm/src/data/index.d.ts.map +1 -0
  120. package/dist/esm/src/data/index.js +18 -0
  121. package/dist/esm/src/data/index.js.map +1 -0
  122. package/dist/esm/src/index.d.ts +4 -0
  123. package/dist/esm/src/index.d.ts.map +1 -0
  124. package/dist/esm/src/index.js +20 -0
  125. package/dist/esm/src/index.js.map +1 -0
  126. package/package.json +43 -0
  127. package/playground.ts +41 -0
  128. package/pnpm-lock.yaml +352 -0
  129. package/render_font.py +98 -0
  130. package/src/canvas/canvas.ts +123 -0
  131. package/src/canvas/context-2d.ts +305 -0
  132. package/src/canvas/index.ts +1 -0
  133. package/src/common/array.ts +176 -0
  134. package/src/common/colors.ts +93 -0
  135. package/src/common/hash.ts +46 -0
  136. package/src/common/index.ts +6 -0
  137. package/src/common/ppm.ts +28 -0
  138. package/src/common/scalar.ts +72 -0
  139. package/src/common/types.ts +10 -0
  140. package/src/data/font/index.ts +1 -0
  141. package/src/data/font/noto-mono-regular-48.json +15540 -0
  142. package/src/data/font/noto-mono-regular-48.ts +15540 -0
  143. package/src/data/index.ts +1 -0
  144. package/src/index.ts +3 -0
  145. package/tsconfig.cjs.json +10 -0
  146. package/tsconfig.esm.json +10 -0
  147. package/tsconfig.json +23 -0
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CanvasContext2DImpl = void 0;
4
+ const common_1 = require("../common");
5
+ const noto_mono_regular_48_1 = require("../data/font/noto-mono-regular-48");
6
+ const FONT_WIDTH = 48;
7
+ class State {
8
+ fillStyle = "red";
9
+ strokeStyle = "red";
10
+ cursor = [0, 0];
11
+ points = [];
12
+ paths = [];
13
+ activePath = null;
14
+ fontSize = FONT_WIDTH;
15
+ clone() {
16
+ const copy = new State();
17
+ copy.fillStyle = this.fillStyle;
18
+ copy.strokeStyle = this.strokeStyle;
19
+ copy.cursor = [this.cursor[0], this.cursor[1]];
20
+ copy.points = [...this.points.map((p) => [p[0], p[1]])];
21
+ copy.paths = this.paths.map((p) => [...p]);
22
+ copy.activePath = this.activePath ? [...this.activePath] : null;
23
+ copy.fontSize = this.fontSize;
24
+ return copy;
25
+ }
26
+ get path() {
27
+ if (this.paths.length <= 0)
28
+ return this.points;
29
+ return this.paths[this.paths.length - 1];
30
+ }
31
+ beginPath() {
32
+ this.paths.push([]);
33
+ }
34
+ closePath() {
35
+ const path = this.paths.pop();
36
+ this.activePath = path || null;
37
+ }
38
+ addPoint(point) {
39
+ if (this.activePath !== null) {
40
+ this.activePath.push([point[0], point[1]]);
41
+ return;
42
+ }
43
+ this.points.push([point[0], point[1]]);
44
+ }
45
+ addCursor() {
46
+ this.addPoint(this.cursor);
47
+ }
48
+ setCursor(x, y) {
49
+ this.cursor = [x, y];
50
+ }
51
+ }
52
+ class CanvasContext2DImpl {
53
+ canvas;
54
+ stack = [new State()];
55
+ constructor(canvas) {
56
+ this.canvas = canvas;
57
+ }
58
+ get state() {
59
+ const states = this.stack;
60
+ if (states.length <= 0)
61
+ throw new Error("Out of states");
62
+ return states[states.length - 1];
63
+ }
64
+ get fillStyle() {
65
+ return this.state.fillStyle;
66
+ }
67
+ set fillStyle(value) {
68
+ this.state.fillStyle = value;
69
+ }
70
+ get strokeStyle() {
71
+ return this.state.strokeStyle;
72
+ }
73
+ set strokeStyle(value) {
74
+ this.state.strokeStyle = value;
75
+ }
76
+ save() {
77
+ this.stack.push(this.state.clone());
78
+ }
79
+ restore() {
80
+ this.stack.pop();
81
+ }
82
+ moveTo(x, y) {
83
+ this.state.setCursor(x, y);
84
+ }
85
+ lineTo(x, y) {
86
+ this.state.addCursor();
87
+ this.state.addPoint([x, y]);
88
+ }
89
+ arc(x, y, radius, startAngle) {
90
+ const segments = 32;
91
+ for (let i = 0; i < segments; i++) {
92
+ const angle1 = (0, common_1.remap)(i, [0, segments], [startAngle, Math.PI * 2]);
93
+ const angle2 = (0, common_1.remap)(i + 1, [0, segments], [startAngle, Math.PI * 2]);
94
+ const p1 = [
95
+ x + Math.cos(angle1) * radius,
96
+ y + Math.sin(angle1) * radius,
97
+ ];
98
+ const p2 = [
99
+ x + Math.cos(angle2) * radius,
100
+ y + Math.sin(angle2) * radius,
101
+ ];
102
+ this.state.addPoint(p1);
103
+ this.state.addPoint(p2);
104
+ }
105
+ }
106
+ rect(x, y, width, height) {
107
+ const tl = [x, y];
108
+ const tr = [x + width, y];
109
+ const br = [x + width, y + height];
110
+ const bl = [x, y + height];
111
+ this.state.addPoint(tl);
112
+ this.state.addPoint(tr); // top
113
+ this.state.addPoint(tr);
114
+ this.state.addPoint(br); // right
115
+ this.state.addPoint(br);
116
+ this.state.addPoint(bl); // bottom
117
+ this.state.addPoint(bl);
118
+ this.state.addPoint(tl); // left
119
+ }
120
+ fill() {
121
+ const path = this.state.path;
122
+ if (path.length < 3)
123
+ return;
124
+ const rgb = (0, common_1.toRGB)(this.fillStyle);
125
+ const pixel = [rgb[0], rgb[1], rgb[2], 1];
126
+ let minY = path[0][1];
127
+ let maxY = path[0][1];
128
+ for (const p of path) {
129
+ if (p[1] < minY)
130
+ minY = p[1];
131
+ if (p[1] > maxY)
132
+ maxY = p[1];
133
+ }
134
+ for (let y = Math.ceil(minY); y <= Math.floor(maxY); y++) {
135
+ const intersections = [];
136
+ for (let i = 0; i < path.length; i++) {
137
+ const a = path[i];
138
+ const b = path[(i + 1) % path.length];
139
+ const y1 = a[1];
140
+ const y2 = b[1];
141
+ if ((y1 <= y && y < y2) || (y2 <= y && y < y1)) {
142
+ const x = a[0] + ((y - y1) * (b[0] - a[0])) / (y2 - y1);
143
+ intersections.push(x);
144
+ }
145
+ }
146
+ intersections.sort((a, b) => a - b);
147
+ for (let i = 0; i < intersections.length; i += 2) {
148
+ const x1 = Math.ceil(intersections[i]);
149
+ const x2 = Math.floor(intersections[i + 1]);
150
+ for (let x = x1; x <= x2; x++) {
151
+ this.canvas.setAt([x, y], pixel);
152
+ }
153
+ }
154
+ }
155
+ }
156
+ stroke() {
157
+ const rgb = (0, common_1.toRGB)(this.strokeStyle);
158
+ const pixel = [rgb[0], rgb[1], rgb[2], 1];
159
+ for (let i = 0; i < this.state.path.length; i += 2) {
160
+ const a = this.state.path[(i + 0) % this.state.path.length];
161
+ const b = this.state.path[(i + 1) % this.state.path.length];
162
+ const x1 = a[0];
163
+ const y1 = a[1];
164
+ const x2 = b[0];
165
+ const y2 = b[1];
166
+ const dx = x2 - x1;
167
+ const dy = y2 - y1;
168
+ if (Math.abs(dx) >= Math.abs(dy)) {
169
+ const step = dx >= 0 ? 1 : -1;
170
+ const m = dy / dx;
171
+ for (let x = x1; step > 0 ? x < x2 : x > x2; x += step) {
172
+ const y = m * (x - x1) + y1;
173
+ this.canvas.setAt([x, y], pixel);
174
+ }
175
+ }
176
+ else {
177
+ const step = dy >= 0 ? 1 : -1;
178
+ const m = dx / dy;
179
+ for (let y = y1; step > 0 ? y < y2 : y > y2; y += step) {
180
+ const x = m * (y - y1) + x1;
181
+ this.canvas.setAt([x, y], pixel);
182
+ }
183
+ }
184
+ }
185
+ }
186
+ strokeRect(x, y, width, height) {
187
+ this.rect(x, y, width, height);
188
+ this.stroke();
189
+ }
190
+ fillRect(x, y, width, height) {
191
+ this.rect(x, y, width, height);
192
+ this.fill();
193
+ }
194
+ clearRect(x, y, width, height) {
195
+ for (let py = 0; py < height; py++) {
196
+ for (let px = 0; px < width; px++) {
197
+ this.canvas.setAt([x + px, y + py], [0, 0, 0, 0]);
198
+ }
199
+ }
200
+ }
201
+ drawChar(char, x, y, width, ratio) {
202
+ this.state.fontSize = width;
203
+ const code = char.charCodeAt(0);
204
+ const glyph = noto_mono_regular_48_1.NOTO_MONO_REGULAR_48[`${code}`];
205
+ if (typeof glyph === "undefined")
206
+ throw new Error(`Cannot draw: ${char}`);
207
+ const pixels = glyph.data;
208
+ const height = width;
209
+ for (let py = 0; py < height; py++) {
210
+ for (let px = 0; px < width; px++) {
211
+ const pixelY = Math.floor((py / height) * FONT_WIDTH);
212
+ const pixelX = Math.floor((px / width) * FONT_WIDTH);
213
+ const idx = (0, common_1.clamp)(pixelY * FONT_WIDTH + pixelX, 0, FONT_WIDTH * FONT_WIDTH - 1);
214
+ const alpha = pixels[idx];
215
+ const imgX = x + px;
216
+ const imgY = y + py + ratio * 0.5 * glyph.offset_y;
217
+ const rgb = (0, common_1.toRGB)(this.fillStyle);
218
+ this.canvas.setAt([imgX, imgY], [rgb[0], rgb[1], rgb[2], alpha]);
219
+ }
220
+ }
221
+ return glyph;
222
+ }
223
+ fillText(text, x, y, maxWidth) {
224
+ const width = maxWidth || FONT_WIDTH;
225
+ const ratio = width / FONT_WIDTH;
226
+ for (const c of text) {
227
+ const glyph = this.drawChar(c, x, y, width, ratio);
228
+ x += ratio * glyph.advance;
229
+ }
230
+ }
231
+ strokeText(text, x, y, maxWidth) {
232
+ this.fillText(text, x, y, maxWidth || 48);
233
+ }
234
+ measureText(text) {
235
+ return { width: text.length * this.state.fontSize * 0.5 };
236
+ }
237
+ beginPath() {
238
+ this.state.beginPath();
239
+ }
240
+ closePath() {
241
+ this.state.closePath();
242
+ }
243
+ }
244
+ exports.CanvasContext2DImpl = CanvasContext2DImpl;
245
+ //# sourceMappingURL=context-2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-2d.js","sourceRoot":"","sources":["../../../../src/canvas/context-2d.ts"],"names":[],"mappings":";;;AAAA,sCAAoD;AAEpD,4EAAiF;AAEjF,MAAM,UAAU,GAAW,EAAE,CAAC;AAM9B,MAAM,KAAK;IACT,SAAS,GAAW,KAAK,CAAC;IAC1B,WAAW,GAAW,KAAK,CAAC;IAC5B,MAAM,GAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpB,MAAM,GAAS,EAAE,CAAC;IAClB,KAAK,GAAgB,EAAE,CAAC;IACxB,UAAU,GAAgB,IAAI,CAAC;IAC/B,QAAQ,GAAW,UAAU,CAAC;IAE9B,KAAK;QACH,MAAM,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI;QACN,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IAC5C,CAAC;IAED,SAAS;QACP,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IAED,SAAS;QACP,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,IAAI,CAAC;IACjC,CAAC;IAED,QAAQ,CAAC,KAAS;QAChB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,SAAS;QACP,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,SAAS,CAAC,CAAS,EAAE,CAAS;QAC5B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,CAAC;CACF;AAID,MAAa,mBAAmB;IAC9B,MAAM,CAAS;IACP,KAAK,GAAiB,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;IAE5C,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,IAAY,KAAK;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IACpC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;IAC9B,CAAC;IACD,IAAI,SAAS,CAAC,KAAa;QACzB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;IAChC,CAAC;IACD,IAAI,WAAW,CAAC,KAAa;QAC3B,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;IACjC,CAAC;IAED,IAAI;QACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,CAAS,EAAE,CAAS;QACzB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,CAAS,EAAE,CAAS;QACzB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,MAAc,EAAE,UAAkB;QAC1D,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAA,cAAK,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,IAAA,cAAK,EAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACtE,MAAM,EAAE,GAAO;gBACb,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM;gBAC7B,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM;aAC9B,CAAC;YACF,MAAM,EAAE,GAAO;gBACb,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM;gBAC7B,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM;aAC9B,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAI,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc;QACtD,MAAM,EAAE,GAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,MAAM,EAAE,GAAO,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAO,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;QACvC,MAAM,EAAE,GAAO,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;QAC/B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ;QACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;QAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO;IAClC,CAAC;IAED,IAAI;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO;QAE5B,MAAM,GAAG,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,KAAK,GAAqC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5E,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;gBAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;gBAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzD,MAAM,aAAa,GAAa,EAAE,CAAC;YAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;gBACnB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAE,CAAC;gBACvC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEhB,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;oBAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;oBACxD,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;YAED,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAE,CAAC,CAAC;gBACxC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;gBAC7C,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM;QACJ,MAAM,GAAG,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpC,MAAM,KAAK,GAAqC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAE,CAAC;YAC7D,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAE,CAAC;YAC7D,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YACnB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YAEnB,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;gBAClB,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;oBACvD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;oBAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;gBAClB,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;oBACvD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;oBAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc;QAC5D,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc;QAC1D,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,SAAS,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc;QAC3D,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YACnC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAEO,QAAQ,CACd,IAAY,EACZ,CAAS,EACT,CAAS,EACT,KAAa,EACb,KAAa;QAQb,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,2CAAI,CAAC,GAAG,IAAI,EAAuB,CAAC,CAAC;QACnD,IAAI,OAAO,KAAK,KAAK,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;QAE1B,MAAM,MAAM,GAAG,KAAK,CAAC;QAErB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YACnC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC;gBACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC;gBACrD,MAAM,GAAG,GAAG,IAAA,cAAK,EACf,MAAM,GAAG,UAAU,GAAG,MAAM,EAC5B,CAAC,EACD,UAAU,GAAG,UAAU,GAAG,CAAC,CAC5B,CAAC;gBACF,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAE,CAAC;gBAE3B,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;gBACpB,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAEnD,MAAM,GAAG,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAKD,QAAQ,CAAC,IAAY,EAAE,CAAS,EAAE,CAAS,EAAE,QAAiB;QAC5D,MAAM,KAAK,GAAG,QAAQ,IAAI,UAAU,CAAC;QACrC,MAAM,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,CAAC;IACH,CAAC;IAKD,UAAU,CAAC,IAAY,EAAE,CAAS,EAAE,CAAS,EAAE,QAAiB;QAC9D,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC;IAC5D,CAAC;IAED,SAAS;QACP,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;IACzB,CAAC;IACD,SAAS;QACP,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;IACzB,CAAC;CACF;AAhPD,kDAgPC"}
@@ -0,0 +1,2 @@
1
+ export * from "./canvas";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/canvas/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./canvas"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/canvas/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB"}
@@ -0,0 +1,40 @@
1
+ import { type Triple, type Pair, V2, V3 } from "./types";
2
+ export declare const range: (n: number) => number[];
3
+ export declare const zipMin: <A, B>(a: A[], b: B[]) => Array<Pair<A, B>>;
4
+ export declare const zipMax: <A, B>(a: A[], b: B[]) => Array<Pair<A | undefined, B | undefined>>;
5
+ export declare function toBatched<T>(arr: T[], batchSize: 1, padding: T): Array<[T]>;
6
+ export declare function toBatched<T>(arr: T[], batchSize: 2, padding: T): Array<[T, T]>;
7
+ export declare function toBatched<T>(arr: T[], batchSize: 3, padding: T): Array<[T, T, T]>;
8
+ export declare function toBatched<T>(arr: T[], batchSize: 4, padding: T): Array<[T, T, T, T]>;
9
+ export declare function toBatched<T>(arr: T[], batchSize: 5, padding: T): Array<[T, T, T, T, T]>;
10
+ export declare function toBatched<T>(arr: T[], batchSize: 6, padding: T): Array<[T, T, T, T, T, T]>;
11
+ export declare function toBatched<T>(arr: T[], batchSize: 7, padding: T): Array<[T, T, T, T, T, T, T]>;
12
+ export declare function toBatched<T>(arr: T[], batchSize: 8, padding: T): Array<[T, T, T, T, T, T, T, T]>;
13
+ export declare function toBatched<T>(arr: T[], batchSize: number, padding: T): Array<T[]>;
14
+ export declare function toBatched<T>(arr: T[], batchSize: number): Array<T[]>;
15
+ export declare function toBatched<T>(arr: T[], batchSize: number, padding?: T): Array<T[]>;
16
+ export declare const sum: (arr: number[]) => number;
17
+ export declare const average: (arr: number[]) => number;
18
+ export declare const magnitude: (arr: number[]) => number;
19
+ export declare const normalizeSq: <Arr extends number[]>(arr: Arr) => Arr;
20
+ export declare const unit: <Arr extends number[]>(arr: Arr) => Arr;
21
+ export declare const dot: (a: number[], b: number[]) => number;
22
+ export declare const cross: (a: number[] | Triple<number, number, number>, b: number[] | Triple<number, number, number>) => Triple<number, number, number>;
23
+ export declare function add(a: V2, b: V2): V2;
24
+ export declare function add(a: V3, b: V3): V3;
25
+ export declare function add(a: number[], b: number[]): number[];
26
+ export declare function sub(a: V2, b: V2): V2;
27
+ export declare function sub(a: V3, b: V3): V3;
28
+ export declare function sub(a: number[], b: number[]): number[];
29
+ export declare function mul(a: V2, b: V2): V2;
30
+ export declare function mul(a: V3, b: V3): V3;
31
+ export declare function mul(a: number[], b: number[]): number[];
32
+ export declare function div(a: V2, b: V2): V2;
33
+ export declare function div(a: V3, b: V3): V3;
34
+ export declare function div(a: number[], b: number[]): number[];
35
+ export declare function scale(a: V2, s: number): V2;
36
+ export declare function scale(a: V3, s: number): V3;
37
+ export declare function scale(a: number[], s: number): number[];
38
+ export declare const distance: (a: number[], b: number[]) => number;
39
+ export declare const cosineDistance: (a: number[], b: number[]) => number;
40
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../../src/common/array.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cosineDistance = exports.distance = exports.cross = exports.dot = exports.unit = exports.normalizeSq = exports.magnitude = exports.average = exports.sum = exports.zipMax = exports.zipMin = exports.range = void 0;
4
+ exports.toBatched = toBatched;
5
+ exports.add = add;
6
+ exports.sub = sub;
7
+ exports.mul = mul;
8
+ exports.div = div;
9
+ exports.scale = scale;
10
+ const range = (n) => n <= 0 || typeof n !== "number" || isNaN(n) || !isFinite(n) ?
11
+ []
12
+ : Array.from(Array(Math.floor(n)).keys());
13
+ exports.range = range;
14
+ const zipMin = (a, b) => (0, exports.range)(Math.min(a.length, b.length)).map((i) => {
15
+ const x = a[i];
16
+ const y = b[i];
17
+ return [x, y];
18
+ });
19
+ exports.zipMin = zipMin;
20
+ const zipMax = (a, b) => (0, exports.range)(Math.min(a.length, b.length)).map((i) => {
21
+ const x = a[i];
22
+ const y = b[i];
23
+ return [x, y];
24
+ });
25
+ exports.zipMax = zipMax;
26
+ function toBatched(arr, batchSize, padding) {
27
+ const output = [];
28
+ for (let i = 0; i < arr.length; i += batchSize) {
29
+ const batch = arr.slice(i, i + batchSize);
30
+ if (padding !== undefined && batch.length < batchSize) {
31
+ batch.push(...Array(batchSize - batch.length).fill(padding));
32
+ }
33
+ output.push(batch);
34
+ }
35
+ return output;
36
+ }
37
+ const sum = (arr) => arr.reduce((a, b) => a + b, 0);
38
+ exports.sum = sum;
39
+ const average = (arr) => arr.length <= 0 ? 0 : (0, exports.sum)(arr) / arr.length;
40
+ exports.average = average;
41
+ const magnitude = (arr) => Math.hypot(...arr);
42
+ exports.magnitude = magnitude;
43
+ const normalizeSq = (arr) => {
44
+ const mag = (0, exports.magnitude)(arr);
45
+ if (Math.abs(mag) < 0.00000000000000001)
46
+ return [...arr];
47
+ return arr.map((x) => x / mag);
48
+ };
49
+ exports.normalizeSq = normalizeSq;
50
+ // alias for normalizeSq
51
+ const unit = (arr) => (0, exports.normalizeSq)(arr);
52
+ exports.unit = unit;
53
+ const dot = (a, b) => (0, exports.sum)((0, exports.zipMin)(a, b).map(([v1, v2]) => v1 * v2));
54
+ exports.dot = dot;
55
+ const cross = (a, b) => {
56
+ if (a.length !== 3)
57
+ throw new Error("cross() can only be used on 3-dimensional vectors");
58
+ if (b.length !== a.length)
59
+ throw new Error("both vectors must have the same length");
60
+ const ax = a[0];
61
+ const ay = a[1];
62
+ const az = a[2];
63
+ const bx = a[0];
64
+ const by = a[1];
65
+ const bz = a[2];
66
+ const x = ay * bz - az * by;
67
+ const y = az * bx - ax * bz;
68
+ const z = ax * by - ay * bx;
69
+ return [x, y, z];
70
+ };
71
+ exports.cross = cross;
72
+ function add(a, b) {
73
+ return (0, exports.zipMin)(a, b).map(([v1, v2]) => v1 + v2);
74
+ }
75
+ function sub(a, b) {
76
+ return (0, exports.zipMin)(a, b).map(([v1, v2]) => v1 - v2);
77
+ }
78
+ function mul(a, b) {
79
+ return (0, exports.zipMin)(a, b).map(([v1, v2]) => v1 * v2);
80
+ }
81
+ function div(a, b) {
82
+ return (0, exports.zipMin)(a, b).map(([v1, v2]) => v1 / v2);
83
+ }
84
+ function scale(a, s) {
85
+ return a.map((v) => v * s);
86
+ }
87
+ const distance = (a, b) => (0, exports.magnitude)(sub(b, a));
88
+ exports.distance = distance;
89
+ const cosineDistance = (a, b) => {
90
+ const dp = (0, exports.dot)(a, b);
91
+ const magA = (0, exports.magnitude)(a);
92
+ const magB = (0, exports.magnitude)(b);
93
+ const result = dp / (magA * magB);
94
+ if (isNaN(result) || !isFinite(result))
95
+ return 0;
96
+ return result;
97
+ };
98
+ exports.cosineDistance = cosineDistance;
99
+ //# sourceMappingURL=array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../src/common/array.ts"],"names":[],"mappings":";;;AAqEA,8BAgBC;AAgDD,kBAEC;AAKD,kBAEC;AAKD,kBAEC;AAKD,kBAEC;AAKD,sBAEC;AAjKM,MAAM,KAAK,GAAG,CAAC,CAAS,EAAY,EAAE,CAC3C,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,EAAE;IACJ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAH/B,QAAA,KAAK,SAG0B;AAErC,MAAM,MAAM,GAAG,CAAO,CAAM,EAAE,CAAM,EAAqB,EAAE,CAChE,IAAA,aAAK,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAc,EAAE;IACxD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IAChB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IAChB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,CAAC,CAAC,CAAC;AALQ,QAAA,MAAM,UAKd;AAEE,MAAM,MAAM,GAAG,CACpB,CAAM,EACN,CAAM,EACqC,EAAE,CAC7C,IAAA,aAAK,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CACrC,CAAC,CAAC,EAAsC,EAAE;IACxC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACf,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACf,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,CAAC,CACF,CAAC;AAVS,QAAA,MAAM,UAUf;AA6CJ,SAAgB,SAAS,CACvB,GAAQ,EACR,SAAiB,EACjB,OAAW;IAEX,MAAM,MAAM,GAAe,EAAE,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;QAC1C,IAAI,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAI,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,MAAM,GAAG,GAAG,CAAC,GAAa,EAAU,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAAhE,QAAA,GAAG,OAA6D;AAEtE,MAAM,OAAO,GAAG,CAAC,GAAa,EAAU,EAAE,CAC/C,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,WAAG,EAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;AADjC,QAAA,OAAO,WAC0B;AAEvC,MAAM,SAAS,GAAG,CAAC,GAAa,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAA1D,QAAA,SAAS,aAAiD;AAEhE,MAAM,WAAW,GAAG,CAAuB,GAAQ,EAAO,EAAE;IACjE,MAAM,GAAG,GAAG,IAAA,iBAAS,EAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,mBAAmB;QAAE,OAAO,CAAC,GAAG,GAAG,CAAQ,CAAC;IAChE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAQ,CAAC;AACxC,CAAC,CAAC;AAJW,QAAA,WAAW,eAItB;AAEF,wBAAwB;AACjB,MAAM,IAAI,GAAG,CAAuB,GAAQ,EAAO,EAAE,CAAC,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;AAAjE,QAAA,IAAI,QAA6D;AAEvE,MAAM,GAAG,GAAG,CAAC,CAAW,EAAE,CAAW,EAAU,EAAE,CACtD,IAAA,WAAG,EAAC,IAAA,cAAM,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AADlC,QAAA,GAAG,OAC+B;AAExC,MAAM,KAAK,GAAG,CACnB,CAA4C,EAC5C,CAA4C,EACZ,EAAE;IAClC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QACvB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAE5D,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IACjB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IACjB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IAEjB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IACjB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IACjB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IAEjB,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC5B,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC5B,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAE5B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC;AAtBW,QAAA,KAAK,SAsBhB;AAKF,SAAgB,GAAG,CAAC,CAAW,EAAE,CAAW;IAC1C,OAAO,IAAA,cAAM,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AACjD,CAAC;AAKD,SAAgB,GAAG,CAAC,CAAW,EAAE,CAAW;IAC1C,OAAO,IAAA,cAAM,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AACjD,CAAC;AAKD,SAAgB,GAAG,CAAC,CAAW,EAAE,CAAW;IAC1C,OAAO,IAAA,cAAM,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AACjD,CAAC;AAKD,SAAgB,GAAG,CAAC,CAAW,EAAE,CAAW;IAC1C,OAAO,IAAA,cAAM,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AACjD,CAAC;AAKD,SAAgB,KAAK,CAAC,CAAW,EAAE,CAAS;IAC1C,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,CAAC;AAEM,MAAM,QAAQ,GAAG,CAAC,CAAW,EAAE,CAAW,EAAU,EAAE,CAC3D,IAAA,iBAAS,EAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AADV,QAAA,QAAQ,YACE;AAEhB,MAAM,cAAc,GAAG,CAAC,CAAW,EAAE,CAAW,EAAU,EAAE;IACjE,MAAM,EAAE,GAAG,IAAA,WAAG,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrB,MAAM,IAAI,GAAG,IAAA,iBAAS,EAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,IAAA,iBAAS,EAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAPW,QAAA,cAAc,kBAOzB"}
@@ -0,0 +1,62 @@
1
+ import { V3 } from "./types";
2
+ export declare const COLOR_NAMES_TO_RGB: {
3
+ readonly red: readonly [1, 0, 0];
4
+ readonly green: readonly [0, 1, 0];
5
+ readonly blue: readonly [0, 0, 1];
6
+ readonly white: readonly [1, 1, 1];
7
+ readonly black: readonly [0, 0, 0];
8
+ readonly yellow: readonly [1, 1, 0];
9
+ readonly cyan: readonly [0, 1, 1];
10
+ readonly magenta: readonly [1, 0, 1];
11
+ readonly orange: readonly [1, 0.647, 0];
12
+ readonly purple: readonly [0.502, 0, 0.502];
13
+ readonly pink: readonly [1, 0.753, 0.796];
14
+ readonly lime: readonly [0, 1, 0];
15
+ readonly navy: readonly [0, 0, 0.502];
16
+ readonly teal: readonly [0, 0.502, 0.502];
17
+ readonly maroon: readonly [0.502, 0, 0];
18
+ readonly olive: readonly [0.502, 0.502, 0];
19
+ readonly silver: readonly [0.753, 0.753, 0.753];
20
+ readonly gray: readonly [0.502, 0.502, 0.502];
21
+ readonly grey: readonly [0.502, 0.502, 0.502];
22
+ readonly lightgray: readonly [0.827, 0.827, 0.827];
23
+ readonly lightgrey: readonly [0.827, 0.827, 0.827];
24
+ readonly darkgray: readonly [0.663, 0.663, 0.663];
25
+ readonly darkgrey: readonly [0.663, 0.663, 0.663];
26
+ readonly dimgray: readonly [0.412, 0.412, 0.412];
27
+ readonly dimgrey: readonly [0.412, 0.412, 0.412];
28
+ readonly lightblue: readonly [0.678, 0.847, 0.902];
29
+ readonly lightcyan: readonly [0.878, 1, 1];
30
+ readonly lightgreen: readonly [0.565, 0.933, 0.565];
31
+ readonly lightpink: readonly [1, 0.714, 0.757];
32
+ readonly lightyellow: readonly [1, 1, 0.878];
33
+ readonly lightsalmon: readonly [1, 0.627, 0.478];
34
+ readonly darkblue: readonly [0, 0, 0.545];
35
+ readonly darkgreen: readonly [0, 0.392, 0];
36
+ readonly darkred: readonly [0.545, 0, 0];
37
+ readonly darkcyan: readonly [0, 0.545, 0.545];
38
+ readonly darkmagenta: readonly [0.545, 0, 0.545];
39
+ readonly darkorange: readonly [1, 0.549, 0];
40
+ readonly darkviolet: readonly [0.58, 0, 0.827];
41
+ readonly darkturquoise: readonly [0, 0.808, 0.82];
42
+ readonly hotpink: readonly [1, 0.412, 0.706];
43
+ readonly deeppink: readonly [1, 0.078, 0.576];
44
+ readonly coral: readonly [1, 0.498, 0.314];
45
+ readonly salmon: readonly [0.98, 0.502, 0.447];
46
+ readonly tomato: readonly [1, 0.388, 0.278];
47
+ readonly turquoise: readonly [0.251, 0.878, 0.816];
48
+ readonly violet: readonly [0.933, 0.51, 0.933];
49
+ readonly indigo: readonly [0.294, 0, 0.51];
50
+ readonly gold: readonly [1, 0.843, 0];
51
+ readonly khaki: readonly [0.941, 0.902, 0.549];
52
+ readonly beige: readonly [0.961, 0.961, 0.863];
53
+ readonly ivory: readonly [1, 1, 0.941];
54
+ readonly lavender: readonly [0.902, 0.902, 0.98];
55
+ readonly chocolate: readonly [0.824, 0.412, 0.118];
56
+ readonly peru: readonly [0.804, 0.522, 0.247];
57
+ readonly sienna: readonly [0.627, 0.322, 0.176];
58
+ readonly brown: readonly [0.647, 0.165, 0.165];
59
+ readonly tan: readonly [0.824, 0.706, 0.549];
60
+ };
61
+ export declare const toRGB: (color: string) => V3;
62
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../../../src/common/colors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE7B,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0DrB,CAAC;AAEX,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,KAAG,EA8BrC,CAAC"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toRGB = exports.COLOR_NAMES_TO_RGB = void 0;
4
+ exports.COLOR_NAMES_TO_RGB = {
5
+ red: [1, 0, 0],
6
+ green: [0, 1, 0],
7
+ blue: [0, 0, 1],
8
+ white: [1, 1, 1],
9
+ black: [0, 0, 0],
10
+ yellow: [1, 1, 0],
11
+ cyan: [0, 1, 1],
12
+ magenta: [1, 0, 1],
13
+ orange: [1, 0.647, 0],
14
+ purple: [0.502, 0, 0.502],
15
+ pink: [1, 0.753, 0.796],
16
+ lime: [0, 1, 0],
17
+ navy: [0, 0, 0.502],
18
+ teal: [0, 0.502, 0.502],
19
+ maroon: [0.502, 0, 0],
20
+ olive: [0.502, 0.502, 0],
21
+ silver: [0.753, 0.753, 0.753],
22
+ gray: [0.502, 0.502, 0.502],
23
+ grey: [0.502, 0.502, 0.502],
24
+ lightgray: [0.827, 0.827, 0.827],
25
+ lightgrey: [0.827, 0.827, 0.827],
26
+ darkgray: [0.663, 0.663, 0.663],
27
+ darkgrey: [0.663, 0.663, 0.663],
28
+ dimgray: [0.412, 0.412, 0.412],
29
+ dimgrey: [0.412, 0.412, 0.412],
30
+ lightblue: [0.678, 0.847, 0.902],
31
+ lightcyan: [0.878, 1, 1],
32
+ lightgreen: [0.565, 0.933, 0.565],
33
+ lightpink: [1, 0.714, 0.757],
34
+ lightyellow: [1, 1, 0.878],
35
+ lightsalmon: [1, 0.627, 0.478],
36
+ darkblue: [0, 0, 0.545],
37
+ darkgreen: [0, 0.392, 0],
38
+ darkred: [0.545, 0, 0],
39
+ darkcyan: [0, 0.545, 0.545],
40
+ darkmagenta: [0.545, 0, 0.545],
41
+ darkorange: [1, 0.549, 0],
42
+ darkviolet: [0.58, 0, 0.827],
43
+ darkturquoise: [0, 0.808, 0.82],
44
+ hotpink: [1, 0.412, 0.706],
45
+ deeppink: [1, 0.078, 0.576],
46
+ coral: [1, 0.498, 0.314],
47
+ salmon: [0.98, 0.502, 0.447],
48
+ tomato: [1, 0.388, 0.278],
49
+ turquoise: [0.251, 0.878, 0.816],
50
+ violet: [0.933, 0.51, 0.933],
51
+ indigo: [0.294, 0, 0.51],
52
+ gold: [1, 0.843, 0],
53
+ khaki: [0.941, 0.902, 0.549],
54
+ beige: [0.961, 0.961, 0.863],
55
+ ivory: [1, 1, 0.941],
56
+ lavender: [0.902, 0.902, 0.98],
57
+ chocolate: [0.824, 0.412, 0.118],
58
+ peru: [0.804, 0.522, 0.247],
59
+ sienna: [0.627, 0.322, 0.176],
60
+ brown: [0.647, 0.165, 0.165],
61
+ tan: [0.824, 0.706, 0.549],
62
+ };
63
+ const toRGB = (color) => {
64
+ if (color in exports.COLOR_NAMES_TO_RGB) {
65
+ return exports.COLOR_NAMES_TO_RGB[color];
66
+ }
67
+ if (color.startsWith("#")) {
68
+ const hex = color.slice(1);
69
+ if (hex.length === 3) {
70
+ const r = parseInt(hex[0] + hex[0], 16) / 255;
71
+ const g = parseInt(hex[1] + hex[1], 16) / 255;
72
+ const b = parseInt(hex[2] + hex[2], 16) / 255;
73
+ return [r, g, b];
74
+ }
75
+ if (hex.length === 6) {
76
+ const r = parseInt(hex.slice(0, 2), 16) / 255;
77
+ const g = parseInt(hex.slice(2, 4), 16) / 255;
78
+ const b = parseInt(hex.slice(4, 6), 16) / 255;
79
+ return [r, g, b];
80
+ }
81
+ }
82
+ if (color.startsWith("rgba(") || color.startsWith("rgb(")) {
83
+ const inner = color.slice(color.indexOf("(") + 1, color.lastIndexOf(")"));
84
+ const parts = inner.split(",").map((s) => s.trim());
85
+ const r = parseInt(parts[0]) / 255;
86
+ const g = parseInt(parts[1]) / 255;
87
+ const b = parseInt(parts[2]) / 255;
88
+ return [r, g, b];
89
+ }
90
+ return [0, 0, 0];
91
+ };
92
+ exports.toRGB = toRGB;
93
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../../../src/common/colors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const toUint32: (x: number | BigInt) => number;
2
+ export declare const hashU32: (arr: number[]) => number;
3
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../../../src/common/hash.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,GAAG,MAAM,KAAG,MAU7C,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,EAAE,WA6BpC,CAAC"}