foldkit 0.150.0 → 0.151.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 -13
- package/dist/asyncData/asyncData.d.ts +3 -4
- package/dist/asyncData/asyncData.d.ts.map +1 -1
- package/dist/asyncData/asyncData.js +3 -4
- package/dist/command/index.d.ts +14 -13
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +13 -12
- package/dist/experimental/machine/machine.d.ts +9 -2
- package/dist/experimental/machine/machine.d.ts.map +1 -1
- package/dist/experimental/machine/machine.js +3 -3
- package/dist/experimental/server/server.d.ts +6 -5
- package/dist/experimental/server/server.d.ts.map +1 -1
- package/dist/experimental/server/server.js +1 -2
- package/dist/html/submodel.d.ts +4 -4
- package/dist/html/submodel.d.ts.map +1 -1
- package/dist/runtime/runtime.d.ts +11 -47
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +9 -5
- package/dist/test/apps/attributes.d.ts +11 -4
- package/dist/test/apps/attributes.d.ts.map +1 -1
- package/dist/test/apps/attributes.js +1 -1
- package/dist/test/apps/bubbling.d.ts +13 -4
- package/dist/test/apps/bubbling.d.ts.map +1 -1
- package/dist/test/apps/bubbling.js +8 -6
- package/dist/test/apps/colorPicker.d.ts +11 -3
- package/dist/test/apps/colorPicker.d.ts.map +1 -1
- package/dist/test/apps/colorPicker.js +3 -1
- package/dist/test/apps/contextMenu.d.ts +16 -8
- package/dist/test/apps/contextMenu.d.ts.map +1 -1
- package/dist/test/apps/contextMenu.js +3 -4
- package/dist/test/apps/counter.d.ts +10 -10
- package/dist/test/apps/counter.d.ts.map +1 -1
- package/dist/test/apps/counter.js +26 -20
- package/dist/test/apps/crashOnRender.d.ts +12 -12
- package/dist/test/apps/crashOnRender.d.ts.map +1 -1
- package/dist/test/apps/crashOnRender.js +6 -7
- package/dist/test/apps/drafts.d.ts +10 -10
- package/dist/test/apps/drafts.d.ts.map +1 -1
- package/dist/test/apps/drafts.js +7 -5
- package/dist/test/apps/feedSocket.d.ts +19 -4
- package/dist/test/apps/feedSocket.d.ts.map +1 -1
- package/dist/test/apps/feedSocket.js +12 -7
- package/dist/test/apps/fileUpload.d.ts +11 -3
- package/dist/test/apps/fileUpload.d.ts.map +1 -1
- package/dist/test/apps/fileUpload.js +3 -1
- package/dist/test/apps/formChild.d.ts +48 -3
- package/dist/test/apps/formChild.d.ts.map +1 -1
- package/dist/test/apps/formChild.js +33 -38
- package/dist/test/apps/interactions.d.ts +25 -7
- package/dist/test/apps/interactions.d.ts.map +1 -1
- package/dist/test/apps/interactions.js +20 -10
- package/dist/test/apps/keypress.d.ts +15 -4
- package/dist/test/apps/keypress.d.ts.map +1 -1
- package/dist/test/apps/keypress.js +13 -5
- package/dist/test/apps/login.d.ts +13 -13
- package/dist/test/apps/login.d.ts.map +1 -1
- package/dist/test/apps/login.js +28 -18
- package/dist/test/apps/logoutButton.d.ts +15 -6
- package/dist/test/apps/logoutButton.d.ts.map +1 -1
- package/dist/test/apps/logoutButton.js +6 -3
- package/dist/test/apps/mountPanel.d.ts +25 -5
- package/dist/test/apps/mountPanel.d.ts.map +1 -1
- package/dist/test/apps/mountPanel.js +14 -10
- package/dist/test/apps/multiRole.d.ts +10 -3
- package/dist/test/apps/multiRole.d.ts.map +1 -1
- package/dist/test/apps/multiRole.js +5 -2
- package/dist/test/apps/pointer.d.ts +16 -5
- package/dist/test/apps/pointer.d.ts.map +1 -1
- package/dist/test/apps/pointer.js +6 -8
- package/dist/test/apps/resumeUpload.d.ts +25 -4
- package/dist/test/apps/resumeUpload.d.ts.map +1 -1
- package/dist/test/apps/resumeUpload.js +16 -15
- package/dist/test/apps/scorePanel.d.ts +10 -3
- package/dist/test/apps/scorePanel.d.ts.map +1 -1
- package/dist/test/apps/scorePanel.js +3 -1
- package/dist/test/apps/selectiveKeys.d.ts +14 -3
- package/dist/test/apps/selectiveKeys.d.ts.map +1 -1
- package/dist/test/apps/selectiveKeys.js +7 -3
- package/dist/test/apps/uploads.d.ts +13 -13
- package/dist/test/apps/uploads.d.ts.map +1 -1
- package/dist/test/apps/uploads.js +23 -24
- package/dist/test/internal.d.ts +18 -3
- package/dist/test/internal.d.ts.map +1 -1
- package/dist/test/internal.js +8 -16
- package/dist/test/scene.d.ts +16 -19
- package/dist/test/scene.d.ts.map +1 -1
- package/dist/test/scene.js +11 -27
- package/dist/test/story.d.ts +16 -8
- package/dist/test/story.d.ts.map +1 -1
- package/dist/test/story.js +12 -17
- package/dist/update/public.d.ts +2 -2
- package/dist/update/public.d.ts.map +1 -1
- package/dist/update/public.js +1 -1
- package/dist/update/update.d.ts +143 -69
- package/dist/update/update.d.ts.map +1 -1
- package/dist/update/update.js +72 -42
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedSocket.d.ts","sourceRoot":"","sources":["../../../src/test/apps/feedSocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE7D,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,eAAe,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"feedSocket.d.ts","sourceRoot":"","sources":["../../../src/test/apps/feedSocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE7D,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,eAAe,MAAM,gCAAgC,CAAA;AAGjE,OAAO,KAAK,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAIpD,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,OAAO;;;;;;;;;EAKlB,CAAA;AAEF,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;;;;;;;;;;;;;;;;;;;;;;CA8BjD,CAAA;AAIH,eAAO,MAAM,YAAY;;;CAGvB,CAAA;AAIF,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO;;;;;;;;;;;;;;;;;EAcjD,CAAA;AAIJ,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAU1D,CAAA"}
|
|
@@ -43,13 +43,18 @@ export const initialModel = Model.make({
|
|
|
43
43
|
});
|
|
44
44
|
// UPDATE
|
|
45
45
|
export const update = (model, message) => Message.match(message, {
|
|
46
|
-
ClickedToggleFeed: () =>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
46
|
+
ClickedToggleFeed: () => ({
|
|
47
|
+
model: evo(model, { isFeedOpen: Boolean.not }),
|
|
48
|
+
}),
|
|
49
|
+
AcquiredFeedSocket: () => ({
|
|
50
|
+
model: evo(model, { status: () => 'Connected' }),
|
|
51
|
+
}),
|
|
52
|
+
ReleasedFeedSocket: () => ({
|
|
53
|
+
model: evo(model, { status: () => 'Disconnected' }),
|
|
54
|
+
}),
|
|
55
|
+
FailedAcquireFeedSocket: () => ({
|
|
56
|
+
model: evo(model, { status: () => 'Failed' }),
|
|
57
|
+
}),
|
|
53
58
|
});
|
|
54
59
|
// VIEW
|
|
55
60
|
export const view = (model, h) => h.div([], [
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Schema as S } from 'effect';
|
|
2
2
|
import { File } from '../../file/index.js';
|
|
3
3
|
import type { Html, HtmlBuilder } from '../../html/index.js';
|
|
4
|
+
import type * as Update from '../../update/index.js';
|
|
4
5
|
export type Model = Readonly<{
|
|
5
6
|
receivedFiles: ReadonlyArray<File>;
|
|
6
7
|
}>;
|
|
@@ -11,8 +12,15 @@ export declare const Message: import("../../schema/index.js").MessageUnion<{
|
|
|
11
12
|
};
|
|
12
13
|
}>;
|
|
13
14
|
export type Message = typeof Message.Type;
|
|
14
|
-
export declare const update: (model: Model, message: Message) =>
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
export declare const update: (model: Model, message: Message) => Readonly<{
|
|
16
|
+
model: Readonly<{
|
|
17
|
+
receivedFiles: ReadonlyArray<File>;
|
|
18
|
+
}>;
|
|
19
|
+
commands?: Update.Commands<{
|
|
20
|
+
readonly _tag: "ReceivedFiles";
|
|
21
|
+
readonly files: readonly globalThis.File[];
|
|
22
|
+
}, never>;
|
|
23
|
+
outMessage?: never;
|
|
24
|
+
}>;
|
|
17
25
|
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
18
26
|
//# 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,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"fileUpload.d.ts","sourceRoot":"","sources":["../../../src/test/apps/fileUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,KAAK,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAIpD,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,OAAO;;;;EAElB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO;;uBAfpC,aAAa,CAAC,IAAI,CAAC;;;;;;;EAoBhC,CAAA;AAIJ,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IA4B5D,CAAA"}
|
|
@@ -8,7 +8,9 @@ export const Message = defineMessageUnion({
|
|
|
8
8
|
});
|
|
9
9
|
// UPDATE
|
|
10
10
|
export const update = (model, message) => Message.match(message, {
|
|
11
|
-
ReceivedFiles: ({ files }) =>
|
|
11
|
+
ReceivedFiles: ({ files }) => ({
|
|
12
|
+
model: { ...model, receivedFiles: files },
|
|
13
|
+
}),
|
|
12
14
|
});
|
|
13
15
|
// VIEW
|
|
14
16
|
export const view = (model, h) => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Effect,
|
|
1
|
+
import { Effect, Schema as S } from 'effect';
|
|
2
2
|
import * as Command from '../../command/index.js';
|
|
3
|
+
import * as Update from '../../update/index.js';
|
|
3
4
|
export declare const ChildModel: S.Struct<{
|
|
4
5
|
readonly status: S.Literals<readonly ["Idle", "Submitting", "Submitted"]>;
|
|
5
6
|
}>;
|
|
@@ -34,7 +35,27 @@ export declare const ResetForm: Command.CommandDefinitionNoArgs<"ResetForm", Eff
|
|
|
34
35
|
readonly _tag: "CompletedResetForm";
|
|
35
36
|
}, never, never>>;
|
|
36
37
|
export declare const initialChildModel: ChildModel;
|
|
37
|
-
export declare const childUpdate: (_model: ChildModel, message: ChildMessage) =>
|
|
38
|
+
export declare const childUpdate: (_model: ChildModel, message: ChildMessage) => Readonly<{
|
|
39
|
+
model: {
|
|
40
|
+
readonly status: "Idle" | "Submitting" | "Submitted";
|
|
41
|
+
};
|
|
42
|
+
commands?: Update.Commands<{
|
|
43
|
+
readonly _tag: "SubmittedForm";
|
|
44
|
+
} | {
|
|
45
|
+
readonly _tag: "SucceededSubmitForm";
|
|
46
|
+
readonly id: string;
|
|
47
|
+
} | {
|
|
48
|
+
readonly _tag: "CancelledForm";
|
|
49
|
+
} | {
|
|
50
|
+
readonly _tag: "CompletedResetForm";
|
|
51
|
+
}, never>;
|
|
52
|
+
outMessage?: {
|
|
53
|
+
readonly _tag: "RequestedSave";
|
|
54
|
+
readonly id: string;
|
|
55
|
+
} | {
|
|
56
|
+
readonly _tag: "RequestedCancel";
|
|
57
|
+
};
|
|
58
|
+
}>;
|
|
38
59
|
export declare const ParentModel: S.Struct<{
|
|
39
60
|
readonly child: S.Struct<{
|
|
40
61
|
readonly status: S.Literals<readonly ["Idle", "Submitting", "Submitted"]>;
|
|
@@ -68,5 +89,29 @@ export declare const GotChildMessage: import("../../schema/index.js").CallableTa
|
|
|
68
89
|
}>, CompletedParentReset: import("../../schema/index.js").CallableTaggedStruct<"CompletedParentReset", {}>;
|
|
69
90
|
export type ParentMessage = typeof ParentMessage.Type;
|
|
70
91
|
export declare const initialParentModel: ParentModel;
|
|
71
|
-
export declare const parentUpdate: (parentModel: ParentModel, message: ParentMessage) =>
|
|
92
|
+
export declare const parentUpdate: (parentModel: ParentModel, message: ParentMessage) => Readonly<{
|
|
93
|
+
model: {
|
|
94
|
+
readonly child: {
|
|
95
|
+
readonly status: "Idle" | "Submitting" | "Submitted";
|
|
96
|
+
};
|
|
97
|
+
readonly savedIds: readonly string[];
|
|
98
|
+
readonly cancelled: boolean;
|
|
99
|
+
};
|
|
100
|
+
commands?: Update.Commands<{
|
|
101
|
+
readonly _tag: "GotChildMessage";
|
|
102
|
+
readonly message: {
|
|
103
|
+
readonly _tag: "SubmittedForm";
|
|
104
|
+
} | {
|
|
105
|
+
readonly _tag: "SucceededSubmitForm";
|
|
106
|
+
readonly id: string;
|
|
107
|
+
} | {
|
|
108
|
+
readonly _tag: "CancelledForm";
|
|
109
|
+
} | {
|
|
110
|
+
readonly _tag: "CompletedResetForm";
|
|
111
|
+
};
|
|
112
|
+
} | {
|
|
113
|
+
readonly _tag: "CompletedParentReset";
|
|
114
|
+
}, never>;
|
|
115
|
+
outMessage?: never;
|
|
116
|
+
}>;
|
|
72
117
|
//# sourceMappingURL=formChild.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formChild.d.ts","sourceRoot":"","sources":["../../../src/test/apps/formChild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"formChild.d.ts","sourceRoot":"","sources":["../../../src/test/apps/formChild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhE,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAEjD,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAI/C,eAAO,MAAM,UAAU;;EAErB,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAI/C,eAAO,MAAM,YAAY;;;;;;;EAKvB,CAAA;AAEF,eAAO,MACL,aAAa,6EACb,mBAAmB;;IACnB,aAAa,6EACb,kBAAkB,gFACJ,CAAA;AAEhB,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAA;AAInD,eAAO,MAAM,eAAe;;;;;EAG1B,CAAA;AAEF,eAAO,MAAQ,aAAa;;IAAE,eAAe,6EAAoB,CAAA;AAEjE,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AAIzD,eAAO,MAAM,UAAU;;;iBAGrB,CAAA;AAEF,eAAO,MAAM,SAAS;;iBAGpB,CAAA;AAIF,eAAO,MAAM,iBAAiB,EAAE,UAA+B,CAAA;AAI/D,eAAO,MAAM,WAAW,GAAI,QAAQ,UAAU,EAAE,SAAS,YAAY;;;;;;;;;;;;;;;;;;;;EAkBjE,CAAA;AAIJ,eAAO,MAAM,WAAW;;;;;;EAItB,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AAIjD,eAAO,MAAM,aAAa;;;;;;;;;;;;EAGxB,CAAA;AAEF,eAAO,MAAQ,eAAe;;;;;;;;;IAAE,oBAAoB,kFAAkB,CAAA;AAEtE,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAIrD,eAAO,MAAM,kBAAkB,EAAE,WAIhC,CAAA;AA0BD,eAAO,MAAM,YAAY,GACvB,aAAa,WAAW,EACxB,SAAS,aAAa;;;;;;;;;;;;;;;;;;;;;;;;EAMpB,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Effect, Option, Schema as S } from 'effect';
|
|
1
|
+
import { Effect, Match as M, Option, Schema as S } from 'effect';
|
|
2
2
|
import * as Command from '../../command/index.js';
|
|
3
3
|
import { defineMessageUnion } from '../../message/index.js';
|
|
4
|
+
import * as Update from '../../update/index.js';
|
|
4
5
|
// CHILD MODEL
|
|
5
6
|
export const ChildModel = S.Struct({
|
|
6
7
|
status: S.Literals(['Idle', 'Submitting', 'Submitted']),
|
|
@@ -32,22 +33,20 @@ export const ResetForm = Command.define('ResetForm', {
|
|
|
32
33
|
export const initialChildModel = { status: 'Idle' };
|
|
33
34
|
// CHILD UPDATE
|
|
34
35
|
export const childUpdate = (_model, message) => ChildMessage.match(message, {
|
|
35
|
-
SubmittedForm: () =>
|
|
36
|
-
{ status: 'Submitting' },
|
|
37
|
-
[SubmitForm()],
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
],
|
|
50
|
-
CompletedResetForm: () => [{ status: 'Idle' }, [], Option.none()],
|
|
36
|
+
SubmittedForm: () => ({
|
|
37
|
+
model: { status: 'Submitting' },
|
|
38
|
+
commands: [SubmitForm()],
|
|
39
|
+
}),
|
|
40
|
+
SucceededSubmitForm: ({ id }) => ({
|
|
41
|
+
model: { status: 'Submitted' },
|
|
42
|
+
commands: [ResetForm()],
|
|
43
|
+
outMessage: ChildOutMessage.RequestedSave({ id }),
|
|
44
|
+
}),
|
|
45
|
+
CancelledForm: () => ({
|
|
46
|
+
model: { status: 'Idle' },
|
|
47
|
+
outMessage: ChildOutMessage.RequestedCancel(),
|
|
48
|
+
}),
|
|
49
|
+
CompletedResetForm: () => ({ model: { status: 'Idle' } }),
|
|
51
50
|
});
|
|
52
51
|
// PARENT MODEL
|
|
53
52
|
export const ParentModel = S.Struct({
|
|
@@ -68,26 +67,22 @@ export const initialParentModel = {
|
|
|
68
67
|
cancelled: false,
|
|
69
68
|
};
|
|
70
69
|
// PARENT UPDATE
|
|
70
|
+
const foldChildOutMessage = M.type().pipe(M.withReturnType(), M.tagsExhaustive({
|
|
71
|
+
RequestedSave: ({ id }) => model => ({
|
|
72
|
+
model: { ...model, savedIds: [...model.savedIds, id] },
|
|
73
|
+
}),
|
|
74
|
+
RequestedCancel: () => model => ({
|
|
75
|
+
model: { ...model, cancelled: true },
|
|
76
|
+
}),
|
|
77
|
+
}));
|
|
78
|
+
const foldChildUpdate = Update.foldChild({
|
|
79
|
+
update: childUpdate,
|
|
80
|
+
read: (model) => Option.some(model.child),
|
|
81
|
+
write: (model, nextChild) => ({ ...model, child: nextChild }),
|
|
82
|
+
toParentMessage: message => ParentMessage.GotChildMessage({ message }),
|
|
83
|
+
foldOutMessage: foldChildOutMessage,
|
|
84
|
+
});
|
|
71
85
|
export const parentUpdate = (parentModel, message) => ParentMessage.match(message, {
|
|
72
|
-
GotChildMessage: ({ message: childMessage }) =>
|
|
73
|
-
|
|
74
|
-
const nextParent = Option.match(maybeOutMessage, {
|
|
75
|
-
onNone: () => ({ ...parentModel, child: nextChild }),
|
|
76
|
-
onSome: outMessage => ChildOutMessage.match(outMessage, {
|
|
77
|
-
RequestedSave: ({ id }) => ({
|
|
78
|
-
...parentModel,
|
|
79
|
-
child: nextChild,
|
|
80
|
-
savedIds: [...parentModel.savedIds, id],
|
|
81
|
-
}),
|
|
82
|
-
RequestedCancel: () => ({
|
|
83
|
-
...parentModel,
|
|
84
|
-
child: nextChild,
|
|
85
|
-
cancelled: true,
|
|
86
|
-
}),
|
|
87
|
-
}),
|
|
88
|
-
});
|
|
89
|
-
const mappedCommands = Command.mapMessages(commands, childMessage => ParentMessage.GotChildMessage({ message: childMessage }));
|
|
90
|
-
return [nextParent, mappedCommands];
|
|
91
|
-
},
|
|
92
|
-
CompletedParentReset: () => [parentModel, []],
|
|
86
|
+
GotChildMessage: ({ message: childMessage }) => foldChildUpdate(parentModel, childMessage),
|
|
87
|
+
CompletedParentReset: () => ({ model: parentModel }),
|
|
93
88
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Schema as S } from 'effect';
|
|
2
2
|
import type { Html, HtmlBuilder } from '../../html/index.js';
|
|
3
|
+
import type * as Update from '../../update/index.js';
|
|
3
4
|
export declare const Model: S.Struct<{
|
|
4
5
|
readonly clicks: S.Number;
|
|
5
6
|
readonly doubleClicks: S.Number;
|
|
@@ -20,12 +21,29 @@ export declare const Message: import("../../schema/index.js").MessageUnion<{
|
|
|
20
21
|
}>;
|
|
21
22
|
export type Message = typeof Message.Type;
|
|
22
23
|
export declare const initialModel: Model;
|
|
23
|
-
export declare const update: (model: Model, message: Message) =>
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
export declare const update: (model: Model, message: Message) => Readonly<{
|
|
25
|
+
model: {
|
|
26
|
+
readonly clicks: number;
|
|
27
|
+
readonly doubleClicks: number;
|
|
28
|
+
readonly hovered: boolean;
|
|
29
|
+
readonly focused: boolean;
|
|
30
|
+
readonly changed: string;
|
|
31
|
+
};
|
|
32
|
+
commands?: Update.Commands<{
|
|
33
|
+
readonly _tag: "ClickedButton";
|
|
34
|
+
} | {
|
|
35
|
+
readonly _tag: "DoubleClickedButton";
|
|
36
|
+
} | {
|
|
37
|
+
readonly _tag: "HoveredTarget";
|
|
38
|
+
} | {
|
|
39
|
+
readonly _tag: "FocusedInput";
|
|
40
|
+
} | {
|
|
41
|
+
readonly _tag: "BlurredInput";
|
|
42
|
+
} | {
|
|
43
|
+
readonly _tag: "ChangedSelect";
|
|
44
|
+
readonly value: string;
|
|
45
|
+
}, never>;
|
|
46
|
+
outMessage?: never;
|
|
47
|
+
}>;
|
|
30
48
|
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
31
49
|
//# 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,
|
|
1
|
+
{"version":3,"file":"interactions.d.ts","sourceRoot":"","sources":["../../../src/test/apps/interactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE5C,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAG5D,OAAO,KAAK,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAIpD,eAAO,MAAM,KAAK;;;;;;EAMhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,OAAO;;;;;;;;;EAOlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAA;AAID,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO;;;;;;;;;;;;;;;;;;;;;;;EAoBjD,CAAA;AAIJ,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IA+B5D,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Schema as S } from 'effect';
|
|
1
|
+
import { Number, Schema as S } from 'effect';
|
|
2
2
|
import { defineMessageUnion } from '../../message/index.js';
|
|
3
|
+
import { evo } from '../../struct/index.js';
|
|
3
4
|
// MODEL
|
|
4
5
|
export const Model = S.Struct({
|
|
5
6
|
clicks: S.Number,
|
|
@@ -27,15 +28,24 @@ export const initialModel = {
|
|
|
27
28
|
};
|
|
28
29
|
// UPDATE
|
|
29
30
|
export const update = (model, message) => Message.match(message, {
|
|
30
|
-
ClickedButton: () =>
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
31
|
+
ClickedButton: () => ({
|
|
32
|
+
model: evo(model, { clicks: Number.increment }),
|
|
33
|
+
}),
|
|
34
|
+
DoubleClickedButton: () => ({
|
|
35
|
+
model: evo(model, { doubleClicks: Number.increment }),
|
|
36
|
+
}),
|
|
37
|
+
HoveredTarget: () => ({
|
|
38
|
+
model: evo(model, { hovered: () => true }),
|
|
39
|
+
}),
|
|
40
|
+
FocusedInput: () => ({
|
|
41
|
+
model: evo(model, { focused: () => true }),
|
|
42
|
+
}),
|
|
43
|
+
BlurredInput: () => ({
|
|
44
|
+
model: evo(model, { focused: () => false }),
|
|
45
|
+
}),
|
|
46
|
+
ChangedSelect: ({ value }) => ({
|
|
47
|
+
model: evo(model, { changed: () => value }),
|
|
48
|
+
}),
|
|
39
49
|
});
|
|
40
50
|
// VIEW
|
|
41
51
|
export const view = (model, h) => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Schema as S } from 'effect';
|
|
2
2
|
import type { Html, HtmlBuilder } from '../../html/index.js';
|
|
3
|
+
import type * as Update from '../../update/index.js';
|
|
3
4
|
export declare const Model: S.Struct<{
|
|
4
5
|
readonly lastKey: S.String;
|
|
5
6
|
readonly isShifted: S.Boolean;
|
|
@@ -15,9 +16,19 @@ export declare const Message: import("../../schema/index.js").MessageUnion<{
|
|
|
15
16
|
}>;
|
|
16
17
|
export type Message = typeof Message.Type;
|
|
17
18
|
export declare const initialModel: Model;
|
|
18
|
-
export declare const update: (model: Model, message: Message) =>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
export declare const update: (model: Model, message: Message) => Readonly<{
|
|
20
|
+
model: {
|
|
21
|
+
readonly lastKey: string;
|
|
22
|
+
readonly isShifted: boolean;
|
|
23
|
+
};
|
|
24
|
+
commands?: Update.Commands<{
|
|
25
|
+
readonly _tag: "PressedKey";
|
|
26
|
+
readonly key: string;
|
|
27
|
+
} | {
|
|
28
|
+
readonly _tag: "PressedShiftKey";
|
|
29
|
+
readonly key: string;
|
|
30
|
+
}, never>;
|
|
31
|
+
outMessage?: never;
|
|
32
|
+
}>;
|
|
22
33
|
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
23
34
|
//# 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,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"keypress.d.ts","sourceRoot":"","sources":["../../../src/test/apps/keypress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAG5D,OAAO,KAAK,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAIpD,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,OAAO;;;;;;;EAGlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY,EAAE,KAG1B,CAAA;AAID,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO;;;;;;;;;;;;;EAcjD,CAAA;AAIJ,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAoB5D,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Schema as S } from 'effect';
|
|
2
2
|
import { defineMessageUnion } from '../../message/index.js';
|
|
3
|
+
import { evo } from '../../struct/index.js';
|
|
3
4
|
// MODEL
|
|
4
5
|
export const Model = S.Struct({
|
|
5
6
|
lastKey: S.String,
|
|
@@ -17,11 +18,18 @@ export const initialModel = {
|
|
|
17
18
|
};
|
|
18
19
|
// UPDATE
|
|
19
20
|
export const update = (model, message) => Message.match(message, {
|
|
20
|
-
PressedKey: ({ key }) =>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
PressedKey: ({ key }) => ({
|
|
22
|
+
model: evo(model, {
|
|
23
|
+
lastKey: () => key,
|
|
24
|
+
isShifted: () => false,
|
|
25
|
+
}),
|
|
26
|
+
}),
|
|
27
|
+
PressedShiftKey: ({ key }) => ({
|
|
28
|
+
model: evo(model, {
|
|
29
|
+
lastKey: () => key,
|
|
30
|
+
isShifted: () => true,
|
|
31
|
+
}),
|
|
32
|
+
}),
|
|
25
33
|
});
|
|
26
34
|
// VIEW
|
|
27
35
|
export const view = (model, h) => {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Effect, Schema as S } from 'effect';
|
|
2
2
|
import * as Command from '../../command/index.js';
|
|
3
3
|
import type { Html, HtmlBuilder } from '../../html/index.js';
|
|
4
|
+
import type * as Update from '../../update/index.js';
|
|
4
5
|
export declare const Model: S.Struct<{
|
|
5
6
|
readonly email: S.String;
|
|
6
7
|
readonly password: S.String;
|
|
@@ -31,17 +32,15 @@ export declare const Authenticate: Command.CommandDefinitionNoArgs<"Authenticate
|
|
|
31
32
|
readonly username: string;
|
|
32
33
|
}, never, never>>;
|
|
33
34
|
export declare const initialModel: Model;
|
|
34
|
-
export declare const update: (model: Model, message: Message) =>
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
key?: string;
|
|
44
|
-
effect: Effect.Effect<{
|
|
35
|
+
export declare const update: (model: Model, message: Message) => Readonly<{
|
|
36
|
+
model: {
|
|
37
|
+
readonly email: string;
|
|
38
|
+
readonly password: string;
|
|
39
|
+
readonly status: "Idle" | "Error" | "Submitting" | "LoggedIn";
|
|
40
|
+
readonly username: string;
|
|
41
|
+
readonly error: string;
|
|
42
|
+
};
|
|
43
|
+
commands?: Update.Commands<{
|
|
45
44
|
readonly _tag: "UpdatedEmail";
|
|
46
45
|
readonly value: string;
|
|
47
46
|
} | {
|
|
@@ -57,7 +56,8 @@ export declare const update: (model: Model, message: Message) => readonly [{
|
|
|
57
56
|
readonly error: string;
|
|
58
57
|
} | {
|
|
59
58
|
readonly _tag: "ClickedLogout";
|
|
60
|
-
}, never
|
|
61
|
-
|
|
59
|
+
}, never>;
|
|
60
|
+
outMessage?: never;
|
|
61
|
+
}>;
|
|
62
62
|
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
63
63
|
//# 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,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,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,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAG5D,OAAO,KAAK,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAIpD,eAAO,MAAM,KAAK;;;;;;EAMhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;EAOlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY;;;iBAKvB,CAAA;AAIF,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAA;AAID,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BjD,CAAA;AAIJ,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,7 @@
|
|
|
1
1
|
import { Effect, Match as M, Schema as S } from 'effect';
|
|
2
2
|
import * as Command from '../../command/index.js';
|
|
3
3
|
import { defineMessageUnion } from '../../message/index.js';
|
|
4
|
+
import { evo } from '../../struct/index.js';
|
|
4
5
|
// MODEL
|
|
5
6
|
export const Model = S.Struct({
|
|
6
7
|
email: S.String,
|
|
@@ -33,24 +34,33 @@ export const initialModel = {
|
|
|
33
34
|
};
|
|
34
35
|
// UPDATE
|
|
35
36
|
export const update = (model, message) => Message.match(message, {
|
|
36
|
-
UpdatedEmail: ({ value }) =>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
[],
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
37
|
+
UpdatedEmail: ({ value }) => ({
|
|
38
|
+
model: evo(model, { email: () => value }),
|
|
39
|
+
}),
|
|
40
|
+
UpdatedPassword: ({ value }) => ({
|
|
41
|
+
model: evo(model, { password: () => value }),
|
|
42
|
+
}),
|
|
43
|
+
SubmittedLogin: () => ({
|
|
44
|
+
model: evo(model, { status: () => 'Submitting' }),
|
|
45
|
+
commands: [Authenticate()],
|
|
46
|
+
}),
|
|
47
|
+
SucceededAuthenticate: ({ username }) => ({
|
|
48
|
+
model: evo(model, {
|
|
49
|
+
status: () => 'LoggedIn',
|
|
50
|
+
username: () => username,
|
|
51
|
+
}),
|
|
52
|
+
}),
|
|
53
|
+
FailedAuthenticate: ({ error }) => ({
|
|
54
|
+
model: evo(model, { status: () => 'Error', error: () => error }),
|
|
55
|
+
}),
|
|
56
|
+
ClickedLogout: () => ({
|
|
57
|
+
model: evo(model, {
|
|
58
|
+
status: () => 'Idle',
|
|
59
|
+
username: () => '',
|
|
60
|
+
email: () => '',
|
|
61
|
+
password: () => '',
|
|
62
|
+
}),
|
|
63
|
+
}),
|
|
54
64
|
});
|
|
55
65
|
// VIEW
|
|
56
66
|
export const view = (model, h) => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Schema as S } from 'effect';
|
|
2
2
|
import type { Html, HtmlBuilder } from '../../html/index.js';
|
|
3
|
+
import type * as Update from '../../update/index.js';
|
|
3
4
|
export declare const Model: S.Struct<{
|
|
4
5
|
readonly label: S.String;
|
|
5
6
|
}>;
|
|
@@ -14,10 +15,18 @@ export declare const OutMessage: import("../../schema/index.js").MessageUnion<{
|
|
|
14
15
|
}>;
|
|
15
16
|
export type OutMessage = typeof OutMessage.Type;
|
|
16
17
|
export declare const initialModel: Model;
|
|
17
|
-
export declare const update: (model: Model, message: Message) =>
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
export declare const update: (model: Model, message: Message) => Readonly<{
|
|
19
|
+
model: {
|
|
20
|
+
readonly label: string;
|
|
21
|
+
};
|
|
22
|
+
commands?: Update.Commands<{
|
|
23
|
+
readonly _tag: "ClickedLogout";
|
|
24
|
+
} | {
|
|
25
|
+
readonly _tag: "CompletedAction";
|
|
26
|
+
}, never>;
|
|
27
|
+
outMessage?: {
|
|
28
|
+
readonly _tag: "RequestedLogout";
|
|
29
|
+
};
|
|
30
|
+
}>;
|
|
22
31
|
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
23
32
|
//# 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,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"logoutButton.d.ts","sourceRoot":"","sources":["../../../src/test/apps/logoutButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,KAAK,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAIpD,eAAO,MAAM,KAAK;;EAAgC,CAAA;AAClD,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,OAAO;;;EAGlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,UAAU;;EAErB,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAI/C,eAAO,MAAM,YAAY,EAAE,KAA4B,CAAA;AAIvD,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO;;;;;;;;;;;;EAUlD,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAU5D,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Schema as S } from 'effect';
|
|
2
2
|
import { defineMessageUnion } from '../../message/index.js';
|
|
3
3
|
// MODEL
|
|
4
4
|
export const Model = S.Struct({ label: S.String });
|
|
@@ -15,8 +15,11 @@ export const OutMessage = defineMessageUnion({
|
|
|
15
15
|
export const initialModel = { label: 'Log out' };
|
|
16
16
|
// UPDATE
|
|
17
17
|
export const update = (model, message) => Message.match(message, {
|
|
18
|
-
ClickedLogout: () =>
|
|
19
|
-
|
|
18
|
+
ClickedLogout: () => ({
|
|
19
|
+
model,
|
|
20
|
+
outMessage: OutMessage.RequestedLogout(),
|
|
21
|
+
}),
|
|
22
|
+
CompletedAction: () => ({ model }),
|
|
20
23
|
});
|
|
21
24
|
// VIEW
|
|
22
25
|
export const view = (model, h) => {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Option, Schema as S } from 'effect';
|
|
2
2
|
import type { Html, HtmlBuilder } from '../../html/index.js';
|
|
3
3
|
import * as Mount from '../../mount/index.js';
|
|
4
|
+
import type * as Update from '../../update/index.js';
|
|
4
5
|
export declare const Model: S.Struct<{
|
|
5
6
|
readonly isOpen: S.Boolean;
|
|
6
7
|
readonly measuredWidth: S.OptionFromNullOr<S.Number>;
|
|
@@ -39,11 +40,30 @@ export declare const ScrollList: Mount.MountDefinitionWithArgs<"ScrollList", {
|
|
|
39
40
|
readonly offset: number;
|
|
40
41
|
}>;
|
|
41
42
|
export declare const initialModel: Model;
|
|
42
|
-
export declare const update: (model: Model, message: Message) =>
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
export declare const update: (model: Model, message: Message) => Readonly<{
|
|
44
|
+
model: {
|
|
45
|
+
readonly isOpen: boolean;
|
|
46
|
+
readonly measuredWidth: Option.Option<number>;
|
|
47
|
+
readonly count: number;
|
|
48
|
+
};
|
|
49
|
+
commands?: Update.Commands<{
|
|
50
|
+
readonly _tag: "ClickedIncrement";
|
|
51
|
+
} | {
|
|
52
|
+
readonly _tag: "ClickedToggle";
|
|
53
|
+
} | {
|
|
54
|
+
readonly _tag: "MeasuredPanel";
|
|
55
|
+
readonly width: number;
|
|
56
|
+
} | {
|
|
57
|
+
readonly _tag: "CompletedFocusButton";
|
|
58
|
+
} | {
|
|
59
|
+
readonly _tag: "FailedMountSidebar";
|
|
60
|
+
readonly reason: string;
|
|
61
|
+
} | {
|
|
62
|
+
readonly _tag: "ScrolledTo";
|
|
63
|
+
readonly offset: number;
|
|
64
|
+
}, never>;
|
|
65
|
+
outMessage?: never;
|
|
66
|
+
}>;
|
|
47
67
|
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
48
68
|
/** A view that always renders both the toggle button and the panel, exposing
|
|
49
69
|
* two MeasurePanel mounts simultaneously so we can exercise the (name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mountPanel.d.ts","sourceRoot":"","sources":["../../../src/test/apps/mountPanel.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"mountPanel.d.ts","sourceRoot":"","sources":["../../../src/test/apps/mountPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE5D,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,KAAK,KAAK,MAAM,sBAAsB,CAAA;AAE7C,OAAO,KAAK,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAIpD,eAAO,MAAM,KAAK;;;;EAIhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,OAAO;;;;;;;;;;;;;EAOlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAWzC,eAAO,MAAM,YAAY;;;;;;EAIqC,CAAA;AAE9D,eAAO,MAAM,WAAW;;EAG+B,CAAA;AAEvD,eAAO,MAAM,UAAU;;;;;EAatB,CAAA;AAID,eAAO,MAAM,YAAY,EAAE,KAI1B,CAAA;AAID,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO;;;;;;;;;;;;;;;;;;;;;;;EAcjD,CAAA;AAIJ,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAgC5D,CAAA;AAED;;4BAE4B;AAC5B,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAYpE,CAAA;AAED;;;2DAG2D;AAC3D,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,GAAG,WAAW,CAAC,OAAO,CAAC,KACtB,IAKF,CAAA"}
|