foldkit 0.99.0 → 0.100.1

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 (45) hide show
  1. package/README.md +37 -35
  2. package/dist/devTools/overlay.d.ts.map +1 -1
  3. package/dist/devTools/overlay.js +6 -1
  4. package/dist/devTools/protocol.d.ts +94 -2
  5. package/dist/devTools/protocol.d.ts.map +1 -1
  6. package/dist/devTools/protocol.js +32 -0
  7. package/dist/devTools/public.d.ts +1 -1
  8. package/dist/devTools/public.d.ts.map +1 -1
  9. package/dist/devTools/public.js +1 -1
  10. package/dist/devTools/schemaSummarize.d.ts +82 -0
  11. package/dist/devTools/schemaSummarize.d.ts.map +1 -0
  12. package/dist/devTools/schemaSummarize.js +264 -0
  13. package/dist/devTools/store.d.ts.map +1 -1
  14. package/dist/devTools/store.js +50 -49
  15. package/dist/devTools/webSocketBridge.d.ts +9 -0
  16. package/dist/devTools/webSocketBridge.d.ts.map +1 -1
  17. package/dist/devTools/webSocketBridge.js +64 -3
  18. package/dist/runtime/browserListeners.d.ts +1 -0
  19. package/dist/runtime/browserListeners.d.ts.map +1 -1
  20. package/dist/runtime/browserListeners.js +17 -5
  21. package/dist/test/apps/bubbling.d.ts.map +1 -1
  22. package/dist/test/apps/bubbling.js +7 -5
  23. package/dist/test/apps/counter.d.ts.map +1 -1
  24. package/dist/test/apps/counter.js +8 -6
  25. package/dist/test/apps/disabledButton.d.ts.map +1 -1
  26. package/dist/test/apps/disabledButton.js +32 -21
  27. package/dist/test/apps/fileUpload.d.ts.map +1 -1
  28. package/dist/test/apps/fileUpload.js +18 -16
  29. package/dist/test/apps/interactions.d.ts.map +1 -1
  30. package/dist/test/apps/interactions.js +21 -19
  31. package/dist/test/apps/keypress.d.ts.map +1 -1
  32. package/dist/test/apps/keypress.js +12 -10
  33. package/dist/test/apps/login.d.ts.map +1 -1
  34. package/dist/test/apps/login.js +38 -36
  35. package/dist/test/apps/logoutButton.d.ts.map +1 -1
  36. package/dist/test/apps/logoutButton.js +4 -2
  37. package/dist/test/apps/mountPanel.d.ts.map +1 -1
  38. package/dist/test/apps/mountPanel.js +29 -21
  39. package/dist/test/apps/multiRole.d.ts.map +1 -1
  40. package/dist/test/apps/multiRole.js +6 -4
  41. package/dist/test/apps/pointer.d.ts.map +1 -1
  42. package/dist/test/apps/pointer.js +15 -13
  43. package/dist/test/apps/resumeUpload.d.ts.map +1 -1
  44. package/dist/test/apps/resumeUpload.js +20 -15
  45. package/package.json +1 -1
@@ -63,9 +63,11 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
63
63
  FailedFetchCount: () => [model, []],
64
64
  }));
65
65
  // VIEW
66
- const h = html();
67
- export const view = (model) => h.div([], [
68
- h.span([h.Role('status')], [`count: ${model.count}`]),
69
- h.button([h.OnClick(StartedThreeFetches()), h.Role('button')], ['Start three fetches']),
70
- h.button([h.OnClick(StartedTwoFetchesById()), h.Role('button')], ['Start two fetches by id']),
71
- ]);
66
+ export const view = (model) => {
67
+ const h = html();
68
+ return h.div([], [
69
+ h.span([h.Role('status')], [`count: ${model.count}`]),
70
+ h.button([h.OnClick(StartedThreeFetches()), h.Role('button')], ['Start three fetches']),
71
+ h.button([h.OnClick(StartedTwoFetchesById()), h.Role('button')], ['Start two fetches by id']),
72
+ ]);
73
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"disabledButton.d.ts","sourceRoot":"","sources":["../../../src/test/apps/disabledButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,qBAAqB,CAAA;AAMrD,eAAO,MAAM,KAAK;;;;;;;;;;;;;EAGhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,gBAAgB;;;;EAE3B,CAAA;AAEF,eAAO,MAAM,OAAO;;;;IAA4D,CAAA;AAChF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY,EAAE,KAG1B,CAAA;AAID,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAyBxD,CAAA;AAeH,sCAAsC;AACtC,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IAOjC,CAAA;AAEH,8DAA8D;AAC9D,eAAO,MAAM,cAAc,GAAI,OAAO,KAAK,KAAG,IAY3C,CAAA;AAKH,eAAO,MAAM,kBAAkB,GAAI,OAAO,KAAK,KAAG,IAY/C,CAAA"}
1
+ {"version":3,"file":"disabledButton.d.ts","sourceRoot":"","sources":["../../../src/test/apps/disabledButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,qBAAqB,CAAA;AAMrD,eAAO,MAAM,KAAK;;;;;;;;;;;;;EAGhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,gBAAgB;;;;EAE3B,CAAA;AAEF,eAAO,MAAM,OAAO;;;;IAA4D,CAAA;AAChF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY,EAAE,KAG1B,CAAA;AAID,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAyBxD,CAAA;AAgBH,sCAAsC;AACtC,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IAUnC,CAAA;AAED,8DAA8D;AAC9D,eAAO,MAAM,cAAc,GAAI,OAAO,KAAK,KAAG,IAe7C,CAAA;AAKD,eAAO,MAAM,kBAAkB,GAAI,OAAO,KAAK,KAAG,IAejD,CAAA"}
@@ -33,28 +33,39 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
33
33
  },
34
34
  }));
