foldkit 0.133.0 → 0.135.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -17
- package/dist/canvas/view.d.ts +18 -11
- package/dist/canvas/view.d.ts.map +1 -1
- package/dist/canvas/view.js +18 -11
- package/dist/customElement/index.d.ts +12 -6
- package/dist/customElement/index.d.ts.map +1 -1
- package/dist/customElement/index.js +17 -4
- package/dist/html/index.d.ts +625 -1601
- package/dist/html/index.d.ts.map +1 -1
- package/dist/html/index.js +52 -15
- package/dist/html/public.d.ts +2 -2
- package/dist/html/public.d.ts.map +1 -1
- package/dist/html/public.js +1 -1
- package/dist/html/runtimeSingleton.d.ts +1 -1
- package/dist/html/runtimeSingleton.d.ts.map +1 -1
- package/dist/html/runtimeSingleton.js +1 -1
- package/dist/html/submodel.d.ts +51 -19
- package/dist/html/submodel.d.ts.map +1 -1
- package/dist/html/submodel.js +37 -13
- package/dist/managedResource/managedResource.d.ts +21 -10
- package/dist/managedResource/managedResource.d.ts.map +1 -1
- package/dist/managedResource/managedResource.js +6 -1
- package/dist/runtime/crashUI.d.ts.map +1 -1
- package/dist/runtime/crashUI.js +29 -30
- package/dist/runtime/runtime.d.ts +9 -6
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +9 -8
- package/dist/test/apps/attributes.d.ts +2 -2
- package/dist/test/apps/attributes.d.ts.map +1 -1
- package/dist/test/apps/attributes.js +1 -3
- package/dist/test/apps/bubbling.d.ts +2 -2
- package/dist/test/apps/bubbling.d.ts.map +1 -1
- package/dist/test/apps/bubbling.js +1 -3
- package/dist/test/apps/colorPicker.d.ts +28 -0
- package/dist/test/apps/colorPicker.d.ts.map +1 -0
- package/dist/test/apps/colorPicker.js +43 -0
- package/dist/test/apps/counter.d.ts +5 -3
- package/dist/test/apps/counter.d.ts.map +1 -1
- package/dist/test/apps/counter.js +12 -7
- package/dist/test/apps/crashOnRender.d.ts +2 -2
- package/dist/test/apps/crashOnRender.d.ts.map +1 -1
- package/dist/test/apps/crashOnRender.js +1 -3
- package/dist/test/apps/drafts.d.ts +2 -2
- package/dist/test/apps/drafts.d.ts.map +1 -1
- package/dist/test/apps/drafts.js +1 -3
- package/dist/test/apps/feedSocket.d.ts +74 -0
- package/dist/test/apps/feedSocket.d.ts.map +1 -0
- package/dist/test/apps/feedSocket.js +69 -0
- package/dist/test/apps/fileUpload.d.ts +2 -2
- package/dist/test/apps/fileUpload.d.ts.map +1 -1
- package/dist/test/apps/fileUpload.js +1 -3
- package/dist/test/apps/interactions.d.ts +2 -2
- package/dist/test/apps/interactions.d.ts.map +1 -1
- package/dist/test/apps/interactions.js +1 -3
- package/dist/test/apps/keypress.d.ts +2 -2
- package/dist/test/apps/keypress.d.ts.map +1 -1
- package/dist/test/apps/keypress.js +1 -3
- package/dist/test/apps/login.d.ts +2 -2
- package/dist/test/apps/login.d.ts.map +1 -1
- package/dist/test/apps/login.js +1 -3
- package/dist/test/apps/logoutButton.d.ts +2 -2
- package/dist/test/apps/logoutButton.d.ts.map +1 -1
- package/dist/test/apps/logoutButton.js +1 -3
- package/dist/test/apps/mountPanel.d.ts +4 -4
- package/dist/test/apps/mountPanel.d.ts.map +1 -1
- package/dist/test/apps/mountPanel.js +3 -7
- package/dist/test/apps/multiRole.d.ts +2 -2
- package/dist/test/apps/multiRole.d.ts.map +1 -1
- package/dist/test/apps/multiRole.js +1 -3
- package/dist/test/apps/pointer.d.ts +2 -2
- package/dist/test/apps/pointer.d.ts.map +1 -1
- package/dist/test/apps/pointer.js +1 -3
- package/dist/test/apps/resumeUpload.d.ts +2 -2
- package/dist/test/apps/resumeUpload.d.ts.map +1 -1
- package/dist/test/apps/resumeUpload.js +3 -6
- package/dist/test/apps/scorePanel.d.ts +32 -0
- package/dist/test/apps/scorePanel.d.ts.map +1 -0
- package/dist/test/apps/scorePanel.js +19 -0
- package/dist/test/apps/uploads.d.ts +2 -2
- package/dist/test/apps/uploads.d.ts.map +1 -1
- package/dist/test/apps/uploads.js +1 -3
- package/dist/test/scene.d.ts +81 -9
- package/dist/test/scene.d.ts.map +1 -1
- package/dist/test/scene.js +206 -26
- package/dist/test/story.d.ts +4 -5
- package/dist/test/story.d.ts.map +1 -1
- package/dist/test/story.js +1 -2
- package/package.json +1 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Match as M, Schema as S } from 'effect';
|
|
2
|
-
import { html } from '../../html/index.js';
|
|
3
2
|
import { m } from '../../message/index.js';
|
|
4
3
|
// MODEL
|
|
5
4
|
export const Model = S.Struct({
|
|
@@ -24,8 +23,7 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
|
|
|
24
23
|
],
|
|
25
24
|
}));
|
|
26
25
|
// VIEW
|
|
27
|
-
export const view = (model) => {
|
|
28
|
-
const h = html();
|
|
26
|
+
export const view = (model, h) => {
|
|
29
27
|
return h.div([], [
|
|
30
28
|
h.div([h.Role('option'), h.OnClick(ClickedContainer())], [h.span([], [`clicks=${model.clicks}`])]),
|
|
31
29
|
h.div([h.Role('listitem'), h.OnDoubleClick(DoubleClickedContainer())], [h.span([], [`dbl=${model.doubleClicks}`])]),
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Schema as S } from 'effect';
|
|
2
|
+
import * as CustomElement from '../../customElement/index.js';
|
|
3
|
+
import type { Html, HtmlBuilder } from '../../html/index.js';
|
|
4
|
+
export declare const hexColorPicker: CustomElement.CustomElementSpec<"hex-color-picker", {
|
|
5
|
+
color: S.String;
|
|
6
|
+
}, {
|
|
7
|
+
'color-changed': S.Struct<{
|
|
8
|
+
readonly value: S.String;
|
|
9
|
+
}>;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const Model: S.Struct<{
|
|
12
|
+
readonly color: S.String;
|
|
13
|
+
}>;
|
|
14
|
+
export type Model = typeof Model.Type;
|
|
15
|
+
export declare const ChangedColor: import("../../schema/index.js").CallableTaggedStruct<"ChangedColor", {
|
|
16
|
+
value: S.String;
|
|
17
|
+
}>;
|
|
18
|
+
export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"ChangedColor", {
|
|
19
|
+
value: S.String;
|
|
20
|
+
}>]>;
|
|
21
|
+
export type Message = typeof Message.Type;
|
|
22
|
+
export declare const initialModel: {
|
|
23
|
+
readonly color: string;
|
|
24
|
+
};
|
|
25
|
+
export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<never>];
|
|
26
|
+
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
27
|
+
export declare const viewWithoutHandler: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
28
|
+
//# sourceMappingURL=colorPicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorPicker.d.ts","sourceRoot":"","sources":["../../../src/test/apps/colorPicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhD,OAAO,KAAK,aAAa,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAM5D,eAAO,MAAM,cAAc;;;;;;EAQzB,CAAA;AAIF,eAAO,MAAM,KAAK;;EAAgC,CAAA;AAClD,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,YAAY;;EAAyC,CAAA;AAElE,eAAO,MAAM,OAAO;;IAA0B,CAAA;AAC9C,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY;;CAAmC,CAAA;AAI5D,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,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAkB5D,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC7B,OAAO,KAAK,EACZ,GAAG,WAAW,CAAC,OAAO,CAAC,KACtB,IAUF,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Match as M, Schema as S } from 'effect';
|
|
2
|
+
import * as CustomElement from '../../customElement/index.js';
|
|
3
|
+
import { m } from '../../message/index.js';
|
|
4
|
+
import { evo } from '../../struct/index.js';
|
|
5
|
+
// CUSTOM ELEMENT
|
|
6
|
+
export const hexColorPicker = CustomElement.define({
|
|
7
|
+
tag: 'hex-color-picker',
|
|
8
|
+
properties: {
|
|
9
|
+
color: S.String,
|
|
10
|
+
},
|
|
11
|
+
events: {
|
|
12
|
+
'color-changed': S.Struct({ value: S.String }),
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
// MODEL
|
|
16
|
+
export const Model = S.Struct({ color: S.String });
|
|
17
|
+
// MESSAGE
|
|
18
|
+
export const ChangedColor = m('ChangedColor', { value: S.String });
|
|
19
|
+
export const Message = S.Union([ChangedColor]);
|
|
20
|
+
// INIT
|
|
21
|
+
export const initialModel = Model.make({ color: '#000000' });
|
|
22
|
+
// UPDATE
|
|
23
|
+
export const update = (model, message) => M.value(message).pipe(M.withReturnType(), M.tagsExhaustive({
|
|
24
|
+
ChangedColor: ({ value }) => [evo(model, { color: () => value }), []],
|
|
25
|
+
}));
|
|
26
|
+
// VIEW
|
|
27
|
+
export const view = (model, h) => {
|
|
28
|
+
const picker = hexColorPicker.withMessage(h);
|
|
29
|
+
return h.div([], [
|
|
30
|
+
picker([
|
|
31
|
+
picker.Color(model.color),
|
|
32
|
+
picker.OnColorChanged(detail => ChangedColor({ value: detail.value })),
|
|
33
|
+
], []),
|
|
34
|
+
h.span([h.Role('status')], [model.color]),
|
|
35
|
+
]);
|
|
36
|
+
};
|
|
37
|
+
export const viewWithoutHandler = (model, h) => {
|
|
38
|
+
const picker = hexColorPicker.withMessage(h);
|
|
39
|
+
return h.div([], [
|
|
40
|
+
picker([picker.Color(model.color)], []),
|
|
41
|
+
h.span([h.Role('status')], [model.color]),
|
|
42
|
+
]);
|
|
43
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect, Schema as S } from 'effect';
|
|
2
2
|
import * as Command from '../../command/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import type { Html, HtmlBuilder } from '../../html/index.js';
|
|
4
4
|
export declare const Model: S.Struct<{
|
|
5
5
|
readonly count: S.Number;
|
|
6
6
|
readonly log: S.$Array<S.Number>;
|
|
@@ -12,6 +12,8 @@ export declare const ClickedFetch: import("../../schema/index.js").CallableTagge
|
|
|
12
12
|
export declare const ClickedFetchById: import("../../schema/index.js").CallableTaggedStruct<"ClickedFetchById", {
|
|
13
13
|
id: S.Number;
|
|
14
14
|
}>;
|
|
15
|
+
export declare const Ticked: import("../../schema/index.js").CallableTaggedStruct<"Ticked", {}>;
|
|
16
|
+
export declare const PolledCount: import("../../schema/index.js").CallableTaggedStruct<"PolledCount", {}>;
|
|
15
17
|
export declare const StartedThreeFetches: import("../../schema/index.js").CallableTaggedStruct<"StartedThreeFetches", {}>;
|
|
16
18
|
export declare const StartedTwoFetchesById: import("../../schema/index.js").CallableTaggedStruct<"StartedTwoFetchesById", {}>;
|
|
17
19
|
export declare const StartedMixedFetches: import("../../schema/index.js").CallableTaggedStruct<"StartedMixedFetches", {}>;
|
|
@@ -23,7 +25,7 @@ export declare const FailedFetchCount: import("../../schema/index.js").CallableT
|
|
|
23
25
|
}>;
|
|
24
26
|
export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"ClickedIncrement", {}>, import("../../schema/index.js").CallableTaggedStruct<"ClickedDecrement", {}>, import("../../schema/index.js").CallableTaggedStruct<"ClickedFetch", {}>, import("../../schema/index.js").CallableTaggedStruct<"ClickedFetchById", {
|
|
25
27
|
id: S.Number;
|
|
26
|
-
}>, import("../../schema/index.js").CallableTaggedStruct<"StartedThreeFetches", {}>, import("../../schema/index.js").CallableTaggedStruct<"StartedTwoFetchesById", {}>, import("../../schema/index.js").CallableTaggedStruct<"StartedMixedFetches", {}>, import("../../schema/index.js").CallableTaggedStruct<"SucceededFetchCount", {
|
|
28
|
+
}>, import("../../schema/index.js").CallableTaggedStruct<"Ticked", {}>, import("../../schema/index.js").CallableTaggedStruct<"PolledCount", {}>, import("../../schema/index.js").CallableTaggedStruct<"StartedThreeFetches", {}>, import("../../schema/index.js").CallableTaggedStruct<"StartedTwoFetchesById", {}>, import("../../schema/index.js").CallableTaggedStruct<"StartedMixedFetches", {}>, import("../../schema/index.js").CallableTaggedStruct<"SucceededFetchCount", {
|
|
27
29
|
count: S.Number;
|
|
28
30
|
}>, import("../../schema/index.js").CallableTaggedStruct<"FailedFetchCount", {
|
|
29
31
|
error: S.String;
|
|
@@ -41,5 +43,5 @@ export declare const FetchCountById: Command.CommandDefinitionWithArgs<"FetchCou
|
|
|
41
43
|
}, never, never>>;
|
|
42
44
|
export declare const initialModel: Model;
|
|
43
45
|
export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<Command.Command<Message>>];
|
|
44
|
-
export declare const view: (model: Model) => Html;
|
|
46
|
+
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
45
47
|
//# sourceMappingURL=counter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"counter.d.ts","sourceRoot":"","sources":["../../../src/test/apps/counter.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"counter.d.ts","sourceRoot":"","sources":["../../../src/test/apps/counter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEvE,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAM5D,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,gBAAgB,8EAAwB,CAAA;AACrD,eAAO,MAAM,gBAAgB,8EAAwB,CAAA;AACrD,eAAO,MAAM,YAAY,0EAAoB,CAAA;AAC7C,eAAO,MAAM,gBAAgB;;EAA0C,CAAA;AACvE,eAAO,MAAM,MAAM,oEAAc,CAAA;AACjC,eAAO,MAAM,WAAW,yEAAmB,CAAA;AAC3C,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,eAAO,MAAM,qBAAqB,mFAA6B,CAAA;AAC/D,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,eAAO,MAAM,mBAAmB;;EAAgD,CAAA;AAChF,eAAO,MAAM,gBAAgB;;EAA6C,CAAA;AAE1E,eAAO,MAAM,OAAO;;;;;;IAYlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,UAAU;;;iBAIgC,CAAA;AAEvD,eAAO,MAAM,cAAc;;;;;iBAKyC,CAAA;AAIpE,eAAO,MAAM,YAAY,EAAE,KAA6B,CAAA;AAIxD,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAmCxD,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAe5D,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Effect, Match as M, Schema as S } from 'effect';
|
|
1
|
+
import { Array, Effect, Match as M, Number, Schema as S } from 'effect';
|
|
2
2
|
import * as Command from '../../command/index.js';
|
|
3
|
-
import { html } from '../../html/index.js';
|
|
4
3
|
import { m } from '../../message/index.js';
|
|
4
|
+
import { evo } from '../../struct/index.js';
|
|
5
5
|
// MODEL
|
|
6
6
|
export const Model = S.Struct({
|
|
7
7
|
count: S.Number,
|
|
@@ -12,6 +12,8 @@ export const ClickedIncrement = m('ClickedIncrement');
|
|
|
12
12
|
export const ClickedDecrement = m('ClickedDecrement');
|
|
13
13
|
export const ClickedFetch = m('ClickedFetch');
|
|
14
14
|
export const ClickedFetchById = m('ClickedFetchById', { id: S.Number });
|
|
15
|
+
export const Ticked = m('Ticked');
|
|
16
|
+
export const PolledCount = m('PolledCount');
|
|
15
17
|
export const StartedThreeFetches = m('StartedThreeFetches');
|
|
16
18
|
export const StartedTwoFetchesById = m('StartedTwoFetchesById');
|
|
17
19
|
export const StartedMixedFetches = m('StartedMixedFetches');
|
|
@@ -22,6 +24,8 @@ export const Message = S.Union([
|
|
|
22
24
|
ClickedDecrement,
|
|
23
25
|
ClickedFetch,
|
|
24
26
|
ClickedFetchById,
|
|
27
|
+
Ticked,
|
|
28
|
+
PolledCount,
|
|
25
29
|
StartedThreeFetches,
|
|
26
30
|
StartedTwoFetchesById,
|
|
27
31
|
StartedMixedFetches,
|
|
@@ -35,10 +39,12 @@ export const FetchCountById = Command.define('FetchCountById', { id: S.Number },
|
|
|
35
39
|
export const initialModel = { count: 0, log: [] };
|
|
36
40
|
// UPDATE
|
|
37
41
|
export const update = (model, message) => M.value(message).pipe(M.withReturnType(), M.tagsExhaustive({
|
|
38
|
-
ClickedIncrement: () => [
|
|
39
|
-
ClickedDecrement: () => [
|
|
42
|
+
ClickedIncrement: () => [evo(model, { count: Number.increment }), []],
|
|
43
|
+
ClickedDecrement: () => [evo(model, { count: Number.decrement }), []],
|
|
40
44
|
ClickedFetch: () => [model, [FetchCount()]],
|
|
41
45
|
ClickedFetchById: ({ id }) => [model, [FetchCountById({ id })]],
|
|
46
|
+
Ticked: () => [evo(model, { count: Number.increment }), []],
|
|
47
|
+
PolledCount: () => [model, [FetchCount()]],
|
|
42
48
|
StartedThreeFetches: () => [
|
|
43
49
|
model,
|
|
44
50
|
[FetchCount(), FetchCount(), FetchCount()],
|
|
@@ -57,14 +63,13 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
|
|
|
57
63
|
],
|
|
58
64
|
],
|
|
59
65
|
SucceededFetchCount: ({ count }) => [
|
|
60
|
-
{ count, log:
|
|
66
|
+
evo(model, { count: () => count, log: Array.append(count) }),
|
|
61
67
|
[],
|
|
62
68
|
],
|
|
63
69
|
FailedFetchCount: () => [model, []],
|
|
64
70
|
}));
|
|
65
71
|
// VIEW
|
|
66
|
-
export const view = (model) => {
|
|
67
|
-
const h = html();
|
|
72
|
+
export const view = (model, h) => {
|
|
68
73
|
return h.div([], [
|
|
69
74
|
h.span([h.Role('status')], [`count: ${model.count}`]),
|
|
70
75
|
h.button([h.OnClick(StartedThreeFetches()), h.Role('button')], ['Start three fetches']),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect, Schema as S } from 'effect';
|
|
2
2
|
import * as Command from '../../command/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import type { Document, HtmlBuilder } from '../../html/index.js';
|
|
4
4
|
export declare const RawSource: S.Struct<{
|
|
5
5
|
readonly kind: S.Literal<"Book">;
|
|
6
6
|
readonly id: S.String;
|
|
@@ -60,5 +60,5 @@ export declare const validSources: ReadonlyArray<RawSource>;
|
|
|
60
60
|
export declare const malformedSources: ReadonlyArray<RawSource>;
|
|
61
61
|
export declare const initialModel: Model;
|
|
62
62
|
export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<Command.Command<Message>>];
|
|
63
|
-
export declare const view: (model: Model) => Document;
|
|
63
|
+
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Document;
|
|
64
64
|
//# sourceMappingURL=crashOnRender.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crashOnRender.d.ts","sourceRoot":"","sources":["../../../src/test/apps/crashOnRender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE/D,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"crashOnRender.d.ts","sourceRoot":"","sources":["../../../src/test/apps/crashOnRender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE/D,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAMhE,eAAO,MAAM,SAAS;;;EAGpB,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;AAK7C,eAAO,MAAM,MAAM;;;EAGjB,CAAA;AACF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AAEvC,eAAO,MAAM,KAAK;;;;;EAEhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,aAAa;;;;;EAAsD,CAAA;AAChF,eAAO,MAAM,cAAc;;;;;EAA0C,CAAA;AACrE,eAAO,MAAM,oBAAoB;;EAA8C,CAAA;AAE/E,eAAO,MAAM,OAAO;;;;;;;;;;;;IAKlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAMzC,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,SAAS,CAGpD,CAAA;AAED,eAAO,MAAM,aAAa;;;;;;iBAGoC,CAAA;AAI9D,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,SAAS,CAEjD,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,SAAS,CAErD,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAAiC,CAAA;AAI5D,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAiBxD,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,QA4B5D,CAAA"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Array, Effect, Match as M, Schema as S } from 'effect';
|
|
2
2
|
import * as Command from '../../command/index.js';
|
|
3
|
-
import { html } from '../../html/index.js';
|
|
4
3
|
import { m } from '../../message/index.js';
|
|
5
4
|
import { evo } from '../../struct/index.js';
|
|
6
5
|
// MODEL
|
|
@@ -59,8 +58,7 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
|
|
|
59
58
|
},
|
|
60
59
|
}));
|
|
61
60
|
// VIEW
|
|
62
|
-
export const view = (model) => {
|
|
63
|
-
const h = html();
|
|
61
|
+
export const view = (model, h) => {
|
|
64
62
|
const body = h.div([], [
|
|
65
63
|
h.button([h.OnClick(ClickedReload()), h.Role('button')], ['Reload']),
|
|
66
64
|
h.button([h.OnClick(SubmittedNewSourceId({ id: '' })), h.Role('button')], ['Add source']),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Effect, Schema as S } from 'effect';
|
|
2
2
|
import * as Command from '../../command/index.js';
|
|
3
3
|
import * as Interruptible from '../../command/interruptible/index.js';
|
|
4
|
-
import {
|
|
4
|
+
import type { Document, HtmlBuilder } from '../../html/index.js';
|
|
5
5
|
export declare const SaveStatus: S.Literals<readonly ["Editing", "Saving", "Saved"]>;
|
|
6
6
|
export type SaveStatus = typeof SaveStatus.Type;
|
|
7
7
|
export declare const Model: S.Struct<{
|
|
@@ -29,5 +29,5 @@ export declare const SaveDraft: Interruptible.DefinitionWithArgsNameKeyed<"SaveD
|
|
|
29
29
|
}, never, never>>;
|
|
30
30
|
export declare const initialModel: Model;
|
|
31
31
|
export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<Command.Command<Message>>];
|
|
32
|
-
export declare const view: (model: Model) => Document;
|
|
32
|
+
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Document;
|
|
33
33
|
//# sourceMappingURL=drafts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drafts.d.ts","sourceRoot":"","sources":["../../../src/test/apps/drafts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,aAAa,MAAM,sCAAsC,CAAA;AACrE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"drafts.d.ts","sourceRoot":"","sources":["../../../src/test/apps/drafts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,aAAa,MAAM,sCAAsC,CAAA;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAMhE,eAAO,MAAM,UAAU,qDAA6C,CAAA;AACpE,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAE/C,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,gBAAgB,8EAAwB,CAAA;AACrD,eAAO,MAAM,kBAAkB;;EAE7B,CAAA;AAEF,eAAO,MAAM,OAAO;;IAAkD,CAAA;AACtE,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,aAAa;;EAAmC,CAAA;AAC7D,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAErD,eAAO,MAAM,SAAS;;;;;iBAIwD,CAAA;AAI9E,eAAO,MAAM,YAAY,EAAE,KAA0C,CAAA;AAIrE,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAYxD,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,QAU5D,CAAA"}
|
package/dist/test/apps/drafts.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Effect, Match as M, Schema as S } from 'effect';
|
|
2
2
|
import * as Interruptible from '../../command/interruptible/index.js';
|
|
3
|
-
import { html } from '../../html/index.js';
|
|
4
3
|
import { m } from '../../message/index.js';
|
|
5
4
|
import { evo } from '../../struct/index.js';
|
|
6
5
|
// MODEL
|
|
@@ -29,8 +28,7 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
|
|
|
29
28
|
SucceededSaveDraft: () => [evo(model, { status: () => 'Saved' }), []],
|
|
30
29
|
}));
|
|
31
30
|
// VIEW
|
|
32
|
-
export const view = (model) => {
|
|
33
|
-
const h = html();
|
|
31
|
+
export const view = (model, h) => {
|
|
34
32
|
const body = h.div([], [
|
|
35
33
|
h.button([h.OnClick(ClickedSaveDraft())], ['Save draft']),
|
|
36
34
|
h.span([], [`draft: ${model.status}`]),
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Option, Schema as S } from 'effect';
|
|
2
|
+
import type { Html, HtmlBuilder } from '../../html/index.js';
|
|
3
|
+
import * as ManagedResource from '../../managedResource/index.js';
|
|
4
|
+
export declare const Model: S.Struct<{
|
|
5
|
+
readonly isFeedOpen: S.Boolean;
|
|
6
|
+
readonly status: S.Literals<readonly ["Disconnected", "Connected", "Failed"]>;
|
|
7
|
+
}>;
|
|
8
|
+
export type Model = typeof Model.Type;
|
|
9
|
+
export declare const ClickedToggleFeed: import("../../schema/index.js").CallableTaggedStruct<"ClickedToggleFeed", {}>;
|
|
10
|
+
export declare const AcquiredFeedSocket: import("../../schema/index.js").CallableTaggedStruct<"AcquiredFeedSocket", {
|
|
11
|
+
socketId: S.String;
|
|
12
|
+
}>;
|
|
13
|
+
export declare const ReleasedFeedSocket: import("../../schema/index.js").CallableTaggedStruct<"ReleasedFeedSocket", {}>;
|
|
14
|
+
export declare const FailedAcquireFeedSocket: import("../../schema/index.js").CallableTaggedStruct<"FailedAcquireFeedSocket", {
|
|
15
|
+
error: S.String;
|
|
16
|
+
}>;
|
|
17
|
+
export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"ClickedToggleFeed", {}>, import("../../schema/index.js").CallableTaggedStruct<"AcquiredFeedSocket", {
|
|
18
|
+
socketId: S.String;
|
|
19
|
+
}>, import("../../schema/index.js").CallableTaggedStruct<"ReleasedFeedSocket", {}>, import("../../schema/index.js").CallableTaggedStruct<"FailedAcquireFeedSocket", {
|
|
20
|
+
error: S.String;
|
|
21
|
+
}>]>;
|
|
22
|
+
export type Message = typeof Message.Type;
|
|
23
|
+
export type FeedSocket = Readonly<{
|
|
24
|
+
socketId: string;
|
|
25
|
+
}>;
|
|
26
|
+
export declare const feedResources: {
|
|
27
|
+
feedSocket: ManagedResource.Entry<{
|
|
28
|
+
readonly isFeedOpen: boolean;
|
|
29
|
+
readonly status: "Disconnected" | "Connected" | "Failed";
|
|
30
|
+
}, {
|
|
31
|
+
readonly _tag: "ClickedToggleFeed";
|
|
32
|
+
} | {
|
|
33
|
+
readonly _tag: "AcquiredFeedSocket";
|
|
34
|
+
readonly socketId: string;
|
|
35
|
+
} | {
|
|
36
|
+
readonly _tag: "ReleasedFeedSocket";
|
|
37
|
+
} | {
|
|
38
|
+
readonly _tag: "FailedAcquireFeedSocket";
|
|
39
|
+
readonly error: string;
|
|
40
|
+
}, Option.Option<{
|
|
41
|
+
readonly channel: string;
|
|
42
|
+
}>, Readonly<{
|
|
43
|
+
socketId: string;
|
|
44
|
+
}>, ManagedResource.ManagedResourceService<"FeedSocket">, (socket: Readonly<{
|
|
45
|
+
socketId: string;
|
|
46
|
+
}>) => {
|
|
47
|
+
readonly _tag: "AcquiredFeedSocket";
|
|
48
|
+
readonly socketId: string;
|
|
49
|
+
}>;
|
|
50
|
+
presence: ManagedResource.Entry<{
|
|
51
|
+
readonly isFeedOpen: boolean;
|
|
52
|
+
readonly status: "Disconnected" | "Connected" | "Failed";
|
|
53
|
+
}, {
|
|
54
|
+
readonly _tag: "ClickedToggleFeed";
|
|
55
|
+
} | {
|
|
56
|
+
readonly _tag: "AcquiredFeedSocket";
|
|
57
|
+
readonly socketId: string;
|
|
58
|
+
} | {
|
|
59
|
+
readonly _tag: "ReleasedFeedSocket";
|
|
60
|
+
} | {
|
|
61
|
+
readonly _tag: "FailedAcquireFeedSocket";
|
|
62
|
+
readonly error: string;
|
|
63
|
+
}, Option.Option<null>, string, ManagedResource.ManagedResourceService<"Presence">, () => {
|
|
64
|
+
readonly _tag: "AcquiredFeedSocket";
|
|
65
|
+
readonly socketId: string;
|
|
66
|
+
}>;
|
|
67
|
+
};
|
|
68
|
+
export declare const initialModel: {
|
|
69
|
+
readonly isFeedOpen: boolean;
|
|
70
|
+
readonly status: "Disconnected" | "Connected" | "Failed";
|
|
71
|
+
};
|
|
72
|
+
export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<never>];
|
|
73
|
+
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
74
|
+
//# sourceMappingURL=feedSocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedSocket.d.ts","sourceRoot":"","sources":["../../../src/test/apps/feedSocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEzE,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,eAAe,MAAM,gCAAgC,CAAA;AAMjE,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,iBAAiB,+EAAyB,CAAA;AACvD,eAAO,MAAM,kBAAkB;;EAE7B,CAAA;AACF,eAAO,MAAM,kBAAkB,gFAA0B,CAAA;AACzD,eAAO,MAAM,uBAAuB;;EAElC,CAAA;AAEF,eAAO,MAAM,OAAO;;;;IAKlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAMvD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;kBANoB,MAAM;;kBAAN,MAAM;;;;;;;;;;;;;;;;;;;;;;CA2BjD,CAAA;AAIH,eAAO,MAAM,YAAY;;;CAGvB,CAAA;AAIF,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAerC,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAU1D,CAAA"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Boolean, Effect, Match as M, Option, Schema as S } from 'effect';
|
|
2
|
+
import * as ManagedResource from '../../managedResource/index.js';
|
|
3
|
+
import { m } from '../../message/index.js';
|
|
4
|
+
import { evo } from '../../struct/index.js';
|
|
5
|
+
// MODEL
|
|
6
|
+
export const Model = S.Struct({
|
|
7
|
+
isFeedOpen: S.Boolean,
|
|
8
|
+
status: S.Literals(['Disconnected', 'Connected', 'Failed']),
|
|
9
|
+
});
|
|
10
|
+
// MESSAGE
|
|
11
|
+
export const ClickedToggleFeed = m('ClickedToggleFeed');
|
|
12
|
+
export const AcquiredFeedSocket = m('AcquiredFeedSocket', {
|
|
13
|
+
socketId: S.String,
|
|
14
|
+
});
|
|
15
|
+
export const ReleasedFeedSocket = m('ReleasedFeedSocket');
|
|
16
|
+
export const FailedAcquireFeedSocket = m('FailedAcquireFeedSocket', {
|
|
17
|
+
error: S.String,
|
|
18
|
+
});
|
|
19
|
+
export const Message = S.Union([
|
|
20
|
+
ClickedToggleFeed,
|
|
21
|
+
AcquiredFeedSocket,
|
|
22
|
+
ReleasedFeedSocket,
|
|
23
|
+
FailedAcquireFeedSocket,
|
|
24
|
+
]);
|
|
25
|
+
const FeedSocketResource = ManagedResource.tag()('FeedSocket');
|
|
26
|
+
const PresenceResource = ManagedResource.tag()('Presence');
|
|
27
|
+
export const feedResources = ManagedResource.make()(entry => ({
|
|
28
|
+
feedSocket: entry(S.Option(S.Struct({ channel: S.String })), {
|
|
29
|
+
resource: FeedSocketResource,
|
|
30
|
+
modelToMaybeRequirements: model => model.isFeedOpen ? Option.some({ channel: 'general' }) : Option.none(),
|
|
31
|
+
acquire: () => Effect.succeed({ socketId: 'live' }),
|
|
32
|
+
release: () => Effect.void,
|
|
33
|
+
onAcquired: socket => AcquiredFeedSocket({ socketId: socket.socketId }),
|
|
34
|
+
onReleased: () => ReleasedFeedSocket(),
|
|
35
|
+
onAcquireError: error => FailedAcquireFeedSocket({ error: String(error) }),
|
|
36
|
+
}),
|
|
37
|
+
presence: entry(S.Option(S.Null), {
|
|
38
|
+
resource: PresenceResource,
|
|
39
|
+
modelToMaybeRequirements: model => model.isFeedOpen ? Option.some(null) : Option.none(),
|
|
40
|
+
acquire: () => Effect.succeed('online'),
|
|
41
|
+
release: () => Effect.void,
|
|
42
|
+
onAcquired: () => AcquiredFeedSocket({ socketId: 'presence' }),
|
|
43
|
+
onReleased: () => ReleasedFeedSocket(),
|
|
44
|
+
onAcquireError: error => FailedAcquireFeedSocket({ error: String(error) }),
|
|
45
|
+
}),
|
|
46
|
+
}));
|
|
47
|
+
// INIT
|
|
48
|
+
export const initialModel = Model.make({
|
|
49
|
+
isFeedOpen: false,
|
|
50
|
+
status: 'Disconnected',
|
|
51
|
+
});
|
|
52
|
+
// UPDATE
|
|
53
|
+
export const update = (model, message) => M.value(message).pipe(M.withReturnType(), M.tagsExhaustive({
|
|
54
|
+
ClickedToggleFeed: () => [evo(model, { isFeedOpen: Boolean.not }), []],
|
|
55
|
+
AcquiredFeedSocket: () => [evo(model, { status: () => 'Connected' }), []],
|
|
56
|
+
ReleasedFeedSocket: () => [
|
|
57
|
+
evo(model, { status: () => 'Disconnected' }),
|
|
58
|
+
[],
|
|
59
|
+
],
|
|
60
|
+
FailedAcquireFeedSocket: () => [
|
|
61
|
+
evo(model, { status: () => 'Failed' }),
|
|
62
|
+
[],
|
|
63
|
+
],
|
|
64
|
+
}));
|
|
65
|
+
// VIEW
|
|
66
|
+
export const view = (model, h) => h.div([], [
|
|
67
|
+
h.span([h.Role('status')], [model.status]),
|
|
68
|
+
h.button([h.OnClick(ClickedToggleFeed()), h.Role('button')], [model.isFeedOpen ? 'Close feed' : 'Open feed']),
|
|
69
|
+
]);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Schema as S } from 'effect';
|
|
2
2
|
import { File } from '../../file/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import type { Html, HtmlBuilder } from '../../html/index.js';
|
|
4
4
|
export type Model = Readonly<{
|
|
5
5
|
receivedFiles: ReadonlyArray<File>;
|
|
6
6
|
}>;
|
|
@@ -13,5 +13,5 @@ export declare const Message: S.Union<readonly [import("../../schema/index.js").
|
|
|
13
13
|
}>]>;
|
|
14
14
|
export type Message = typeof Message.Type;
|
|
15
15
|
export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<never>];
|
|
16
|
-
export declare const view: (model: Model) => Html;
|
|
16
|
+
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
17
17
|
//# sourceMappingURL=fileUpload.d.ts.map
|
|
@@ -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,
|
|
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,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAK5D,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,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IA4B5D,CAAA"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Match as M, Schema as S } from 'effect';
|
|
2
2
|
import { File } from '../../file/index.js';
|
|
3
|
-
import { html } from '../../html/index.js';
|
|
4
3
|
import { m } from '../../message/index.js';
|
|
5
4
|
export const initialModel = { receivedFiles: [] };
|
|
6
5
|
// MESSAGE
|
|
@@ -11,8 +10,7 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
|
|
|
11
10
|
ReceivedFiles: ({ files }) => [{ ...model, receivedFiles: files }, []],
|
|
12
11
|
}));
|
|
13
12
|
// VIEW
|
|
14
|
-
export const view = (model) => {
|
|
15
|
-
const h = html();
|
|
13
|
+
export const view = (model, h) => {
|
|
16
14
|
return h.div([], [
|
|
17
15
|
h.input([
|
|
18
16
|
h.Key('file-input'),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Schema as S } from 'effect';
|
|
2
|
-
import {
|
|
2
|
+
import type { Html, HtmlBuilder } from '../../html/index.js';
|
|
3
3
|
export declare const Model: S.Struct<{
|
|
4
4
|
readonly clicks: S.Number;
|
|
5
5
|
readonly doubleClicks: S.Number;
|
|
@@ -22,5 +22,5 @@ export declare const Message: S.Union<readonly [import("../../schema/index.js").
|
|
|
22
22
|
export type Message = typeof Message.Type;
|
|
23
23
|
export declare const initialModel: Model;
|
|
24
24
|
export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<never>];
|
|
25
|
-
export declare const view: (model: Model) => Html;
|
|
25
|
+
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
26
26
|
//# sourceMappingURL=interactions.d.ts.map
|
|
@@ -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,
|
|
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,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAK5D,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,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IA4B5D,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Match as M, Schema as S } from 'effect';
|
|
2
|
-
import { html } from '../../html/index.js';
|
|
3
2
|
import { m } from '../../message/index.js';
|
|
4
3
|
// MODEL
|
|
5
4
|
export const Model = S.Struct({
|
|
@@ -45,8 +44,7 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
|
|
|
45
44
|
ChangedSelect: ({ value }) => [{ ...model, changed: value }, []],
|
|
46
45
|
}));
|
|
47
46
|
// VIEW
|
|
48
|
-
export const view = (model) => {
|
|
49
|
-
const h = html();
|
|
47
|
+
export const view = (model, h) => {
|
|
50
48
|
return h.div([], [
|
|
51
49
|
h.button([
|
|
52
50
|
h.OnClick(ClickedButton()),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Schema as S } from 'effect';
|
|
2
|
-
import type { Html } from '../../html/index.js';
|
|
2
|
+
import type { Html, HtmlBuilder } from '../../html/index.js';
|
|
3
3
|
export declare const Model: S.Struct<{
|
|
4
4
|
readonly lastKey: S.String;
|
|
5
5
|
readonly isShifted: S.Boolean;
|
|
@@ -19,5 +19,5 @@ export declare const Message: S.Union<readonly [import("../../schema/index.js").
|
|
|
19
19
|
export type Message = typeof Message.Type;
|
|
20
20
|
export declare const initialModel: Model;
|
|
21
21
|
export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<never>];
|
|
22
|
-
export declare const view: (model: Model) => Html;
|
|
22
|
+
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
23
23
|
//# sourceMappingURL=keypress.d.ts.map
|
|
@@ -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;
|
|
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,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAK5D,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,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAkB5D,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Match as M, Schema as S } from 'effect';
|
|
2
|
-
import { html } from '../../html/index.js';
|
|
3
2
|
import { m } from '../../message/index.js';
|
|
4
3
|
// MODEL
|
|
5
4
|
export const Model = S.Struct({
|
|
@@ -27,8 +26,7 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
|
|
|
27
26
|
],
|
|
28
27
|
}));
|
|
29
28
|
// VIEW
|
|
30
|
-
export const view = (model) => {
|
|
31
|
-
const h = html();
|
|
29
|
+
export const view = (model, h) => {
|
|
32
30
|
return h.div([
|
|
33
31
|
h.Id('key-app'),
|
|
34
32
|
h.Role('application'),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect, Schema as S } from 'effect';
|
|
2
2
|
import * as Command from '../../command/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import type { Html, HtmlBuilder } from '../../html/index.js';
|
|
4
4
|
export declare const Model: S.Struct<{
|
|
5
5
|
readonly email: S.String;
|
|
6
6
|
readonly password: S.String;
|
|
@@ -39,5 +39,5 @@ export declare const Authenticate: Command.CommandDefinitionNoArgs<"Authenticate
|
|
|
39
39
|
}, never, never>>;
|
|
40
40
|
export declare const initialModel: Model;
|
|
41
41
|
export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<Command.Command<Message>>];
|
|
42
|
-
export declare const view: (model: Model) => Html;
|
|
42
|
+
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
43
43
|
//# sourceMappingURL=login.d.ts.map
|
|
@@ -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,
|
|
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,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAK5D,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,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IA8E5D,CAAA"}
|
package/dist/test/apps/login.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Effect, Match as M, Schema as S } from 'effect';
|
|
2
2
|
import * as Command from '../../command/index.js';
|
|
3
|
-
import { html } from '../../html/index.js';
|
|
4
3
|
import { m } from '../../message/index.js';
|
|
5
4
|
// MODEL
|
|
6
5
|
export const Model = S.Struct({
|
|
@@ -59,8 +58,7 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
|
|
|
59
58
|
],
|
|
60
59
|
}));
|
|
61
60
|
// VIEW
|
|
62
|
-
export const view = (model) => {
|
|
63
|
-
const h = html();
|
|
61
|
+
export const view = (model, h) => {
|
|
64
62
|
return h.div([h.Id('app')], [
|
|
65
63
|
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
64
|
h.Class('logged-in'),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Option, Schema as S } from 'effect';
|
|
2
|
-
import type { Html } from '../../html/index.js';
|
|
2
|
+
import type { Html, HtmlBuilder } from '../../html/index.js';
|
|
3
3
|
export declare const Model: S.Struct<{
|
|
4
4
|
readonly label: S.String;
|
|
5
5
|
}>;
|
|
@@ -13,5 +13,5 @@ export declare const OutMessage: S.Union<readonly [import("../../schema/index.js
|
|
|
13
13
|
export type OutMessage = typeof OutMessage.Type;
|
|
14
14
|
export declare const initialModel: Model;
|
|
15
15
|
export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<never>, Option.Option<OutMessage>];
|
|
16
|
-
export declare const view: (model: Model) => Html;
|
|
16
|
+
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
17
17
|
//# sourceMappingURL=logoutButton.d.ts.map
|
|
@@ -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;
|
|
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,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAK5D,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,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAK5D,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Match as M, Option, Schema as S } from 'effect';
|
|
2
|
-
import { html } from '../../html/index.js';
|
|
3
2
|
import { m } from '../../message/index.js';
|
|
4
3
|
// MODEL
|
|
5
4
|
export const Model = S.Struct({ label: S.String });
|
|
@@ -18,7 +17,6 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
|
|
|
18
17
|
CompletedAction: () => [model, [], Option.none()],
|
|
19
18
|
}));
|
|
20
19
|
// VIEW
|
|
21
|
-
export const view = (model) => {
|
|
22
|
-
const h = html();
|
|
20
|
+
export const view = (model, h) => {
|
|
23
21
|
return h.div([], [h.button([h.OnClick(ClickedLogout()), h.Role('button')], [model.label])]);
|
|
24
22
|
};
|