@oidoid/void 0.1.7 → 0.1.8

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 (168) hide show
  1. package/dist/public/index.js +1 -1
  2. package/dist/public/index.js.map +1 -1
  3. package/dist/public/{void-v0.1.7+20260106.c6b562a.html → void-v0.1.8+20260106.f2ce523.html} +2 -2
  4. package/dist/src/demo/ents/clock.test.d.ts +2 -0
  5. package/dist/src/demo/ents/clock.test.d.ts.map +1 -0
  6. package/dist/src/demo/ents/clock.test.js +24 -0
  7. package/dist/src/demo/ents/clock.test.js.map +1 -0
  8. package/dist/src/demo/tsconfig.json +3 -3
  9. package/dist/src/ents/cursor.test.d.ts +2 -0
  10. package/dist/src/ents/cursor.test.d.ts.map +1 -0
  11. package/dist/src/ents/cursor.test.js +92 -0
  12. package/dist/src/ents/cursor.test.js.map +1 -0
  13. package/dist/src/ents/ent-query.test.d.ts +11 -0
  14. package/dist/src/ents/ent-query.test.d.ts.map +1 -0
  15. package/dist/src/ents/ent-query.test.js +63 -0
  16. package/dist/src/ents/ent-query.test.js.map +1 -0
  17. package/dist/src/graphics/atlas-parser.test.d.ts +2 -0
  18. package/dist/src/graphics/atlas-parser.test.d.ts.map +1 -0
  19. package/dist/src/graphics/atlas-parser.test.js +100 -0
  20. package/dist/src/graphics/atlas-parser.test.js.map +1 -0
  21. package/dist/src/graphics/cam.test.d.ts +2 -0
  22. package/dist/src/graphics/cam.test.d.ts.map +1 -0
  23. package/dist/src/graphics/cam.test.js +456 -0
  24. package/dist/src/graphics/cam.test.js.map +1 -0
  25. package/dist/src/graphics/layer.test.d.ts +2 -0
  26. package/dist/src/graphics/layer.test.d.ts.map +1 -0
  27. package/dist/src/graphics/layer.test.js +23 -0
  28. package/dist/src/graphics/layer.test.js.map +1 -0
  29. package/dist/src/graphics/renderer.test.d.ts +2 -0
  30. package/dist/src/graphics/renderer.test.d.ts.map +1 -0
  31. package/dist/src/graphics/renderer.test.js +92 -0
  32. package/dist/src/graphics/renderer.test.js.map +1 -0
  33. package/dist/src/graphics/sprite.test.d.ts +2 -0
  34. package/dist/src/graphics/sprite.test.d.ts.map +1 -0
  35. package/dist/src/graphics/sprite.test.js +582 -0
  36. package/dist/src/graphics/sprite.test.js.map +1 -0
  37. package/dist/src/index.d.ts.map +1 -1
  38. package/dist/src/index.js +0 -1
  39. package/dist/src/index.js.map +1 -1
  40. package/dist/src/input/context-menu.test.d.ts +2 -0
  41. package/dist/src/input/context-menu.test.d.ts.map +1 -0
  42. package/dist/src/input/context-menu.test.js +111 -0
  43. package/dist/src/input/context-menu.test.js.map +1 -0
  44. package/dist/src/input/gamepad.test.d.ts +2 -0
  45. package/dist/src/input/gamepad.test.d.ts.map +1 -0
  46. package/dist/src/input/gamepad.test.js +172 -0
  47. package/dist/src/input/gamepad.test.js.map +1 -0
  48. package/dist/src/input/input.test.d.ts +2 -0
  49. package/dist/src/input/input.test.d.ts.map +1 -0
  50. package/dist/src/input/input.test.js +1146 -0
  51. package/dist/src/input/input.test.js.map +1 -0
  52. package/dist/src/input/keyboard.test.d.ts +2 -0
  53. package/dist/src/input/keyboard.test.d.ts.map +1 -0
  54. package/dist/src/input/keyboard.test.js +159 -0
  55. package/dist/src/input/keyboard.test.js.map +1 -0
  56. package/dist/src/input/pointer.test.d.ts +2 -0
  57. package/dist/src/input/pointer.test.d.ts.map +1 -0
  58. package/dist/src/input/pointer.test.js +339 -0
  59. package/dist/src/input/pointer.test.js.map +1 -0
  60. package/dist/src/input/wheel.test.d.ts +2 -0
  61. package/dist/src/input/wheel.test.d.ts.map +1 -0
  62. package/dist/src/input/wheel.test.js +92 -0
  63. package/dist/src/input/wheel.test.js.map +1 -0
  64. package/dist/src/level/level-parser.test.d.ts +20 -0
  65. package/dist/src/level/level-parser.test.d.ts.map +1 -0
  66. package/dist/src/level/level-parser.test.js +340 -0
  67. package/dist/src/level/level-parser.test.js.map +1 -0
  68. package/dist/src/looper.test.d.ts +2 -0
  69. package/dist/src/looper.test.d.ts.map +1 -0
  70. package/dist/src/looper.test.js +128 -0
  71. package/dist/src/looper.test.js.map +1 -0
  72. package/dist/src/mem/pool.test.d.ts +2 -0
  73. package/dist/src/mem/pool.test.d.ts.map +1 -0
  74. package/dist/src/mem/pool.test.js +120 -0
  75. package/dist/src/mem/pool.test.js.map +1 -0
  76. package/dist/src/random/random.test.d.ts +2 -0
  77. package/dist/src/random/random.test.d.ts.map +1 -0
  78. package/dist/src/random/random.test.js +36 -0
  79. package/dist/src/random/random.test.js.map +1 -0
  80. package/dist/src/storage/local-storage.test.d.ts +2 -0
  81. package/dist/src/storage/local-storage.test.d.ts.map +1 -0
  82. package/dist/src/storage/local-storage.test.js +105 -0
  83. package/dist/src/storage/local-storage.test.js.map +1 -0
  84. package/dist/src/test/assert.d.ts +5 -0
  85. package/dist/src/test/assert.d.ts.map +1 -0
  86. package/dist/src/test/assert.js +6 -0
  87. package/dist/src/test/assert.js.map +1 -0
  88. package/dist/src/test/device-pixel-ratio-mock.d.ts +6 -0
  89. package/dist/src/test/device-pixel-ratio-mock.d.ts.map +1 -0
  90. package/dist/src/test/device-pixel-ratio-mock.js +10 -0
  91. package/dist/src/test/device-pixel-ratio-mock.js.map +1 -0
  92. package/dist/src/test/index.d.ts +5 -0
  93. package/dist/src/test/index.d.ts.map +1 -0
  94. package/dist/src/test/index.js +5 -0
  95. package/dist/src/test/index.js.map +1 -0
  96. package/dist/src/test/navigator-gamepads-mock.d.ts +7 -0
  97. package/dist/src/test/navigator-gamepads-mock.d.ts.map +1 -0
  98. package/dist/src/test/navigator-gamepads-mock.js +14 -0
  99. package/dist/src/test/navigator-gamepads-mock.js.map +1 -0
  100. package/dist/src/test/secure-context-mock.d.ts +6 -0
  101. package/dist/src/test/secure-context-mock.d.ts.map +1 -0
  102. package/dist/src/test/secure-context-mock.js +10 -0
  103. package/dist/src/test/secure-context-mock.js.map +1 -0
  104. package/dist/src/test/test-element.d.ts +2 -0
  105. package/dist/src/test/test-element.d.ts.map +1 -0
  106. package/dist/src/test/test-element.js +8 -0
  107. package/dist/src/test/test-element.js.map +1 -0
  108. package/dist/src/test/test-event.d.ts +17 -0
  109. package/dist/src/test/test-event.d.ts.map +1 -0
  110. package/dist/src/test/test-event.js +26 -0
  111. package/dist/src/test/test-event.js.map +1 -0
  112. package/dist/src/test/tsconfig.json +30 -0
  113. package/dist/src/text/text-layout.test.d.ts +2 -0
  114. package/dist/src/text/text-layout.test.d.ts.map +1 -0
  115. package/dist/src/text/text-layout.test.js +717 -0
  116. package/dist/src/text/text-layout.test.js.map +1 -0
  117. package/dist/src/tsconfig.json +3 -3
  118. package/dist/src/types/geo.test.d.ts +2 -0
  119. package/dist/src/types/geo.test.d.ts.map +1 -0
  120. package/dist/src/types/geo.test.js +657 -0
  121. package/dist/src/types/geo.test.js.map +1 -0
  122. package/dist/src/types/time.test.d.ts +2 -0
  123. package/dist/src/types/time.test.d.ts.map +1 -0
  124. package/dist/src/types/time.test.js +27 -0
  125. package/dist/src/types/time.test.js.map +1 -0
  126. package/dist/src/utils/async-util.test.d.ts +2 -0
  127. package/dist/src/utils/async-util.test.d.ts.map +1 -0
  128. package/dist/src/utils/async-util.test.js +55 -0
  129. package/dist/src/utils/async-util.test.js.map +1 -0
  130. package/dist/src/utils/color-util.test.d.ts +2 -0
  131. package/dist/src/utils/color-util.test.d.ts.map +1 -0
  132. package/dist/src/utils/color-util.test.js +20 -0
  133. package/dist/src/utils/color-util.test.js.map +1 -0
  134. package/dist/src/utils/debug.test.d.ts +2 -0
  135. package/dist/src/utils/debug.test.d.ts.map +1 -0
  136. package/dist/src/utils/debug.test.js +61 -0
  137. package/dist/src/utils/debug.test.js.map +1 -0
  138. package/dist/src/utils/delay-interval.test.d.ts +2 -0
  139. package/dist/src/utils/delay-interval.test.d.ts.map +1 -0
  140. package/dist/src/utils/delay-interval.test.js +91 -0
  141. package/dist/src/utils/delay-interval.test.js.map +1 -0
  142. package/dist/src/utils/math.test.d.ts +2 -0
  143. package/dist/src/utils/math.test.d.ts.map +1 -0
  144. package/dist/src/utils/math.test.js +10 -0
  145. package/dist/src/utils/math.test.js.map +1 -0
  146. package/dist/src/utils/str-util.test.d.ts +2 -0
  147. package/dist/src/utils/str-util.test.d.ts.map +1 -0
  148. package/dist/src/utils/str-util.test.js +13 -0
  149. package/dist/src/utils/str-util.test.js.map +1 -0
  150. package/dist/tools/atlas-pack/atlas-json-parser.test.d.ts +2 -0
  151. package/dist/tools/atlas-pack/atlas-json-parser.test.d.ts.map +1 -0
  152. package/dist/tools/atlas-pack/atlas-json-parser.test.js +2109 -0
  153. package/dist/tools/atlas-pack/atlas-json-parser.test.js.map +1 -0
  154. package/dist/tools/atlas-pack/atlas.test.aseprite.json +4499 -0
  155. package/dist/tools/bundle/bundle.js +1 -1
  156. package/dist/tools/types/config-file.test.d.ts +2 -0
  157. package/dist/tools/types/config-file.test.d.ts.map +1 -0
  158. package/dist/tools/types/config-file.test.js +68 -0
  159. package/dist/tools/types/config-file.test.js.map +1 -0
  160. package/dist/tools/types/config.test.d.ts +2 -0
  161. package/dist/tools/types/config.test.d.ts.map +1 -0
  162. package/dist/tools/types/config.test.js +125 -0
  163. package/dist/tools/types/config.test.js.map +1 -0
  164. package/dist/tools/utils/argv.test.d.ts +9 -0
  165. package/dist/tools/utils/argv.test.d.ts.map +1 -0
  166. package/dist/tools/utils/argv.test.js +42 -0
  167. package/dist/tools/utils/argv.test.js.map +1 -0
  168. package/package.json +7 -3