35
35
  // VIEW
36
- const h = html();
37
- const submitButton = (isEnabled) => h.button([
38
- h.Class('submit'),
39
- ...(isEnabled ? [h.OnClick(ClickedSubmit())] : [h.Disabled(true)]),
40
- ], ['Submit']);
36
+ const submitButton = (isEnabled) => {
37
+ const h = html();
38
+ return h.button([
39
+ h.Class('submit'),
40
+ ...(isEnabled ? [h.OnClick(ClickedSubmit())] : [h.Disabled(true)]),
41
+ ], ['Submit']);
42
+ };
41
43
  /** Plain view — no dialog wrapper. */
42
- export const view = (model) => h.div([], [
43
- h.button([h.OnClick(ClickedToggle())], ['Toggle']),
44
- submitButton(model.isEnabled),
45
- ]);
44
+ export const view = (model) => {
45
+ const h = html();
46
+ return h.div([], [
47
+ h.button([h.OnClick(ClickedToggle())], ['Toggle']),
48
+ submitButton(model.isEnabled),
49
+ ]);
50
+ };
46
51
  /** View with submit button inside a dialog's panelContent. */
47
- export const viewWithDialog = (model) => h.div([], [
48
- h.button([h.OnClick(ClickedToggle())], ['Toggle']),
49
- Dialog.view({
50
- model: model.dialog,
51
- toParentMessage: (dialogMessage) => GotDialogMessage({ message: dialogMessage }),
52
- panelContent: submitButton(model.isEnabled),
53
- }),
54
- ]);
52
+ export const viewWithDialog = (model) => {
53
+ const h = html();
54
+ return h.div([], [
55
+ h.button([h.OnClick(ClickedToggle())], ['Toggle']),
56
+ Dialog.view({
57
+ model: model.dialog,
58
+ toParentMessage: (dialogMessage) => GotDialogMessage({ message: dialogMessage }),
59
+ panelContent: submitButton(model.isEnabled),
60
+ }),
61
+ ]);
62
+ };
55
63
  /** View using Dialog.lazy with panelContent passed dynamically. */
56
64
  const lazyDialogView = Dialog.lazy({});
57
- export const viewWithLazyDialog = (model) => h.div([], [
58
- h.button([h.OnClick(ClickedToggle())], ['Toggle']),
59
- lazyDialogView(model.dialog, (dialogMessage) => GotDialogMessage({ message: dialogMessage }), submitButton(model.isEnabled)),
60
- ]);
65
+ export const viewWithLazyDialog = (model) => {
66
+ const h = html();
67
+ return h.div([], [
68
+ h.button([h.OnClick(ClickedToggle())], ['Toggle']),
69
+ lazyDialogView(model.dialog, (dialogMessage) => GotDialogMessage({ message: dialogMessage }), submitButton(model.isEnabled)),
70
+ ]);
71
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"fileUpload.d.ts","sourceRoot":"","sources":["../../../src/test/apps/fileUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,qBAAqB,CAAA;AAKrD,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;CACnC,CAAC,CAAA;AAEF,eAAO,MAAM,YAAY,EAAE,KAA6B,CAAA;AAIxD,eAAO,MAAM,aAAa;;EAA+C,CAAA;AAEzE,eAAO,MAAM,OAAO;;IAA2B,CAAA;AAC/C,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAMrC,CAAA;AAMH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IA2BjC,CAAA"}
1
+ {"version":3,"file":"fileUpload.d.ts","sourceRoot":"","sources":["../../../src/test/apps/fileUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,qBAAqB,CAAA;AAKrD,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;CACnC,CAAC,CAAA;AAEF,eAAO,MAAM,YAAY,EAAE,KAA6B,CAAA;AAIxD,eAAO,MAAM,aAAa;;EAA+C,CAAA;AAEzE,eAAO,MAAM,OAAO;;IAA2B,CAAA;AAC/C,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAMrC,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IA8BnC,CAAA"}
@@ -11,19 +11,21 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
11
11
  ReceivedFiles: ({ files }) => [{ ...model, receivedFiles: files }, []],
12
12
  }));
13
13
  // VIEW
