wyreframe 0.1.0 → 0.1.5

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 (58) hide show
  1. package/LICENSE +692 -0
  2. package/README.md +65 -5
  3. package/package.json +8 -7
  4. package/src/index.ts +425 -0
  5. package/src/renderer/Renderer.gen.tsx +49 -0
  6. package/src/renderer/Renderer.mjs +41 -1
  7. package/src/renderer/Renderer.res +78 -0
  8. package/src/parser/Core/__tests__/Bounds_test.mjs +0 -326
  9. package/src/parser/Core/__tests__/Bounds_test.res +0 -412
  10. package/src/parser/Core/__tests__/Grid_test.mjs +0 -322
  11. package/src/parser/Core/__tests__/Grid_test.res +0 -319
  12. package/src/parser/Core/__tests__/Types_test.mjs +0 -614
  13. package/src/parser/Core/__tests__/Types_test.res +0 -650
  14. package/src/parser/Detector/__tests__/BoxTracer_test.mjs +0 -70
  15. package/src/parser/Detector/__tests__/BoxTracer_test.res +0 -92
  16. package/src/parser/Detector/__tests__/HierarchyBuilder_test.mjs +0 -489
  17. package/src/parser/Detector/__tests__/HierarchyBuilder_test.res +0 -849
  18. package/src/parser/Detector/__tests__/ShapeDetector_test.mjs +0 -377
  19. package/src/parser/Detector/__tests__/ShapeDetector_test.res +0 -563
  20. package/src/parser/Interactions/__tests__/InteractionMerger_test.mjs +0 -576
  21. package/src/parser/Interactions/__tests__/InteractionMerger_test.res +0 -646
  22. package/src/parser/Scanner/__tests__/Grid_manual.mjs +0 -214
  23. package/src/parser/Scanner/__tests__/Grid_manual.res +0 -141
  24. package/src/parser/Semantic/Elements/__tests__/ButtonParser_test.mjs +0 -189
  25. package/src/parser/Semantic/Elements/__tests__/ButtonParser_test.res +0 -257
  26. package/src/parser/Semantic/Elements/__tests__/CheckboxParser_test.mjs +0 -202
  27. package/src/parser/Semantic/Elements/__tests__/CheckboxParser_test.res +0 -250
  28. package/src/parser/Semantic/Elements/__tests__/CodeTextParser_manual.mjs +0 -293
  29. package/src/parser/Semantic/Elements/__tests__/CodeTextParser_manual.res +0 -134
  30. package/src/parser/Semantic/Elements/__tests__/InputParser_test.mjs +0 -253
  31. package/src/parser/Semantic/Elements/__tests__/InputParser_test.res +0 -304
  32. package/src/parser/Semantic/Elements/__tests__/LinkParser_test.mjs +0 -289
  33. package/src/parser/Semantic/Elements/__tests__/LinkParser_test.res +0 -402
  34. package/src/parser/Semantic/Elements/__tests__/TextParser_test.mjs +0 -149
  35. package/src/parser/Semantic/Elements/__tests__/TextParser_test.res +0 -167
  36. package/src/parser/Semantic/__tests__/ASTBuilder_test.mjs +0 -187
  37. package/src/parser/Semantic/__tests__/ASTBuilder_test.res +0 -192
  38. package/src/parser/Semantic/__tests__/ParserRegistry_test.mjs +0 -154
  39. package/src/parser/Semantic/__tests__/ParserRegistry_test.res +0 -191
  40. package/src/parser/Semantic/__tests__/SemanticParser_integration_test.mjs +0 -768
  41. package/src/parser/Semantic/__tests__/SemanticParser_integration_test.res +0 -1069
  42. package/src/parser/Semantic/__tests__/SemanticParser_manual.mjs +0 -1329
  43. package/src/parser/Semantic/__tests__/SemanticParser_manual.res +0 -544
  44. package/src/parser/__tests__/GridScanner_integration.test.mjs +0 -632
  45. package/src/parser/__tests__/GridScanner_integration.test.res +0 -816
  46. package/src/parser/__tests__/Performance.test.mjs +0 -244
  47. package/src/parser/__tests__/Performance.test.res +0 -371
  48. package/src/parser/__tests__/PerformanceFixtures.mjs +0 -200
  49. package/src/parser/__tests__/PerformanceFixtures.res +0 -284
  50. package/src/parser/__tests__/WyreframeParser_integration.test.mjs +0 -770
  51. package/src/parser/__tests__/WyreframeParser_integration.test.res +0 -1008
  52. package/src/parser/__tests__/fixtures/alignment-test.txt +0 -9
  53. package/src/parser/__tests__/fixtures/all-elements.txt +0 -16
  54. package/src/parser/__tests__/fixtures/login-scene.txt +0 -17
  55. package/src/parser/__tests__/fixtures/multi-scene.txt +0 -25
  56. package/src/parser/__tests__/fixtures/nested-boxes.txt +0 -15
  57. package/src/parser/__tests__/fixtures/simple-box.txt +0 -5
  58. package/src/parser/__tests__/fixtures/with-dividers.txt +0 -14