@@ -0,0 +1,456 @@
1
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
2
+ if (value !== null && value !== void 0) {
3
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
+ var dispose, inner;
5
+ if (async) {
6
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
+ dispose = value[Symbol.asyncDispose];
8
+ }
9
+ if (dispose === void 0) {
10
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
+ dispose = value[Symbol.dispose];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
16
+ env.stack.push({ value: value, dispose: dispose, async: async });
17
+ }
18
+ else if (async) {
19
+ env.stack.push({ async: true });
20
+ }
21
+ return value;
22
+ };
23
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
24
+ return function (env) {
25
+ function fail(e) {
26
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
27
+ env.hasError = true;
28
+ }
29
+ var r, s = 0;
30
+ function next() {
31
+ while (r = env.stack.pop()) {
32
+ try {
33
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
34
+ if (r.dispose) {
35
+ var result = r.dispose.call(r.value);
36
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
37
+ }
38
+ else s |= 1;
39
+ }
40
+ catch (e) {
41
+ fail(e);
42
+ }
43
+ }
44
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
45
+ if (env.hasError) throw env.error;
46
+ }
47
+ return next();
48
+ };
49
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
50
+ var e = new Error(message);
51
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
+ });
53
+ import { test } from 'node:test';
54
+ import { assert } from "../test/assert.js";
55
+ import { DevicePixelRatioMock } from "../test/device-pixel-ratio-mock.js";
56
+ import { Cam } from "./cam.js";
57
+ import { Layer } from "./layer.js";
58
+ test('update() in int mode sizes canvas with devicePixelRatio and minWH', () => {
59
+ const env_1 = { stack: [], error: void 0, hasError: false };
60
+ try {
61
+ const dpr = __addDisposableResource(env_1, new DevicePixelRatioMock(), false);
62
+ dpr.ratio = 5;
63
+ const cam = new Cam();
64
+ cam.minWH = { w: 400, h: 128 };
65
+ const canvas = TestCanvas(162.1999969482422, 88.80000305175781);
66
+ cam.update(canvas);
67
+ assert(canvas.width, 406);
68
+ assert(canvas.height, 223);
69
+ assert(canvas.style.width, '162.4px');
70
+ assert(canvas.style.height, '89.2px');
71
+ assert(cam.scale, 2);
72
+ assert(cam.w, 406);
73
+ assert(cam.h, 223);
74
+ }
75
+ catch (e_1) {
76
+ env_1.error = e_1;
77
+ env_1.hasError = true;
78
+ }
79
+ finally {
80
+ __disposeResources(env_1);
81
+ }
82
+ });
83
+ test('clientToXY() and clientToXYLocal()', () => {
84
+ const env_2 = { stack: [], error: void 0, hasError: false };
85
+ try {
86
+ const dpr = __addDisposableResource(env_2, new DevicePixelRatioMock(), false);
87
+ dpr.ratio = 5;
88
+ const cam = new Cam();
89
+ cam.minWH = { w: 400, h: 128 };
90
+ const canvas = TestCanvas(162.1999969482422, 88.80000305175781);
91
+ cam.update(canvas);
92
+ const xyClient = { x: 137.40000915527344, y: 48.400001525878906 };
93
+ const expectedLocal = { x: 343.9235805586467, y: 121.54504469983058 };
94
+ // at origin: both world and local are the same.
95
+ assert(cam.clientToXYLocal(xyClient), expectedLocal);
96
+ assert(cam.clientToXY(xyClient), expectedLocal);
97
+ // with cam offset: world position shifts, local remains unchanged.
98
+ cam.x = 10;
99
+ cam.y = 100;
100
+ assert(cam.clientToXYLocal(xyClient), expectedLocal);
101
+ assert(cam.clientToXY(xyClient), {
102
+ x: expectedLocal.x + cam.x,
103
+ y: expectedLocal.y + cam.y
104
+ });
105
+ }
106
+ catch (e_2) {
107
+ env_2.error = e_2;
108
+ env_2.hasError = true;
109
+ }
110
+ finally {
111
+ __disposeResources(env_2);
112
+ }
113
+ });
114
+ test('toString()', () => {
115
+ const env_3 = { stack: [], error: void 0, hasError: false };
116
+ try {
117
+ const dpr = __addDisposableResource(env_3, new DevicePixelRatioMock(), false);
118
+ dpr.ratio = 1;
119
+ const cam = new Cam();
120
+ const canvas = TestCanvas(3, 4);
121
+ cam.x = 1;
122
+ cam.y = 2;
123
+ cam.update(canvas);
124
+ assert(cam.toString(), `Cam{(1 2) 3×4}`);
125
+ }
126
+ catch (e_3) {
127
+ env_3.error = e_3;
128
+ env_3.hasError = true;
129
+ }
130
+ finally {
131
+ __disposeResources(env_3);
132
+ }
133
+ });
134
+ test('invalid is true initially, after first update(), but not after postupdate()', () => {
135
+ const cam = new Cam();
136
+ const canvas = TestCanvas(200, 100);
137
+ assert(cam.invalid, true);
138
+ cam.update(canvas);
139
+ assert(cam.invalid, true);
140
+ cam.postupdate();
141
+ assert(cam.invalid, false);
142
+ });
143
+ test('x/y invalidation', () => {
144
+ const cam = new Cam();
145
+ const canvas = TestCanvas(200, 100);
146
+ cam.update(canvas);
147
+ cam.postupdate();
148
+ cam.x = 0;
149
+ assert(cam.invalid, false);
150
+ cam.x = 5;
151
+ assert(cam.invalid, true);
152
+ cam.update(canvas);
153
+ cam.postupdate();
154
+ cam.y = 0;
155
+ assert(cam.invalid, false);
156
+ cam.y = 5;
157
+ assert(cam.invalid, true);
158
+ });
159
+ test('minWH invalidation)', () => {
160
+ const cam = new Cam();
161
+ cam.minWH = { w: 100, h: 50 };
162
+ const canvas = TestCanvas(200, 100);
163
+ cam.update(canvas);
164
+ cam.postupdate();
165
+ cam.minWH = { w: 100, h: 50 };
166
+ assert(cam.invalid, false);
167
+ cam.minWH = { w: 200, h: 50 };
168
+ assert(cam.invalid, true);
169
+ cam.update(canvas);
170
+ cam.postupdate();
171
+ cam.minWH = { w: 200, h: 100 };
172
+ assert(cam.invalid, true);
173
+ });
174
+ test('mode invalidation)', () => {
175
+ const cam = new Cam();
176
+ const canvas = TestCanvas(200, 100);
177
+ cam.update(canvas);
178
+ cam.postupdate();
179
+ cam.mode = 'Int';
180
+ assert(cam.invalid, false);
181
+ cam.mode = 'Float';
182
+ assert(cam.invalid, true);
183
+ });
184
+ test('devicePixelRatio change invalidates on update', () => {
185
+ const env_4 = { stack: [], error: void 0, hasError: false };
186
+ try {
187
+ const cam = new Cam();
188
+ const canvas = TestCanvas(200, 100);
189
+ cam.update(canvas);
190
+ cam.postupdate();
191
+ const dpr = __addDisposableResource(env_4, new DevicePixelRatioMock(), false);
192
+ dpr.ratio = 2;
193
+ cam.update(canvas);
194
+ assert(cam.invalid, true);
195
+ }
196
+ catch (e_4) {
197
+ env_4.error = e_4;
198
+ env_4.hasError = true;
199
+ }
200
+ finally {
201
+ __disposeResources(env_4);
202
+ }
203
+ });
204
+ test('center() places cam to center the given xy', () => {
205
+ const env_5 = { stack: [], error: void 0, hasError: false };
206
+ try {
207
+ const dpr = __addDisposableResource(env_5, new DevicePixelRatioMock(), false);
208
+ dpr.ratio = 1;
209
+ const cam = new Cam();
210
+ cam.minWH = { w: 100, h: 50 };
211
+ const canvas = TestCanvas(200, 100);
212
+ cam.update(canvas);
213
+ cam.center({ x: 63, y: 85 });
214
+ assert(cam.x, 13); // floor(63 - 100/2)
215
+ assert(cam.y, 60); // floor(85 - 50/2)
216
+ }
217
+ catch (e_5) {
218
+ env_5.error = e_5;
219
+ env_5.hasError = true;
220
+ }
221
+ finally {
222
+ __disposeResources(env_5);
223
+ }
224
+ });
225
+ test('follow() NW pivot (world layer)', () => {
226
+ const cam = new Cam();
227
+ cam.minWH = { w: 100, h: 50 };
228
+ const canvas = TestCanvas(200, 100);
229
+ cam.update(canvas);
230
+ cam.postupdate();
231
+ cam.x = 10;
232
+ cam.y = 20;
233
+ const box = cam.follow({ w: 10, h: 10 }, Layer.A, 'NW');
234
+ assert(box, { x: 10, y: 20, w: 10, h: 10 });
235
+ });
236
+ test('follow() SE pivot (world layer)', () => {
237
+ const env_6 = { stack: [], error: void 0, hasError: false };
238
+ try {
239
+ const dpr = __addDisposableResource(env_6, new DevicePixelRatioMock(), false);
240
+ dpr.ratio = 1;
241
+ const cam = new Cam();
242
+ cam.minWH = { w: 100, h: 50 };
243
+ const canvas = TestCanvas(200, 100);
244
+ cam.update(canvas);
245
+ cam.postupdate();
246
+ cam.x = 10;
247
+ cam.y = 20;
248
+ const box = cam.follow({ w: 10, h: 10 }, Layer.A, 'SE');
249
+ assert(box, { x: 100, y: 60, w: 10, h: 10 });
250
+ }
251
+ catch (e_6) {
252
+ env_6.error = e_6;
253
+ env_6.hasError = true;
254
+ }
255
+ finally {
256
+ __disposeResources(env_6);
257
+ }
258
+ });
259
+ test('follow() Origin pivot with modulo snapping', () => {
260
+ const env_7 = { stack: [], error: void 0, hasError: false };
261
+ try {
262
+ const dpr = __addDisposableResource(env_7, new DevicePixelRatioMock(), false);
263
+ dpr.ratio = 1;
264
+ const cam = new Cam();
265
+ cam.minWH = { w: 100, h: 50 };
266
+ const canvas = TestCanvas(200, 100);
267
+ cam.update(canvas);
268
+ cam.postupdate();
269
+ cam.x = 10;
270
+ cam.y = 20;
271
+ const box = cam.follow({ w: 10, h: 10 }, Layer.A, 'Center', {
272
+ modulo: { x: 16, y: 8 }
273
+ });
274
+ assert(box, { x: 48, y: 40, w: 10, h: 10 });
275
+ }
276
+ catch (e_7) {
277
+ env_7.error = e_7;
278
+ env_7.hasError = true;
279
+ }
280
+ finally {
281
+ __disposeResources(env_7);
282
+ }
283
+ });
284
+ test('follow() fill XY with margins', () => {
285
+ const env_8 = { stack: [], error: void 0, hasError: false };
286
+ try {
287
+ const dpr = __addDisposableResource(env_8, new DevicePixelRatioMock(), false);
288
+ dpr.ratio = 1;
289
+ const cam = new Cam();
290
+ cam.minWH = { w: 100, h: 50 };
291
+ const canvas = TestCanvas(200, 100);
292
+ cam.update(canvas);
293
+ cam.postupdate();
294
+ cam.x = 10;
295
+ cam.y = 20;
296
+ const box = cam.follow({ w: 10, h: 10 }, Layer.A, 'NW', {
297
+ fill: 'XY',
298
+ margin: { n: 2, s: 2, w: 3, e: 3 }
299
+ });
300
+ assert(box, { x: 13, y: 22, w: 94, h: 46 });
301
+ }
302
+ catch (e_8) {
303
+ env_8.error = e_8;
304
+ env_8.hasError = true;
305
+ }
306
+ finally {
307
+ __disposeResources(env_8);
308
+ }
309
+ });
310
+ test('follow() UI layer ignores cam offset', () => {
311
+ const env_9 = { stack: [], error: void 0, hasError: false };
312
+ try {
313
+ const dpr = __addDisposableResource(env_9, new DevicePixelRatioMock(), false);
314
+ dpr.ratio = 1;
315
+ const cam = new Cam();
316
+ cam.minWH = { w: 100, h: 50 };
317
+ const canvas = TestCanvas(200, 100);
318
+ cam.update(canvas);
319
+ cam.postupdate();
320
+ cam.x = 10;
321
+ cam.y = 20;
322
+ const box = cam.follow({ w: 10, h: 10 }, Layer.UIA, 'SE');
323
+ assert(box, { x: 90, y: 40, w: 10, h: 10 });
324
+ }
325
+ catch (e_9) {
326
+ env_9.error = e_9;
327
+ env_9.hasError = true;
328
+ }
329
+ finally {
330
+ __disposeResources(env_9);
331
+ }
332
+ });
333
+ test('isVisible() cases', () => {
334
+ const env_10 = { stack: [], error: void 0, hasError: false };
335
+ try {
336
+ const dpr = __addDisposableResource(env_10, new DevicePixelRatioMock(), false);
337
+ dpr.ratio = 1;
338
+ const cam = new Cam();
339
+ cam.minWH = { w: 100, h: 50 };
340
+ const canvas = TestCanvas(200, 100);
341
+ cam.update(canvas);
342
+ cam.postupdate();
343
+ cam.x = 10;
344
+ cam.y = 20;
345
+ // outside to the left (touching edge is not visible).
346
+ assert(cam.isVisible({ x: 9, y: 20, w: 1, h: 1 }), false);
347
+ // point inside (defaults to 1x1).
348
+ assert(cam.isVisible({ x: 10, y: 20 }), true);
349
+ // outside to the right.
350
+ assert(cam.isVisible({ x: 110, y: 20, w: 1, h: 1 }), false);
351
+ // partial overlap.
352
+ assert(cam.isVisible({ x: 5, y: 0, w: 10, h: 30 }), true);
353
+ }
354
+ catch (e_10) {
355
+ env_10.error = e_10;
356
+ env_10.hasError = true;
357
+ }
358
+ finally {
359
+ __disposeResources(env_10);
360
+ }
361
+ });
362
+ test('portrait()', () => {
363
+ const env_11 = { stack: [], error: void 0, hasError: false };
364
+ try {
365
+ const dpr = __addDisposableResource(env_11, new DevicePixelRatioMock(), false);
366
+ dpr.ratio = 1;
367
+ const cam = new Cam();
368
+ const canvas = TestCanvas(100, 200);
369
+ cam.update(canvas);
370
+ assert(cam.portrait, true);
371
+ canvas.parentElement.clientWidth = 300;
372
+ cam.update(canvas);
373
+ assert(cam.portrait, false);
374
+ }
375
+ catch (e_11) {
376
+ env_11.error = e_11;
377
+ env_11.hasError = true;
378
+ }
379
+ finally {
380
+ __disposeResources(env_11);
381
+ }
382
+ });
383
+ test('zoom out int mode affects scale and dims', () => {
384
+ const env_12 = { stack: [], error: void 0, hasError: false };
385
+ try {
386
+ const dpr = __addDisposableResource(env_12, new DevicePixelRatioMock(), false);
387
+ dpr.ratio = 2;
388
+ const cam = new Cam();
389
+ cam.minWH = { w: 100, h: 50 };
390
+ cam.zoomOut = 1.2; // truncates to 1 in int mode.
391
+ const canvas = TestCanvas(200, 100);
392
+ cam.update(canvas);
393
+ assert(cam.scale, 3);
394
+ assert(cam.w, 134);
395
+ assert(cam.h, 67);
396
+ }
397
+ catch (e_12) {
398
+ env_12.error = e_12;
399
+ env_12.hasError = true;
400
+ }
401
+ finally {
402
+ __disposeResources(env_12);
403
+ }
404
+ });
405
+ test('negative zoom in int mode is clamped to 0', () => {
406
+ const env_13 = { stack: [], error: void 0, hasError: false };
407
+ try {
408
+ const dpr = __addDisposableResource(env_13, new DevicePixelRatioMock(), false);
409
+ dpr.ratio = 2;
410
+ const cam = new Cam();
411
+ cam.minWH = { w: 100, h: 50 };
412
+ const canvas = TestCanvas(200, 100);
413
+ cam.zoomOut = -10;
414
+ cam.update(canvas);
415
+ assert(cam.scale, 4);
416
+ }
417
+ catch (e_13) {
418
+ env_13.error = e_13;
419
+ env_13.hasError = true;
420
+ }
421
+ finally {
422
+ __disposeResources(env_13);
423
+ }
424
+ });
425
+ test('zoom out in float mode subtracts fractionally', () => {
426
+ const env_14 = { stack: [], error: void 0, hasError: false };
427
+ try {
428
+ const dpr = __addDisposableResource(env_14, new DevicePixelRatioMock(), false);
429
+ dpr.ratio = 2;
430
+ const cam = new Cam();
431
+ cam.minWH = { w: 100, h: 50 };
432
+ cam.mode = 'Float';
433
+ cam.zoomOut = 1.2;
434
+ const canvas = TestCanvas(200, 100);
435
+ cam.update(canvas);
436
+ assert(Math.abs(cam.scale - 2.8) < 1e-12, true);
437
+ assert(cam.w, 143);
438
+ assert(cam.h, 72);
439
+ }
440
+ catch (e_14) {
441
+ env_14.error = e_14;
442
+ env_14.hasError = true;
443
+ }
444
+ finally {
445
+ __disposeResources(env_14);
446
+ }
447
+ });
448
+ function TestCanvas(clientWidth, clientHeight) {
449
+ return {
450
+ width: 0,
451
+ height: 0,
452
+ style: { width: '', height: '' },
453
+ parentElement: { clientWidth, clientHeight }
454
+ };
455
+ }
456
+ //# sourceMappingURL=cam.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cam.test.js","sourceRoot":"","sources":["../../../src/graphics/cam.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=layer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layer.test.d.ts","sourceRoot":"","sources":["../../../src/graphics/layer.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import { describe, test } from 'node:test';
2
+ import { assert } from "../test/assert.js";
3
+ import { isUILayer, Layer, layerOffset } from "./layer.js";
4
+ describe('layerOffset()', () => {
5
+ test('clamp Bottom', () => {
6
+ assert(layerOffset(Layer.Bottom, -1), Layer.Bottom);
7
+ });
8
+ test('clamp Top', () => assert(layerOffset(Layer.Top, 1), Layer.Top));
9
+ test('offset', () => {
10
+ assert(layerOffset(Layer.A, +1), Layer.B);
11
+ assert(layerOffset(Layer.B, -1), Layer.A);
12
+ assert(layerOffset(Layer.UIB, -2), Layer.G);
13
+ });
14
+ });
15
+ test('isUILayer()', () => {
16
+ assert(isUILayer(Layer.Bottom), false);
17
+ assert(isUILayer(Layer.A), false);
18
+ assert(isUILayer(Layer.G), false);
19
+ assert(isUILayer(Layer.UIA), true);
20
+ assert(isUILayer(Layer.UIG), true);
21
+ assert(isUILayer(Layer.Top), true);
22
+ });
23
+ //# sourceMappingURL=layer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layer.test.js","sourceRoot":"","sources":["../../../src/graphics/layer.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAC,MAAM,WAAW,CAAA;AACxC,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAC,SAAS,EAAE,KAAK,EAAE,WAAW,EAAC,MAAM,YAAY,CAAA;AAExD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE;QACxB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IAErE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE;IACvB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAA;IACtC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACjC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IAEjC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;IAClC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;IAClC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;AACpC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=renderer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.test.d.ts","sourceRoot":"","sources":["../../../src/graphics/renderer.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,92 @@
1
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
2
+ if (value !== null && value !== void 0) {
3
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
+ var dispose, inner;
5
+ if (async) {
6
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
+ dispose = value[Symbol.asyncDispose];
8
+ }
9
+ if (dispose === void 0) {
10
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
+ dispose = value[Symbol.dispose];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
16
+ env.stack.push({ value: value, dispose: dispose, async: async });
17
+ }
18
+ else if (async) {
19
+ env.stack.push({ async: true });
20
+ }
21
+ return value;
22
+ };
23
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
24
+ return function (env) {
25
+ function fail(e) {
26
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
27
+ env.hasError = true;
28
+ }
29
+ var r, s = 0;
30
+ function next() {
31
+ while (r = env.stack.pop()) {
32
+ try {
33
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
34
+ if (r.dispose) {
35
+ var result = r.dispose.call(r.value);
36
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
37
+ }
38
+ else s |= 1;
39
+ }
40
+ catch (e) {
41
+ fail(e);
42
+ }
43
+ }
44
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
45
+ if (env.hasError) throw env.error;
46
+ }
47
+ return next();
48
+ };
49
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
50
+ var e = new Error(message);
51
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
+ });
53
+ import { test } from 'node:test';
54
+ import { assert } from "../test/assert.js";
55
+ import { TestEvent } from "../test/test-event.js";
56
+ import { Renderer } from "./renderer.js";
57
+ test('renderer', async (ctx) => {
58
+ const env_1 = { stack: [], error: void 0, hasError: false };
59
+ try {
60
+ const canvas = new EventTarget();
61
+ const renderer = __addDisposableResource(env_1, TestRenderer(canvas), false);
62
+ await ctx.test('no context before loading', () => assert(renderer.hasContext, false));
63
+ await ctx.test('context after loading', () => {
64
+ renderer.load({});
65
+ assert(renderer.hasContext, true);
66
+ });
67
+ await ctx.test('context lost', () => {
68
+ canvas.dispatchEvent(TestEvent('webglcontextlost'));
69
+ assert(renderer.hasContext, false);
70
+ });
71
+ await ctx.test('context restored', () => {
72
+ canvas.dispatchEvent(TestEvent('webglcontextrestored'));
73
+ assert(renderer.hasContext, true);
74
+ });
75
+ }
76
+ catch (e_1) {
77
+ env_1.error = e_1;
78
+ env_1.hasError = true;
79
+ }
80
+ finally {
81
+ __disposeResources(env_1);
82
+ }
83
+ });
84
+ function TestRenderer(canvas) {
85
+ const renderer = new Renderer({ anim: {}, celXYWH: [], tags: [] }, canvas, {
86
+ age: 0
87
+ });
88
+ renderer._Context = () => ({});
89
+ renderer.register('add');
90
+ return renderer;
91
+ }
92
+ //# sourceMappingURL=renderer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.test.js","sourceRoot":"","sources":["../../../src/graphics/renderer.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAC9B,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAe,QAAQ,EAAC,MAAM,eAAe,CAAA;AAEpD,IAAI,CAAC,UAAU,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;;;QAC3B,MAAM,MAAM,GAAG,IAAI,WAAW,EAAuB,CAAA;QACrD,MAAM,QAAQ,kCAAG,YAAY,CAAC,MAAM,CAAC,QAAA,CAAA;QAErC,MAAM,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAC/C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CACnC,CAAA;QAED,MAAM,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC3C,QAAQ,CAAC,IAAI,CAAC,EAAsB,CAAC,CAAA;YACrC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;QAEF,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE;YAClC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAA;YACnD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;QAEF,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAA;YACvD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;;;;;;;;;CACH,CAAC,CAAA;AAEF,SAAS,YAAY,CAAC,MAAyB;IAC7C,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAC,EAAE,MAAM,EAAE;QACvE,GAAG,EAAE,CAAC;KACP,CAAC,CAAA;IACF,QAAQ,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,CAAY,CAAA;IACzC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACxB,OAAO,QAAQ,CAAA;AACjB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sprite.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprite.test.d.ts","sourceRoot":"","sources":["../../../src/graphics/sprite.test.ts"],"names":[],"mappings":""}