14
- const h = html();
15
- export const view = (model) => h.div([], [
16
- h.input([
17
- h.Key('file-input'),
18
- h.AriaLabel('resume'),
19
- h.Type('file'),
20
- h.OnFileChange(files => ReceivedFiles({ files })),
21
- ]),
22
- h.div([
23
- h.Key('drop-zone'),
24
- h.AriaLabel('attachments'),
25
- h.OnDropFiles(files => ReceivedFiles({ files })),
26
- ], ['Drop files here']),
27
- h.div([h.Key('received-count')], [`count=${String(model.receivedFiles.length)}`]),
28
- h.div([h.Key('received-names')], [`names=${model.receivedFiles.map(file => file.name).join(',')}`]),
29
- ]);
14
+ export const view = (model) => {
15
+ const h = html();
16
+ return h.div([], [
17
+ h.input([
18
+ h.Key('file-input'),
19
+ h.AriaLabel('resume'),
20
+ h.Type('file'),
21
+ h.OnFileChange(files => ReceivedFiles({ files })),
22
+ ]),
23
+ h.div([
24
+ h.Key('drop-zone'),
25
+ h.AriaLabel('attachments'),
26
+ h.OnDropFiles(files => ReceivedFiles({ files })),
27
+ ], ['Drop files here']),
28
+ h.div([h.Key('received-count')], [`count=${String(model.receivedFiles.length)}`]),
29
+ h.div([h.Key('received-names')], [`names=${model.receivedFiles.map(file => file.name).join(',')}`]),
30
+ ]);
31
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"interactions.d.ts","sourceRoot":"","sources":["../../../src/test/apps/interactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhD,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,qBAAqB,CAAA;AAKrD,eAAO,MAAM,KAAK;;;;;;EAMhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,YAAY,0EAAoB,CAAA;AAC7C,eAAO,MAAM,YAAY,0EAAoB,CAAA;AAC7C,eAAO,MAAM,aAAa;;EAA0C,CAAA;AAEpE,eAAO,MAAM,OAAO;;IAOlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAA;AAID,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAcrC,CAAA;AAMH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IA2BjC,CAAA"}
1
+ {"version":3,"file":"interactions.d.ts","sourceRoot":"","sources":["../../../src/test/apps/interactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhD,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,qBAAqB,CAAA;AAKrD,eAAO,MAAM,KAAK;;;;;;EAMhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,YAAY,0EAAoB,CAAA;AAC7C,eAAO,MAAM,YAAY,0EAAoB,CAAA;AAC7C,eAAO,MAAM,aAAa;;EAA0C,CAAA;AAEpE,eAAO,MAAM,OAAO;;IAOlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAA;AAID,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAcrC,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IA8BnC,CAAA"}
@@ -45,22 +45,24 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
45
45
  ChangedSelect: ({ value }) => [{ ...model, changed: value }, []],
46
46
  }));
47
47
  // VIEW
48
- const h = html();
49
- export const view = (model) => h.div([], [
50
- h.button([
51
- h.OnClick(ClickedButton()),
52
- h.OnDoubleClick(DoubleClickedButton()),
53
- h.OnMouseEnter(HoveredTarget()),
54
- h.AriaLabel('action'),
55
- ], [`clicks=${model.clicks} dbl=${model.doubleClicks}`]),
56
- h.input([
57
- h.Role('textbox'),
58
- h.AriaLabel('name'),
59
- h.OnFocus(FocusedInput()),
60
- h.OnBlur(BlurredInput()),
61
- ]),
62
- h.select([h.AriaLabel('fruit'), h.OnChange(value => ChangedSelect({ value }))], [
63
- h.option([h.Value('apple')], ['Apple']),
64
- h.option([h.Value('banana')], ['Banana']),
65
- ]),
66
- ]);
48
+ export const view = (model) => {
49
+ const h = html();
50
+ return h.div([], [
51
+ h.button([
52
+ h.OnClick(ClickedButton()),
53
+ h.OnDoubleClick(DoubleClickedButton()),
54
+ h.OnMouseEnter(HoveredTarget()),
55
+ h.AriaLabel('action'),
56
+ ], [`clicks=${model.clicks} dbl=${model.doubleClicks}`]),
57
+ h.input([
58
+ h.Role('textbox'),
59
+ h.AriaLabel('name'),
60
+ h.OnFocus(FocusedInput()),
61
+ h.OnBlur(BlurredInput()),
62
+ ]),
63
+ h.select([h.AriaLabel('fruit'), h.OnChange(value => ChangedSelect({ value }))], [
64
+ h.option([h.Value('apple')], ['Apple']),
65
+ h.option([h.Value('banana')], ['Banana']),
66
+ ]),
67
+ ]);
68
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"keypress.d.ts","sourceRoot":"","sources":["../../../src/test/apps/keypress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAM/C,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,UAAU;;EAAqC,CAAA;AAC5D,eAAO,MAAM,eAAe;;EAA0C,CAAA;AAEtE,eAAO,MAAM,OAAO;;;;IAAyC,CAAA;AAC7D,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY,EAAE,KAG1B,CAAA;AAID,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAarC,CAAA;AAMH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IAiBjC,CAAA"}
1
+ {"version":3,"file":"keypress.d.ts","sourceRoot":"","sources":["../../../src/test/apps/keypress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAM/C,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,UAAU;;EAAqC,CAAA;AAC5D,eAAO,MAAM,eAAe;;EAA0C,CAAA;AAEtE,eAAO,MAAM,OAAO;;;;IAAyC,CAAA;AAC7D,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY,EAAE,KAG1B,CAAA;AAID,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAarC,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IAoBnC,CAAA"}
@@ -27,13 +27,15 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
27
27
  ],
28
28
  }));