@@ -1,614 +0,0 @@
1
- // Generated by ReScript, PLEASE EDIT WITH CARE
2
-
3
- import * as Vitest from "rescript-vitest/src/Vitest.mjs";
4
-
5
- Vitest.describe("Types - cellChar variant", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
6
- Vitest.test("Corner variant can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Corner").toBe("Corner"));
7
- Vitest.test("HLine variant can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("HLine").toBe("HLine"));
8
- Vitest.test("VLine variant can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("VLine").toBe("VLine"));
9
- Vitest.test("Divider variant can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Divider").toBe("Divider"));
10
- Vitest.test("Space variant can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Space").toBe("Space"));
11
- Vitest.test("Char variant can be created with content", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect({
12
- TAG: "Char",
13
- _0: "a"
14
- }).toEqual({
15
- TAG: "Char",
16
- _0: "a"
17
- }));
18
- Vitest.test("cellChar variants are distinct", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
19
- t.expect("Corner").not.toBe("HLine");
20
- t.expect("HLine").not.toBe("VLine");
21
- t.expect("VLine").not.toBe("Divider");
22
- t.expect("Divider").not.toBe("Space");
23
- });
24
- Vitest.test("Char variant with different content are distinct", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect({
25
- TAG: "Char",
26
- _0: "a"
27
- }).not.toEqual({
28
- TAG: "Char",
29
- _0: "b"
30
- }));
31
- Vitest.test("pattern matching on cellChar works", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
32
- t.expect("corner").toBe("corner");
33
- t.expect("hline").toBe("hline");
34
- t.expect("vline").toBe("vline");
35
- t.expect("divider").toBe("divider");
36
- t.expect("space").toBe("space");
37
- t.expect("char").toBe("char");
38
- });
39
- Vitest.test("extracting content from Char variant", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("hello").toBe("hello"));
40
- });
41
-
42
- Vitest.describe("Types - alignment variant", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
43
- Vitest.test("Left alignment can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Left").toBe("Left"));
44
- Vitest.test("Center alignment can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Center").toBe("Center"));
45
- Vitest.test("Right alignment can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Right").toBe("Right"));
46
- Vitest.test("alignment variants are distinct", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
47
- t.expect("Left").not.toBe("Center");
48
- t.expect("Center").not.toBe("Right");
49
- t.expect("Right").not.toBe("Left");
50
- });
51
- Vitest.test("pattern matching on alignment works", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
52
- t.expect("left").toBe("left");
53
- t.expect("center").toBe("center");
54
- t.expect("right").toBe("right");
55
- });
56
- });
57
-
58
- Vitest.describe("Types - position record", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
59
- Vitest.test("position can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
60
- t.expect(5).toBe(5);
61
- t.expect(10).toBe(10);
62
- });
63
- Vitest.test("position equality", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect({
64
- row: 5,
65
- col: 10
66
- }).toEqual({
67
- row: 5,
68
- col: 10
69
- }));
70
- Vitest.test("position inequality", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect({
71
- row: 5,
72
- col: 10
73
- }).not.toEqual({
74
- row: 5,
75
- col: 11
76
- }));
77
- });
78
-
79
- Vitest.describe("Types - bounds record", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
80
- Vitest.test("bounds can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
81
- t.expect(0).toBe(0);
82
- t.expect(0).toBe(0);
83
- t.expect(10).toBe(10);
84
- t.expect(20).toBe(20);
85
- });
86
- Vitest.test("bounds equality", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect({
87
- top: 0,
88
- left: 0,
89
- bottom: 10,
90
- right: 20
91
- }).toEqual({
92
- top: 0,
93
- left: 0,
94
- bottom: 10,
95
- right: 20
96
- }));
97
- Vitest.test("bounds inequality", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect({
98
- top: 0,
99
- left: 0,
100
- bottom: 10,
101
- right: 20
102
- }).not.toEqual({
103
- top: 0,
104
- left: 0,
105
- bottom: 11,
106
- right: 20
107
- }));
108
- });
109
-
110
- Vitest.describe("Types - element variant", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
111
- Vitest.test("Box element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
112
- let box_0 = "Login";
113
- let box_1 = {
114
- top: 0,
115
- left: 0,
116
- bottom: 10,
117
- right: 20
118
- };
119
- let box_2 = [];
120
- let box = {
121
- TAG: "Box",
122
- name: box_0,
123
- bounds: box_1,
124
- children: box_2
125
- };
126
- if (box.TAG === "Box") {
127
- return t.expect("Login").toBe("Login");
128
- } else {
129
- return t.expect(true).toBe(false);
130
- }
131
- });
132
- Vitest.test("Box element with no name", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
133
- let box_1 = {
134
- top: 0,
135
- left: 0,
136
- bottom: 10,
137
- right: 20
138
- };
139
- let box_2 = [];
140
- let box = {
141
- TAG: "Box",
142
- name: undefined,
143
- bounds: box_1,
144
- children: box_2
145
- };
146
- if (box.TAG === "Box") {
147
- return t.expect(undefined).toBe(undefined);
148
- } else {
149
- return t.expect(true).toBe(false);
150
- }
151
- });
152
- Vitest.test("Button element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
153
- let button_2 = {
154
- row: 5,
155
- col: 10
156
- };
157
- let button_4 = [];
158
- let button = {
159
- TAG: "Button",
160
- id: "submit",
161
- text: "Submit",
162
- position: button_2,
163
- align: "Center",
164
- actions: button_4
165
- };
166
- if (button.TAG !== "Button") {
167
- return t.expect(true).toBe(false);
168
- }
169
- t.expect("submit").toBe("submit");
170
- t.expect("Submit").toBe("Submit");
171
- t.expect("Center").toBe("Center");
172
- });
173
- Vitest.test("Input element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
174
- t.expect("email").toBe("email");
175
- t.expect("Enter email").toBe("Enter email");
176
- });
177
- Vitest.test("Link element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
178
- let link_2 = {
179
- row: 8,
180
- col: 15
181
- };
182
- let link_4 = [];
183
- let link = {
184
- TAG: "Link",
185
- id: "forgot-password",
186
- text: "Forgot Password?",
187
- position: link_2,
188
- align: "Right",
189
- actions: link_4
190
- };
191
- if (link.TAG !== "Link") {
192
- return t.expect(true).toBe(false);
193
- }
194
- t.expect("forgot-password").toBe("forgot-password");
195
- t.expect("Forgot Password?").toBe("Forgot Password?");
196
- t.expect("Right").toBe("Right");
197
- });
198
- Vitest.test("Checkbox element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
199
- t.expect(true).toBe(true);
200
- t.expect("Remember me").toBe("Remember me");
201
- });
202
- Vitest.test("Text element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
203
- t.expect("Welcome").toBe("Welcome");
204
- t.expect(false).toBe(false);
205
- t.expect("Left").toBe("Left");
206
- });
207
- Vitest.test("Text element with emphasis", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect(true).toBe(true));
208
- Vitest.test("Divider element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
209
- let divider = {
210
- TAG: "Divider",
211
- position: {
212
- row: 5,
213
- col: 0
214
- }
215
- };
216
- if (divider.TAG === "Divider") {
217
- return t.expect(divider.position.row).toBe(5);
218
- } else {
219
- return t.expect(true).toBe(false);
220
- }
221
- });
222
- Vitest.test("Row element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
223
- let row_0 = [];
224
- let row = {
225
- TAG: "Row",
226
- children: row_0,
227
- align: "Center"
228
- };
229
- if (row.TAG === "Row") {
230
- return t.expect("Center").toBe("Center");
231
- } else {
232
- return t.expect(true).toBe(false);
233
- }
234
- });
235
- Vitest.test("Section element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
236
- let section_1 = [];
237
- let section = {
238
- TAG: "Section",
239
- name: "Header",
240
- children: section_1
241
- };
242
- if (section.TAG === "Section") {
243
- return t.expect("Header").toBe("Header");
244
- } else {
245
- return t.expect(true).toBe(false);
246
- }
247
- });
248
- Vitest.test("Box can contain nested elements", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
249
- let button_2 = {
250
- row: 5,
251
- col: 10
252
- };
253
- let button_4 = [];
254
- let button = {
255
- TAG: "Button",
256
- id: "submit",
257
- text: "Submit",
258
- position: button_2,
259
- align: "Center",
260
- actions: button_4
261
- };
262
- let box_0 = "Form";
263
- let box_1 = {
264
- top: 0,
265
- left: 0,
266
- bottom: 10,
267
- right: 20
268
- };
269
- let box_2 = [button];
270
- let box = {
271
- TAG: "Box",
272
- name: box_0,
273
- bounds: box_1,
274
- children: box_2
275
- };
276
- if (box.TAG === "Box") {
277
- return t.expect(box_2.length).toBe(1);
278
- } else {
279
- return t.expect(true).toBe(false);
280
- }
281
- });
282
- Vitest.test("pattern matching on element types", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
283
- let getType = element => {
284
- switch (element.TAG) {
285
- case "Box" :
286
- return "box";
287
- case "Button" :
288
- return "button";
289
- case "Input" :
290
- return "input";
291
- case "Link" :
292
- return "link";
293
- case "Checkbox" :
294
- return "checkbox";
295
- case "Text" :
296
- return "text";
297
- case "Divider" :
298
- return "divider";
299
- case "Row" :
300
- return "row";
301
- case "Section" :
302
- return "section";
303
- }
304
- };
305
- t.expect(getType({
306
- TAG: "Box",
307
- name: undefined,
308
- bounds: {
309
- top: 0,
310
- left: 0,
311
- bottom: 1,
312
- right: 1
313
- },
314
- children: []
315
- })).toBe("box");
316
- t.expect(getType({
317
- TAG: "Button",
318
- id: "b",
319
- text: "B",
320
- position: {
321
- row: 0,
322
- col: 0
323
- },
324
- align: "Left",
325
- actions: []
326
- })).toBe("button");
327
- t.expect("input").toBe("input");
328
- t.expect(getType({
329
- TAG: "Link",
330
- id: "l",
331
- text: "L",
332
- position: {
333
- row: 0,
334
- col: 0
335
- },
336
- align: "Left",
337
- actions: []
338
- })).toBe("link");
339
- t.expect("checkbox").toBe("checkbox");
340
- t.expect("text").toBe("text");
341
- t.expect("divider").toBe("divider");
342
- t.expect(getType({
343
- TAG: "Row",
344
- children: [],
345
- align: "Left"
346
- })).toBe("row");
347
- t.expect(getType({
348
- TAG: "Section",
349
- name: "S",
350
- children: []
351
- })).toBe("section");
352
- });
353
- });
354
-
355
- Vitest.describe("Types - scene record", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
356
- Vitest.test("scene can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
357
- let scene_elements = [];
358
- t.expect("login").toBe("login");
359
- t.expect("Login Page").toBe("Login Page");
360
- t.expect("fade").toBe("fade");
361
- t.expect(scene_elements.length).toBe(0);
362
- });
363
- Vitest.test("scene can contain elements", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
364
- let button_2 = {
365
- row: 5,
366
- col: 10
367
- };
368
- let button_4 = [];
369
- let button = {
370
- TAG: "Button",
371
- id: "submit",
372
- text: "Submit",
373
- position: button_2,
374
- align: "Center",
375
- actions: button_4
376
- };
377
- let scene_elements = [button];
378
- t.expect(scene_elements.length).toBe(1);
379
- });
380
- Vitest.test("scene equality", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
381
- let scene1_elements = [];
382
- let scene1 = {
383
- id: "login",
384
- title: "Login",
385
- transition: "fade",
386
- device: "Desktop",
387
- elements: scene1_elements
388
- };
389
- let scene2_elements = [];
390
- let scene2 = {
391
- id: "login",
392
- title: "Login",
393
- transition: "fade",
394
- device: "Desktop",
395
- elements: scene2_elements
396
- };
397
- t.expect(scene1).toEqual(scene2);
398
- });
399
- });
400
-
401
- Vitest.describe("Types - ast record", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
402
- Vitest.test("ast can be created with empty scenes", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
403
- let ast = {
404
- scenes: []
405
- };
406
- t.expect(ast.scenes.length).toBe(0);
407
- });
408
- Vitest.test("ast can contain multiple scenes", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
409
- let scene1_elements = [];
410
- let scene1 = {
411
- id: "login",
412
- title: "Login",
413
- transition: "fade",
414
- device: "Desktop",
415
- elements: scene1_elements
416
- };
417
- let scene2_elements = [];
418
- let scene2 = {
419
- id: "home",
420
- title: "Home",
421
- transition: "slide",
422
- device: "Desktop",
423
- elements: scene2_elements
424
- };
425
- let ast = {
426
- scenes: [
427
- scene1,
428
- scene2
429
- ]
430
- };
431
- t.expect(ast.scenes.length).toBe(2);
432
- });
433
- Vitest.test("ast scenes maintain order", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
434
- let scene1_elements = [];
435
- let scene1 = {
436
- id: "login",
437
- title: "Login",
438
- transition: "fade",
439
- device: "Desktop",
440
- elements: scene1_elements
441
- };
442
- let scene2_elements = [];
443
- let scene2 = {
444
- id: "home",
445
- title: "Home",
446
- transition: "slide",
447
- device: "Desktop",
448
- elements: scene2_elements
449
- };
450
- let ast = {
451
- scenes: [
452
- scene1,
453
- scene2
454
- ]
455
- };
456
- t.expect(ast.scenes[0].id).toBe("login");
457
- t.expect(ast.scenes[1].id).toBe("home");
458
- });
459
- });
460
-
461
- Vitest.describe("Types - interactionVariant", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
462
- Vitest.test("Primary variant can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Primary").toBe("Primary"));
463
- Vitest.test("Secondary variant can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Secondary").toBe("Secondary"));
464
- Vitest.test("Ghost variant can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Ghost").toBe("Ghost"));
465
- Vitest.test("pattern matching on interactionVariant", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
466
- t.expect("primary").toBe("primary");
467
- t.expect("secondary").toBe("secondary");
468
- t.expect("ghost").toBe("ghost");
469
- });
470
- });
471
-
472
- Vitest.describe("Types - interactionAction", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
473
- Vitest.test("Goto action can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
474
- t.expect("home").toBe("home");
475
- t.expect("fade").toBe("fade");
476
- t.expect("isValid").toBe("isValid");
477
- });
478
- Vitest.test("Back action can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Back").toBe("Back"));
479
- Vitest.test("Forward action can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Forward").toBe("Forward"));
480
- Vitest.test("Validate action can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
481
- let action = {
482
- TAG: "Validate",
483
- fields: [
484
- "email",
485
- "password"
486
- ]
487
- };
488
- if (typeof action !== "object") {
489
- return t.expect(true).toBe(false);
490
- }
491
- if (action.TAG !== "Validate") {
492
- return t.expect(true).toBe(false);
493
- }
494
- let fields = action.fields;
495
- t.expect(fields.length).toBe(2);
496
- t.expect(fields[0]).toBe("email");
497
- t.expect(fields[1]).toBe("password");
498
- });
499
- Vitest.test("Call action can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
500
- let action_1 = [
501
- "arg1",
502
- "arg2"
503
- ];
504
- let action = {
505
- TAG: "Call",
506
- function: "handleSubmit",
507
- args: action_1,
508
- condition: undefined
509
- };
510
- if (typeof action !== "object") {
511
- return t.expect(true).toBe(false);
512
- }
513
- if (action.TAG !== "Call") {
514
- return t.expect(true).toBe(false);
515
- }
516
- t.expect("handleSubmit").toBe("handleSubmit");
517
- t.expect(action_1.length).toBe(2);
518
- t.expect(undefined).toBe(undefined);
519
- });
520
- Vitest.test("pattern matching on interactionAction", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
521
- let getType = action => {
522
- if (typeof action !== "object") {
523
- if (action === "Back") {
524
- return "back";
525
- } else {
526
- return "forward";
527
- }
528
- }
529
- switch (action.TAG) {
530
- case "Goto" :
531
- return "goto";
532
- case "Validate" :
533
- return "validate";
534
- case "Call" :
535
- return "call";
536
- }
537
- };
538
- t.expect("goto").toBe("goto");
539
- t.expect("back").toBe("back");
540
- t.expect("forward").toBe("forward");
541
- t.expect(getType({
542
- TAG: "Validate",
543
- fields: []
544
- })).toBe("validate");
545
- t.expect(getType({
546
- TAG: "Call",
547
- function: "f",
548
- args: [],
549
- condition: undefined
550
- })).toBe("call");
551
- });
552
- });
553
-
554
- Vitest.describe("Types - interaction record", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
555
- Vitest.test("interaction can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
556
- let props = {};
557
- props["variant"] = "primary";
558
- let interaction_actions = ["Back"];
559
- t.expect("submit-button").toBe("submit-button");
560
- t.expect(interaction_actions.length).toBe(1);
561
- });
562
- Vitest.test("interaction with multiple actions", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
563
- let interaction_properties = {};
564
- let interaction_actions = [
565
- {
566
- TAG: "Validate",
567
- fields: [
568
- "email",
569
- "password"
570
- ]
571
- },
572
- {
573
- TAG: "Goto",
574
- target: "home",
575
- transition: "fade",
576
- condition: undefined
577
- }
578
- ];
579
- t.expect(interaction_actions.length).toBe(2);
580
- });
581
- });
582
-
583
- Vitest.describe("Types - sceneInteractions record", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
584
- Vitest.test("sceneInteractions can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
585
- let sceneInteractions_interactions = [];
586
- t.expect("login").toBe("login");
587
- t.expect(sceneInteractions_interactions.length).toBe(0);
588
- });
589
- Vitest.test("sceneInteractions can contain multiple interactions", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
590
- let interaction1_properties = {};
591
- let interaction1_actions = [];
592
- let interaction1 = {
593
- elementId: "email",
594
- properties: interaction1_properties,
595
- actions: interaction1_actions
596
- };
597
- let interaction2_properties = {};
598
- let interaction2_actions = [];
599
- let interaction2 = {
600
- elementId: "password",
601
- properties: interaction2_properties,
602
- actions: interaction2_actions
603
- };
604
- let sceneInteractions_interactions = [
605
- interaction1,
606
- interaction2
607
- ];
608
- t.expect(sceneInteractions_interactions.length).toBe(2);
609
- t.expect(sceneInteractions_interactions[0].elementId).toBe("email");
610
- t.expect(sceneInteractions_interactions[1].elementId).toBe("password");
611
- });
612
- });
613
-
614
- /* Not a pure module */