29
29
  // VIEW
30
- const h = html();
31
- export const view = (model) => h.div([
32
- h.Id('key-app'),
33
- h.Role('application'),
34
- h.AriaLabel('Key press area'),
35
- h.OnKeyDown((key, modifiers) => modifiers.shiftKey ? PressedShiftKey({ key }) : PressedKey({ key })),
36
- ], [
37
- h.span([h.Class('last-key'), h.AriaLabel('Last key')], [model.lastKey]),
38
- h.span([h.Class('shifted'), h.AriaLabel('Shift pressed')], [model.isShifted ? 'true' : 'false']),
39
- ]);
30
+ export const view = (model) => {
31
+ const h = html();
32
+ return h.div([
33
+ h.Id('key-app'),
34
+ h.Role('application'),
35
+ h.AriaLabel('Key press area'),
36
+ h.OnKeyDown((key, modifiers) => modifiers.shiftKey ? PressedShiftKey({ key }) : PressedKey({ key })),
37
+ ], [
38
+ h.span([h.Class('last-key'), h.AriaLabel('Last key')], [model.lastKey]),
39
+ h.span([h.Class('shifted'), h.AriaLabel('Shift pressed')], [model.isShifted ? 'true' : 'false']),
40
+ ]);
41
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/test/apps/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,qBAAqB,CAAA;AAKrD,eAAO,MAAM,KAAK;;;;;;EAMhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,YAAY;;EAAyC,CAAA;AAClE,eAAO,MAAM,eAAe;;EAA4C,CAAA;AACxE,eAAO,MAAM,cAAc,4EAAsB,CAAA;AACjD,eAAO,MAAM,qBAAqB;;EAEhC,CAAA;AACF,eAAO,MAAM,kBAAkB;;EAA+C,CAAA;AAC9E,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAE/C,eAAO,MAAM,OAAO;;;;;;;;+EAOlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY;;;iBAIyC,CAAA;AAIlE,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAA;AAID,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAyBxD,CAAA;AAMH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IA6EjC,CAAA"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/test/apps/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,qBAAqB,CAAA;AAKrD,eAAO,MAAM,KAAK;;;;;;EAMhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,YAAY;;EAAyC,CAAA;AAClE,eAAO,MAAM,eAAe;;EAA4C,CAAA;AACxE,eAAO,MAAM,cAAc,4EAAsB,CAAA;AACjD,eAAO,MAAM,qBAAqB;;EAEhC,CAAA;AACF,eAAO,MAAM,kBAAkB;;EAA+C,CAAA;AAC9E,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAE/C,eAAO,MAAM,OAAO;;;;;;;;+EAOlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY;;;iBAIyC,CAAA;AAIlE,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAA;AAID,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAyBxD,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IAgFnC,CAAA"}
@@ -59,39 +59,41 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
59
59
  ],
60
60
  }));
61
61
  // VIEW
62
- const h = html();
63
- export const view = (model) => h.div([h.Id('app')], [
64
- M.value(model.status).pipe(M.withReturnType(), M.when('Submitting', () => h.form([h.Class('login-form'), h.Disabled(true)], [h.button([h.Type('submit'), h.Disabled(true)], ['Signing in...'])])), M.when('LoggedIn', () => h.div([
65
- h.Class('logged-in'),
66
- h.Role('region'),
67
- h.AriaLabel('User session'),
68
- ], [
69
- h.span([h.Class('greeting'), h.Role('status')], [`Welcome, ${model.username}!`]),
70
- h.button([
71
- h.OnClick(ClickedLogout()),
72
- h.Role('button'),
73
- h.AriaExpanded(false),
74
- ], ['Log out']),
75
- ])), M.when('Error', () => h.div([], [
76
- h.p([h.Class('error'), h.Role('alert')], [model.error]),
77
- h.button([h.OnClick(SubmittedLogin()), h.Class('retry')], ['Retry']),
78
- ])), M.when('Idle', () => h.form([h.OnSubmit(SubmittedLogin()), h.Class('login-form')], [
79
- h.label([h.For('email'), h.Class('sr-only')], ['Email']),
80
- h.input([
81
- h.Id('email'),
82
- h.Type('email'),
83
- h.Placeholder('Email'),
84
- h.Value(model.email),
85
- h.OnInput(value => UpdatedEmail({ value })),
86
- ]),
87
- h.label([h.For('password'), h.Class('sr-only')], ['Password']),
88
- h.input([
89
- h.Id('password'),
90
- h.Type('password'),
91
- h.Placeholder('Password'),
92
- h.Value(model.password),
93
- h.OnInput(value => UpdatedPassword({ value })),
94
- ]),
95
- h.button([h.Type('submit'), h.Class('primary'), h.Disabled(false)], ['Sign in']),
96
- ])), M.exhaustive),
97
- ]);
62
+ export const view = (model) => {
63
+ const h = html();
64
+ return h.div([h.Id('app')], [
65
+ M.value(model.status).pipe(M.withReturnType(), M.when('Submitting', () => h.form([h.Class('login-form'), h.Disabled(true)], [h.button([h.Type('submit'), h.Disabled(true)], ['Signing in...'])])), M.when('LoggedIn', () => h.div([
66
+ h.Class('logged-in'),
67
+ h.Role('region'),
68
+ h.AriaLabel('User session'),
69
+ ], [
70
+ h.span([h.Class('greeting'), h.Role('status')], [`Welcome, ${model.username}!`]),
71
+ h.button([
72
+ h.OnClick(ClickedLogout()),
73
+ h.Role('button'),
74
+ h.AriaExpanded(false),
75
+ ], ['Log out']),
76
+ ])), M.when('Error', () => h.div([], [
77
+ h.p([h.Class('error'), h.Role('alert')], [model.error]),
78
+ h.button([h.OnClick(SubmittedLogin()), h.Class('retry')], ['Retry']),
79
+ ])), M.when('Idle', () => h.form([h.OnSubmit(SubmittedLogin()), h.Class('login-form')], [
80
+ h.label([h.For('email'), h.Class('sr-only')], ['Email']),
81
+ h.input([
82
+ h.Id('email'),
83
+ h.Type('email'),
84
+ h.Placeholder('Email'),
85
+ h.Value(model.email),
86
+ h.OnInput(value => UpdatedEmail({ value })),
87
+ ]),
88
+ h.label([h.For('password'), h.Class('sr-only')], ['Password']),
89
+ h.input([
90
+ h.Id('password'),
91
+ h.Type('password'),
92
+ h.Placeholder('Password'),
93
+ h.Value(model.password),
94
+ h.OnInput(value => UpdatedPassword({ value })),
95
+ ]),
96
+ h.button([h.Type('submit'), h.Class('primary'), h.Disabled(false)], ['Sign in']),
97
+ ])), M.exhaustive),
98
+ ]);
99
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"logoutButton.d.ts","sourceRoot":"","sources":["../../../src/test/apps/logoutButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAM/C,eAAO,MAAM,KAAK;;EAAgC,CAAA;AAClD,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,eAAe,6EAAuB,CAAA;AAEnD,eAAO,MAAM,OAAO,4KAA4C,CAAA;AAChE,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,eAAe,6EAAuB,CAAA;AAEnD,eAAO,MAAM,UAAU,iGAA6B,CAAA;AACpD,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAI/C,eAAO,MAAM,YAAY,EAAE,KAA4B,CAAA;AAIvD,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAShE,CAAA;AAMH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IAIjC,CAAA"}
1
+ {"version":3,"file":"logoutButton.d.ts","sourceRoot":"","sources":["../../../src/test/apps/logoutButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAM/C,eAAO,MAAM,KAAK;;EAAgC,CAAA;AAClD,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,eAAe,6EAAuB,CAAA;AAEnD,eAAO,MAAM,OAAO,4KAA4C,CAAA;AAChE,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,eAAe,6EAAuB,CAAA;AAEnD,eAAO,MAAM,UAAU,iGAA6B,CAAA;AACpD,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAI/C,eAAO,MAAM,YAAY,EAAE,KAA4B,CAAA;AAIvD,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAShE,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IAOnC,CAAA"}
@@ -18,5 +18,7 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
18
18
  CompletedAction: () => [model, [], Option.none()],
19
19
  }));
20
20
  // VIEW
21
- const h = html();
22
- export const view = (model) => h.div([], [h.button([h.OnClick(ClickedLogout()), h.Role('button')], [model.label])]);
21
+ export const view = (model) => {
22
+ const h = html();
23
+ return h.div([], [h.button([h.OnClick(ClickedLogout()), h.Role('button')], [model.label])]);
24
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"mountPanel.d.ts","sourceRoot":"","sources":["../../../src/test/apps/mountPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAGhE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE/C,OAAO,KAAK,KAAK,MAAM,sBAAsB,CAAA;AAI7C,eAAO,MAAM,KAAK;;;;EAIhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,aAAa;;EAA0C,CAAA;AACpE,eAAO,MAAM,oBAAoB,kFAA4B,CAAA;AAC7D,eAAO,MAAM,kBAAkB;;EAAgD,CAAA;AAC/E,eAAO,MAAM,gBAAgB,8EAAwB,CAAA;AACrD,eAAO,MAAM,UAAU;;EAAwC,CAAA;AAE/D,eAAO,MAAM,OAAO;;;;;;IAOlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAWzC,eAAO,MAAM,YAAY;;;;;;EAI6B,CAAA;AAEtD,eAAO,MAAM,WAAW;;EAGuB,CAAA;AAE/C,eAAO,MAAM,UAAU;;;;;EAatB,CAAA;AAID,eAAO,MAAM,YAAY,EAAE,KAI1B,CAAA;AAID,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAcrC,CAAA;AAMH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IA2BjC,CAAA;AAEH;;4BAE4B;AAC5B,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK,KAAG,IAWzC,CAAA;AAEH;;;2DAG2D;AAC3D,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,IAI7C,CAAA"}
1
+ {"version":3,"file":"mountPanel.d.ts","sourceRoot":"","sources":["../../../src/test/apps/mountPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAGhE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE/C,OAAO,KAAK,KAAK,MAAM,sBAAsB,CAAA;AAI7C,eAAO,MAAM,KAAK;;;;EAIhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,aAAa;;EAA0C,CAAA;AACpE,eAAO,MAAM,oBAAoB,kFAA4B,CAAA;AAC7D,eAAO,MAAM,kBAAkB;;EAAgD,CAAA;AAC/E,eAAO,MAAM,gBAAgB,8EAAwB,CAAA;AACrD,eAAO,MAAM,UAAU;;EAAwC,CAAA;AAE/D,eAAO,MAAM,OAAO;;;;;;IAOlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAWzC,eAAO,MAAM,YAAY;;;;;;EAI6B,CAAA;AAEtD,eAAO,MAAM,WAAW;;EAGuB,CAAA;AAE/C,eAAO,MAAM,UAAU;;;;;EAatB,CAAA;AAID,eAAO,MAAM,YAAY,EAAE,KAI1B,CAAA;AAID,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAcrC,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IA8BnC,CAAA;AAED;;4BAE4B;AAC5B,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK,KAAG,IAc3C,CAAA;AAED;;;2DAG2D;AAC3D,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,IAO/C,CAAA"}
@@ -57,32 +57,40 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
57
57
  ScrolledTo: () => [model, []],
58
58
  }));
59
59
  // VIEW
60
- const h = html();
61
- export const view = (model) => h.div([h.Class('panel-test')], [
62
- h.button([h.Key('toggle'), h.OnClick(ClickedToggle()), h.OnMount(FocusButton())], [model.isOpen ? 'Close' : 'Open']),
63
- ...(model.isOpen
64
- ? [
65
- h.div([h.Key('panel'), h.OnMount(MeasurePanel())], [
66
- h.span([], [
67
- Option.match(model.measuredWidth, {
68
- onNone: () => 'unmeasured',
69
- onSome: width => `width: ${width}`,
70
- }),
60
+ export const view = (model) => {
61
+ const h = html();
62
+ return h.div([h.Class('panel-test')], [
63
+ h.button([h.Key('toggle'), h.OnClick(ClickedToggle()), h.OnMount(FocusButton())], [model.isOpen ? 'Close' : 'Open']),
64
+ ...(model.isOpen
65
+ ? [
66
+ h.div([h.Key('panel'), h.OnMount(MeasurePanel())], [
67
+ h.span([], [
68
+ Option.match(model.measuredWidth, {
69
+ onNone: () => 'unmeasured',
70
+ onSome: width => `width: ${width}`,
71
+ }),
72
+ ]),
71
73
  ]),
72
- ]),
73
- ]
74
- : []),
75
- ]);
74
+ ]
75
+ : []),
76
+ ]);
77
+ };
76
78
  /** A view that always renders both the toggle button and the panel, exposing
77
79
  * two MeasurePanel mounts simultaneously so we can exercise the (name,
78
80
  * occurrence) tracking. */
79
- export const twoPanelView = (model) => h.div([h.Class('two-panels')], [
80
- h.div([h.Key('panel-a'), h.OnMount(MeasurePanel())], [h.span([], ['A'])]),
81
- h.div([h.Key('panel-b'), h.OnMount(MeasurePanel())], [h.span([], ['B'])]),
82
- h.button([h.Key('inc'), h.OnClick(ClickedIncrement())], [`count: ${model.count}`]),
83
- ]);
81
+ export const twoPanelView = (model) => {
82
+ const h = html();
83
+ return h.div([h.Class('two-panels')], [
84
+ h.div([h.Key('panel-a'), h.OnMount(MeasurePanel())], [h.span([], ['A'])]),
85
+ h.div([h.Key('panel-b'), h.OnMount(MeasurePanel())], [h.span([], ['B'])]),
86
+ h.button([h.Key('inc'), h.OnClick(ClickedIncrement())], [`count: ${model.count}`]),
87
+ ]);
88
+ };
84
89
  /** A view that renders an arg-bearing Mount so Scene tests can exercise
85
90
  * Instance-based mount matching (matcher's args structurally equal the
86
91
  * pending Mount's args). The chosen `offset` flows through `ScrollList`'s
87
92
  * args and is observable on the rendered Mount marker. */
88
- export const scrollListView = (offset) => h.div([h.Class('scroll-list')], [h.div([h.Key('list'), h.OnMount(ScrollList({ offset }))], [])]);
93
+ export const scrollListView = (offset) => {
94
+ const h = html();
95
+ return h.div([h.Class('scroll-list')], [h.div([h.Key('list'), h.OnMount(ScrollList({ offset }))], [])]);
96
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"multiRole.d.ts","sourceRoot":"","sources":["../../../src/test/apps/multiRole.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhD,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,qBAAqB,CAAA;AAKrD,eAAO,MAAM,KAAK;;EAAiC,CAAA;AACnD,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,eAAe,6EAAuB,CAAA;AAEnD,eAAO,MAAM,OAAO,iGAA6B,CAAA;AACjD,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY,EAAE,KAAqB,CAAA;AAIhD,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAMrC,CAAA;AAMH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IASjC,CAAA"}
1
+ {"version":3,"file":"multiRole.d.ts","sourceRoot":"","sources":["../../../src/test/apps/multiRole.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhD,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,qBAAqB,CAAA;AAKrD,eAAO,MAAM,KAAK;;EAAiC,CAAA;AACnD,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,eAAe,6EAAuB,CAAA;AAEnD,eAAO,MAAM,OAAO,iGAA6B,CAAA;AACjD,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY,EAAE,KAAqB,CAAA;AAIhD,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAMrC,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IAYnC,CAAA"}
@@ -13,7 +13,9 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
13
13
  ClickedFallback: () => [{ ...model, clicks: model.clicks + 1 }, []],
14
14
  }));
15
15
  // VIEW
16
- const h = html();
17
- export const view = (model) => h.div([], [
18
- h.div([h.Role('doc-subtitle heading'), h.OnClick(ClickedFallback())], [`Fallback element clicks=${model.clicks}`]),
19
- ]);
16
+ export const view = (model) => {
17
+ const h = html();
18
+ return h.div([], [
19
+ h.div([h.Role('doc-subtitle heading'), h.OnClick(ClickedFallback())], [`Fallback element clicks=${model.clicks}`]),
20
+ ]);
21
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"pointer.d.ts","sourceRoot":"","sources":["../../../src/test/apps/pointer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,qBAAqB,CAAA;AAKrD,eAAO,MAAM,KAAK;;;;EAIhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAOrC,QAAA,MAAM,OAAO;;;;IAAmD,CAAA;AAChE,KAAK,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIlC,eAAO,MAAM,YAAY,EAAE,KAI1B,CAAA;AAID,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAqBrC,CAAA;AAMH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IA2BjC,CAAA"}
1
+ {"version":3,"file":"pointer.d.ts","sourceRoot":"","sources":["../../../src/test/apps/pointer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,qBAAqB,CAAA;AAKrD,eAAO,MAAM,KAAK;;;;EAIhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAOrC,QAAA,MAAM,OAAO;;;;IAAmD,CAAA;AAChE,KAAK,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIlC,eAAO,MAAM,YAAY,EAAE,KAI1B,CAAA;AAID,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAqBrC,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IA8BnC,CAAA"}
@@ -37,16 +37,18 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
37
37
  ],
38
38
  }));
39
39
  // VIEW
40
- const h = html();
41
- export const view = (model) => h.div([], [
42
- h.button([
43
- h.AriaLabel('pointer target'),
44
- h.OnPointerDown(pointerType => Option.some(PressedPointerDown({ pointerType }))),
45
- h.OnPointerUp((_screenX, _screenY, pointerType, _timeStamp) => Option.some(ReleasedPointerUp({ pointerType }))),
46
- ], [`down=${model.pointerDownCount} up=${model.pointerUpCount}`]),
47
- h.div([
48
- h.AriaLabel('nested target'),
49
- h.OnPointerDown(pointerType => Option.some(PressedPointerDown({ pointerType }))),
50
- ], [h.span([], [`type=${model.lastPointerType}`])]),
51
- h.span([h.AriaLabel('no handler')], ['orphan']),
52
- ]);
40
+ export const view = (model) => {
41
+ const h = html();
42
+ return h.div([], [
43
+ h.button([
44
+ h.AriaLabel('pointer target'),
45
+ h.OnPointerDown(pointerType => Option.some(PressedPointerDown({ pointerType }))),
46
+ h.OnPointerUp((_screenX, _screenY, pointerType, _timeStamp) => Option.some(ReleasedPointerUp({ pointerType }))),
47
+ ], [`down=${model.pointerDownCount} up=${model.pointerUpCount}`]),
48
+ h.div([
49
+ h.AriaLabel('nested target'),
50
+ h.OnPointerDown(pointerType => Option.some(PressedPointerDown({ pointerType }))),
51
+ ], [h.span([], [`type=${model.lastPointerType}`])]),
52
+ h.span([h.AriaLabel('no handler')], ['orphan']),
53
+ ]);
54
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"resumeUpload.d.ts","sourceRoot":"","sources":["../../../src/test/apps/resumeUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEvE,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,qBAAqB,CAAA;AAMrD,eAAO,MAAM,KAAK;;;;EAIhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,eAAO,MAAM,cAAc;;EAEzB,CAAA;AACF,eAAO,MAAM,qBAAqB,mFAA6B,CAAA;AAC/D,eAAO,MAAM,oBAAoB;;EAE/B,CAAA;AACF,eAAO,MAAM,iBAAiB,+EAAyB,CAAA;AACvD,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAE3D,eAAO,MAAM,OAAO;;;;oKAOlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY;;;;;iBAaxB,CAAA;AAED,eAAO,MAAM,iBAAiB;;;;;;;iBAU7B,CAAA;AAID,eAAO,MAAM,YAAY,EAAE,KAI1B,CAAA;AAID,KAAK,YAAY,GAAG,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAE7E,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO,KAAG,YAmCrD,CAAA;AAuBH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IAkBjC,CAAA"}
1
+ {"version":3,"file":"resumeUpload.d.ts","sourceRoot":"","sources":["../../../src/test/apps/resumeUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEvE,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,qBAAqB,CAAA;AAMrD,eAAO,MAAM,KAAK;;;;EAIhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,eAAO,MAAM,cAAc;;EAEzB,CAAA;AACF,eAAO,MAAM,qBAAqB,mFAA6B,CAAA;AAC/D,eAAO,MAAM,oBAAoB;;EAE/B,CAAA;AACF,eAAO,MAAM,iBAAiB,+EAAyB,CAAA;AACvD,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAE3D,eAAO,MAAM,OAAO;;;;oKAOlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY;;;;;iBAaxB,CAAA;AAED,eAAO,MAAM,iBAAiB;;;;;;;iBAU7B,CAAA;AAID,eAAO,MAAM,YAAY,EAAE,KAI1B,CAAA;AAID,KAAK,YAAY,GAAG,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAE7E,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO,KAAG,YAmCrD,CAAA;AAwBH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,IAqBnC,CAAA"}
@@ -73,18 +73,23 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
73
73
  ],
74
74
  }));
75
75
  // VIEW
76
- const h = html();
77
- const previewView = (model) => Option.match(model.maybePreviewDataUrl, {
78
- onSome: dataUrl => h.img([h.Src(dataUrl), h.Alt('Resume preview')]),
79
- onNone: () => M.value(model.readStatus).pipe(M.withReturnType(), M.when('Reading', () => h.keyed('p')('reading', [h.Role('status')], ['Reading preview...'])), M.when('Failed', () => h.keyed('p')('failed', [h.Role('alert')], ['Could not read preview'])), M.when('Idle', () => h.empty), M.exhaustive),
80
- });
81
- export const view = (model) => h.div([h.Class('resume-upload')], [
82
- Option.match(model.maybeResume, {
83
- onNone: () => h.button([h.OnClick(ClickedChooseResume())], ['Choose resume']),
84
- onSome: file => h.section([h.AriaLabel('Selected resume')], [
85
- h.p([h.Class('resume-name')], [File.name(file)]),
86
- previewView(model),
87
- h.button([h.OnClick(ClickedRemoveResume())], ['Remove']),
88
- ]),
89
- }),
90
- ]);
76
+ const previewView = (model) => {
77
+ const h = html();
78
+ return Option.match(model.maybePreviewDataUrl, {
79
+ onSome: dataUrl => h.img([h.Src(dataUrl), h.Alt('Resume preview')]),
80
+ onNone: () => M.value(model.readStatus).pipe(M.withReturnType(), M.when('Reading', () => h.keyed('p')('reading', [h.Role('status')], ['Reading preview...'])), M.when('Failed', () => h.keyed('p')('failed', [h.Role('alert')], ['Could not read preview'])), M.when('Idle', () => h.empty), M.exhaustive),
81
+ });
82
+ };
83
+ export const view = (model) => {
84
+ const h = html();
85
+ return h.div([h.Class('resume-upload')], [
86
+ Option.match(model.maybeResume, {
87
+ onNone: () => h.button([h.OnClick(ClickedChooseResume())], ['Choose resume']),
88
+ onSome: file => h.section([h.AriaLabel('Selected resume')], [
89
+ h.p([h.Class('resume-name')], [File.name(file)]),
90
+ previewView(model),
91
+ h.button([h.OnClick(ClickedRemoveResume())], ['Remove']),
92
+ ]),
93
+ }),
94
+ ]);
95
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foldkit",
3
- "version": "0.99.0",
3
+ "version": "0.100.1",
4
4
  "description": "A TypeScript frontend framework, built on Effect and architected like Elm",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",