foldkit 0.148.2 → 0.149.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 +15 -24
- package/dist/message/index.d.ts +2 -1
- package/dist/message/index.d.ts.map +1 -1
- package/dist/message/index.js +1 -1
- package/dist/message/public.d.ts +2 -1
- package/dist/message/public.d.ts.map +1 -1
- package/dist/message/public.js +1 -1
- package/dist/runtime/runtime.d.ts +1 -2
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/schema/index.d.ts +53 -8
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +179 -21
- package/dist/subscription/subscription.d.ts +1 -1
- package/dist/subscription/subscription.js +1 -1
- package/dist/test/apps/attributes.d.ts +7 -4
- package/dist/test/apps/attributes.d.ts.map +1 -1
- package/dist/test/apps/attributes.js +6 -6
- package/dist/test/apps/bubbling.d.ts +8 -2
- package/dist/test/apps/bubbling.d.ts.map +1 -1
- package/dist/test/apps/bubbling.js +10 -9
- package/dist/test/apps/colorPicker.d.ts +7 -6
- package/dist/test/apps/colorPicker.d.ts.map +1 -1
- package/dist/test/apps/colorPicker.js +8 -7
- package/dist/test/apps/contextMenu.d.ts +14 -4
- package/dist/test/apps/contextMenu.d.ts.map +1 -1
- package/dist/test/apps/contextMenu.js +8 -9
- package/dist/test/apps/counter.d.ts +52 -24
- package/dist/test/apps/counter.d.ts.map +1 -1
- package/dist/test/apps/counter.js +23 -34
- package/dist/test/apps/crashOnRender.d.ts +44 -28
- package/dist/test/apps/crashOnRender.d.ts.map +1 -1
- package/dist/test/apps/crashOnRender.js +17 -20
- package/dist/test/apps/drafts.d.ts +19 -8
- package/dist/test/apps/drafts.d.ts.map +1 -1
- package/dist/test/apps/drafts.js +10 -11
- package/dist/test/apps/feedSocket.d.ts +13 -13
- package/dist/test/apps/feedSocket.d.ts.map +1 -1
- package/dist/test/apps/feedSocket.js +17 -28
- package/dist/test/apps/fileUpload.d.ts +7 -6
- package/dist/test/apps/fileUpload.d.ts.map +1 -1
- package/dist/test/apps/fileUpload.js +9 -8
- package/dist/test/apps/formChild.d.ts +40 -24
- package/dist/test/apps/formChild.d.ts.map +1 -1
- package/dist/test/apps/formChild.js +31 -32
- package/dist/test/apps/interactions.d.ts +16 -11
- package/dist/test/apps/interactions.d.ts.map +1 -1
- package/dist/test/apps/interactions.js +21 -24
- package/dist/test/apps/keypress.d.ts +11 -11
- package/dist/test/apps/keypress.d.ts.map +1 -1
- package/dist/test/apps/keypress.js +12 -12
- package/dist/test/apps/login.d.ts +43 -23
- package/dist/test/apps/login.d.ts.map +1 -1
- package/dist/test/apps/login.js +17 -25
- package/dist/test/apps/logoutButton.d.ts +12 -6
- package/dist/test/apps/logoutButton.d.ts.map +1 -1
- package/dist/test/apps/logoutButton.js +15 -11
- package/dist/test/apps/mountPanel.d.ts +19 -20
- package/dist/test/apps/mountPanel.d.ts.map +1 -1
- package/dist/test/apps/mountPanel.js +22 -24
- package/dist/test/apps/multiRole.d.ts +6 -3
- package/dist/test/apps/multiRole.d.ts.map +1 -1
- package/dist/test/apps/multiRole.js +8 -7
- package/dist/test/apps/pointer.d.ts +13 -6
- package/dist/test/apps/pointer.d.ts.map +1 -1
- package/dist/test/apps/pointer.js +11 -10
- package/dist/test/apps/resumeUpload.d.ts +11 -14
- package/dist/test/apps/resumeUpload.d.ts.map +1 -1
- package/dist/test/apps/resumeUpload.js +17 -27
- package/dist/test/apps/scorePanel.d.ts +6 -3
- package/dist/test/apps/scorePanel.d.ts.map +1 -1
- package/dist/test/apps/scorePanel.js +8 -7
- package/dist/test/apps/selectiveKeys.d.ts +5 -1
- package/dist/test/apps/selectiveKeys.d.ts.map +1 -1
- package/dist/test/apps/selectiveKeys.js +13 -12
- package/dist/test/apps/uploads.d.ts +52 -30
- package/dist/test/apps/uploads.d.ts.map +1 -1
- package/dist/test/apps/uploads.js +20 -30
- package/dist/update/update.d.ts +4 -7
- package/dist/update/update.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/test/apps/drafts.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Effect,
|
|
1
|
+
import { Effect, Schema as S } from 'effect';
|
|
2
2
|
import * as Command from '../../command/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { defineMessageUnion } from '../../message/index.js';
|
|
4
4
|
import { evo } from '../../struct/index.js';
|
|
5
5
|
// MODEL
|
|
6
6
|
export const SaveStatus = S.Literals(['Editing', 'Saving', 'Saved']);
|
|
@@ -9,33 +9,32 @@ export const Model = S.Struct({
|
|
|
9
9
|
status: SaveStatus,
|
|
10
10
|
});
|
|
11
11
|
// MESSAGE
|
|
12
|
-
export const
|
|
13
|
-
|
|
14
|
-
revision: S.Number,
|
|
12
|
+
export const Message = defineMessageUnion({
|
|
13
|
+
ClickedSaveDraft: {},
|
|
14
|
+
SucceededSaveDraft: { revision: S.Number },
|
|
15
15
|
});
|
|
16
|
-
export const Message = S.Union([ClickedSaveDraft, SucceededSaveDraft]);
|
|
17
16
|
// COMMAND
|
|
18
17
|
export const SaveDraftArgs = S.Struct({ revision: S.Number });
|
|
19
18
|
export const SaveDraft = Command.define('SaveDraft', {
|
|
20
19
|
args: SaveDraftArgs.fields,
|
|
21
|
-
messages: [SucceededSaveDraft],
|
|
20
|
+
messages: [Message.SucceededSaveDraft],
|
|
22
21
|
interrupt: true,
|
|
23
|
-
execute: ({ revision }) => Effect.as(Effect.never, SucceededSaveDraft({ revision })),
|
|
22
|
+
execute: ({ revision }) => Effect.as(Effect.never, Message.SucceededSaveDraft({ revision })),
|
|
24
23
|
});
|
|
25
24
|
// INIT
|
|
26
25
|
export const initialModel = { revision: 0, status: 'Editing' };
|
|
27
26
|
// UPDATE
|
|
28
|
-
export const update = (model, message) =>
|
|
27
|
+
export const update = (model, message) => Message.match(message, {
|
|
29
28
|
ClickedSaveDraft: () => [
|
|
30
29
|
evo(model, { status: () => 'Saving' }),
|
|
31
30
|
[SaveDraft({ revision: model.revision })],
|
|
32
31
|
],
|
|
33
32
|
SucceededSaveDraft: () => [evo(model, { status: () => 'Saved' }), []],
|
|
34
|
-
})
|
|
33
|
+
});
|
|
35
34
|
// VIEW
|
|
36
35
|
export const view = (model, h) => {
|
|
37
36
|
const body = h.div([], [
|
|
38
|
-
h.button([h.OnClick(ClickedSaveDraft())], ['Save draft']),
|
|
37
|
+
h.button([h.OnClick(Message.ClickedSaveDraft())], ['Save draft']),
|
|
39
38
|
h.span([], [`draft: ${model.status}`]),
|
|
40
39
|
]);
|
|
41
40
|
return { title: 'Drafts', body };
|
|
@@ -6,19 +6,16 @@ export declare const Model: S.Struct<{
|
|
|
6
6
|
readonly status: S.Literals<readonly ["Disconnected", "Connected", "Failed"]>;
|
|
7
7
|
}>;
|
|
8
8
|
export type Model = typeof Model.Type;
|
|
9
|
-
export declare const
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
export declare const Message: import("../../schema/index.js").MessageUnion<{
|
|
10
|
+
readonly ClickedToggleFeed: {};
|
|
11
|
+
readonly AcquiredFeedSocket: {
|
|
12
|
+
readonly socketId: S.String;
|
|
13
|
+
};
|
|
14
|
+
readonly ReleasedFeedSocket: {};
|
|
15
|
+
readonly FailedAcquireFeedSocket: {
|
|
16
|
+
readonly error: S.String;
|
|
17
|
+
};
|
|
12
18
|
}>;
|
|
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
19
|
export type Message = typeof Message.Type;
|
|
23
20
|
export type FeedSocket = Readonly<{
|
|
24
21
|
socketId: string;
|
|
@@ -69,6 +66,9 @@ export declare const initialModel: {
|
|
|
69
66
|
readonly isFeedOpen: boolean;
|
|
70
67
|
readonly status: "Disconnected" | "Connected" | "Failed";
|
|
71
68
|
};
|
|
72
|
-
export declare const update: (model: Model, message: Message) => readonly [
|
|
69
|
+
export declare const update: (model: Model, message: Message) => readonly [{
|
|
70
|
+
readonly isFeedOpen: boolean;
|
|
71
|
+
readonly status: "Disconnected" | "Connected" | "Failed";
|
|
72
|
+
}, readonly never[]];
|
|
73
73
|
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
74
74
|
//# sourceMappingURL=feedSocket.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedSocket.d.ts","sourceRoot":"","sources":["../../../src/test/apps/feedSocket.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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;AAMjE,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;;;oBASjD,CAAA;AAIJ,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAU1D,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Boolean, Effect,
|
|
1
|
+
import { Boolean, Effect, Option, Schema as S } from 'effect';
|
|
2
2
|
import * as ManagedResource from '../../managedResource/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { defineMessageUnion } from '../../message/index.js';
|
|
4
4
|
import { evo } from '../../struct/index.js';
|
|
5
5
|
// MODEL
|
|
6
6
|
export const Model = S.Struct({
|
|
@@ -8,20 +8,12 @@ export const Model = S.Struct({
|
|
|
8
8
|
status: S.Literals(['Disconnected', 'Connected', 'Failed']),
|
|
9
9
|
});
|
|
10
10
|
// MESSAGE
|
|
11
|
-
export const
|
|
12
|
-
|
|
13
|
-
socketId: S.String,
|
|
11
|
+
export const Message = defineMessageUnion({
|
|
12
|
+
ClickedToggleFeed: {},
|
|
13
|
+
AcquiredFeedSocket: { socketId: S.String },
|
|
14
|
+
ReleasedFeedSocket: {},
|
|
15
|
+
FailedAcquireFeedSocket: { error: S.String },
|
|
14
16
|
});
|
|
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
17
|
const FeedSocketResource = ManagedResource.tag()('FeedSocket');
|
|
26
18
|
const PresenceResource = ManagedResource.tag()('Presence');
|
|
27
19
|
export const feedResources = ManagedResource.make()(entry => ({
|
|
@@ -30,18 +22,18 @@ export const feedResources = ManagedResource.make()(entry => ({
|
|
|
30
22
|
modelToMaybeRequirements: model => model.isFeedOpen ? Option.some({ channel: 'general' }) : Option.none(),
|
|
31
23
|
acquire: () => Effect.succeed({ socketId: 'live' }),
|
|
32
24
|
release: () => Effect.void,
|
|
33
|
-
onAcquired: socket => AcquiredFeedSocket({ socketId: socket.socketId }),
|
|
34
|
-
onReleased: () => ReleasedFeedSocket(),
|
|
35
|
-
onAcquireError: error => FailedAcquireFeedSocket({ error: String(error) }),
|
|
25
|
+
onAcquired: socket => Message.AcquiredFeedSocket({ socketId: socket.socketId }),
|
|
26
|
+
onReleased: () => Message.ReleasedFeedSocket(),
|
|
27
|
+
onAcquireError: error => Message.FailedAcquireFeedSocket({ error: String(error) }),
|
|
36
28
|
}),
|
|
37
29
|
presence: entry(S.Option(S.Null), {
|
|
38
30
|
resource: PresenceResource,
|
|
39
31
|
modelToMaybeRequirements: model => model.isFeedOpen ? Option.some(null) : Option.none(),
|
|
40
32
|
acquire: () => Effect.succeed('online'),
|
|
41
33
|
release: () => Effect.void,
|
|
42
|
-
onAcquired: () => AcquiredFeedSocket({ socketId: 'presence' }),
|
|
43
|
-
onReleased: () => ReleasedFeedSocket(),
|
|
44
|
-
onAcquireError: error => FailedAcquireFeedSocket({ error: String(error) }),
|
|
34
|
+
onAcquired: () => Message.AcquiredFeedSocket({ socketId: 'presence' }),
|
|
35
|
+
onReleased: () => Message.ReleasedFeedSocket(),
|
|
36
|
+
onAcquireError: error => Message.FailedAcquireFeedSocket({ error: String(error) }),
|
|
45
37
|
}),
|
|
46
38
|
}));
|
|
47
39
|
// INIT
|
|
@@ -50,20 +42,17 @@ export const initialModel = Model.make({
|
|
|
50
42
|
status: 'Disconnected',
|
|
51
43
|
});
|
|
52
44
|
// UPDATE
|
|
53
|
-
export const update = (model, message) =>
|
|
45
|
+
export const update = (model, message) => Message.match(message, {
|
|
54
46
|
ClickedToggleFeed: () => [evo(model, { isFeedOpen: Boolean.not }), []],
|
|
55
47
|
AcquiredFeedSocket: () => [evo(model, { status: () => 'Connected' }), []],
|
|
56
48
|
ReleasedFeedSocket: () => [
|
|
57
49
|
evo(model, { status: () => 'Disconnected' }),
|
|
58
50
|
[],
|
|
59
51
|
],
|
|
60
|
-
FailedAcquireFeedSocket: () => [
|
|
61
|
-
|
|
62
|
-
[],
|
|
63
|
-
],
|
|
64
|
-
}));
|
|
52
|
+
FailedAcquireFeedSocket: () => [evo(model, { status: () => 'Failed' }), []],
|
|
53
|
+
});
|
|
65
54
|
// VIEW
|
|
66
55
|
export const view = (model, h) => h.div([], [
|
|
67
56
|
h.span([h.Role('status')], [model.status]),
|
|
68
|
-
h.button([h.OnClick(ClickedToggleFeed()), h.Role('button')], [model.isFeedOpen ? 'Close feed' : 'Open feed']),
|
|
57
|
+
h.button([h.OnClick(Message.ClickedToggleFeed()), h.Role('button')], [model.isFeedOpen ? 'Close feed' : 'Open feed']),
|
|
69
58
|
]);
|
|
@@ -5,13 +5,14 @@ export type Model = Readonly<{
|
|
|
5
5
|
receivedFiles: ReadonlyArray<File>;
|
|
6
6
|
}>;
|
|
7
7
|
export declare const initialModel: Model;
|
|
8
|
-
export declare const
|
|
9
|
-
|
|
8
|
+
export declare const Message: import("../../schema/index.js").MessageUnion<{
|
|
9
|
+
readonly ReceivedFiles: {
|
|
10
|
+
readonly files: S.$Array<S.Schema<globalThis.File>>;
|
|
11
|
+
};
|
|
10
12
|
}>;
|
|
11
|
-
export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"ReceivedFiles", {
|
|
12
|
-
files: S.$Array<S.Schema<globalThis.File>>;
|
|
13
|
-
}>]>;
|
|
14
13
|
export type Message = typeof Message.Type;
|
|
15
|
-
export declare const update: (model: Model, message: Message) => readonly [
|
|
14
|
+
export declare const update: (model: Model, message: Message) => readonly [Readonly<{
|
|
15
|
+
receivedFiles: ReadonlyArray<File>;
|
|
16
|
+
}>, readonly never[]];
|
|
16
17
|
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
17
18
|
//# 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,
|
|
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;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,OAAO;;;;EAElB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO;mBAfpC,aAAa,CAAC,IAAI,CAAC;qBAkBhC,CAAA;AAIJ,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IA4B5D,CAAA"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Schema as S } from 'effect';
|
|
2
2
|
import { File } from '../../file/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { defineMessageUnion } from '../../message/index.js';
|
|
4
4
|
export const initialModel = { receivedFiles: [] };
|
|
5
5
|
// MESSAGE
|
|
6
|
-
export const
|
|
7
|
-
|
|
6
|
+
export const Message = defineMessageUnion({
|
|
7
|
+
ReceivedFiles: { files: S.Array(File) },
|
|
8
|
+
});
|
|
8
9
|
// UPDATE
|
|
9
|
-
export const update = (model, message) =>
|
|
10
|
+
export const update = (model, message) => Message.match(message, {
|
|
10
11
|
ReceivedFiles: ({ files }) => [{ ...model, receivedFiles: files }, []],
|
|
11
|
-
})
|
|
12
|
+
});
|
|
12
13
|
// VIEW
|
|
13
14
|
export const view = (model, h) => {
|
|
14
15
|
return h.div([], [
|
|
@@ -16,12 +17,12 @@ export const view = (model, h) => {
|
|
|
16
17
|
h.Key('file-input'),
|
|
17
18
|
h.AriaLabel('resume'),
|
|
18
19
|
h.Type('file'),
|
|
19
|
-
h.OnFileChange(files => ReceivedFiles({ files })),
|
|
20
|
+
h.OnFileChange(files => Message.ReceivedFiles({ files })),
|
|
20
21
|
]),
|
|
21
22
|
h.div([
|
|
22
23
|
h.Key('drop-zone'),
|
|
23
24
|
h.AriaLabel('attachments'),
|
|
24
|
-
h.OnDropFiles(files => ReceivedFiles({ files })),
|
|
25
|
+
h.OnDropFiles(files => Message.ReceivedFiles({ files })),
|
|
25
26
|
], ['Drop files here']),
|
|
26
27
|
h.div([h.Key('received-count')], [`count=${String(model.receivedFiles.length)}`]),
|
|
27
28
|
h.div([h.Key('received-names')], [`names=${model.receivedFiles.map(file => file.name).join(',')}`]),
|
|
@@ -4,23 +4,27 @@ export declare const ChildModel: S.Struct<{
|
|
|
4
4
|
readonly status: S.Literals<readonly ["Idle", "Submitting", "Submitted"]>;
|
|
5
5
|
}>;
|
|
6
6
|
export type ChildModel = typeof ChildModel.Type;
|
|
7
|
-
export declare const
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
export declare const ChildMessage: import("../../schema/index.js").MessageUnion<{
|
|
8
|
+
readonly SubmittedForm: {};
|
|
9
|
+
readonly SucceededSubmitForm: {
|
|
10
|
+
readonly id: S.String;
|
|
11
|
+
};
|
|
12
|
+
readonly CancelledForm: {};
|
|
13
|
+
readonly CompletedResetForm: {};
|
|
10
14
|
}>;
|
|
11
|
-
export declare const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
id: S.String;
|
|
15
|
-
}>, import("../../schema/index.js").CallableTaggedStruct<"CancelledForm", {}>, import("../../schema/index.js").CallableTaggedStruct<"CompletedResetForm", {}>]>;
|
|
15
|
+
export declare const SubmittedForm: import("../../schema/index.js").CallableTaggedStruct<"SubmittedForm", {}>, SucceededSubmitForm: import("../../schema/index.js").CallableTaggedStruct<"SucceededSubmitForm", {
|
|
16
|
+
readonly id: S.String;
|
|
17
|
+
}>, CancelledForm: import("../../schema/index.js").CallableTaggedStruct<"CancelledForm", {}>, CompletedResetForm: import("../../schema/index.js").CallableTaggedStruct<"CompletedResetForm", {}>;
|
|
16
18
|
export type ChildMessage = typeof ChildMessage.Type;
|
|
17
|
-
export declare const
|
|
18
|
-
|
|
19
|
+
export declare const ChildOutMessage: import("../../schema/index.js").MessageUnion<{
|
|
20
|
+
readonly RequestedSave: {
|
|
21
|
+
readonly id: S.String;
|
|
22
|
+
};
|
|
23
|
+
readonly RequestedCancel: {};
|
|
19
24
|
}>;
|
|
20
|
-
export declare const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}>, import("../../schema/index.js").CallableTaggedStruct<"RequestedCancel", {}>]>;
|
|
25
|
+
export declare const RequestedSave: import("../../schema/index.js").CallableTaggedStruct<"RequestedSave", {
|
|
26
|
+
readonly id: S.String;
|
|
27
|
+
}>, RequestedCancel: import("../../schema/index.js").CallableTaggedStruct<"RequestedCancel", {}>;
|
|
24
28
|
export type ChildOutMessage = typeof ChildOutMessage.Type;
|
|
25
29
|
export declare const SubmitForm: Command.CommandDefinitionNoArgs<"SubmitForm", Effect.Effect<{
|
|
26
30
|
readonly _tag: "SucceededSubmitForm";
|
|
@@ -39,17 +43,29 @@ export declare const ParentModel: S.Struct<{
|
|
|
39
43
|
readonly cancelled: S.Boolean;
|
|
40
44
|
}>;
|
|
41
45
|
export type ParentModel = typeof ParentModel.Type;
|
|
42
|
-
export declare const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
export declare const ParentMessage: import("../../schema/index.js").MessageUnion<{
|
|
47
|
+
readonly GotChildMessage: {
|
|
48
|
+
readonly message: import("../../schema/index.js").MessageUnion<{
|
|
49
|
+
readonly SubmittedForm: {};
|
|
50
|
+
readonly SucceededSubmitForm: {
|
|
51
|
+
readonly id: S.String;
|
|
52
|
+
};
|
|
53
|
+
readonly CancelledForm: {};
|
|
54
|
+
readonly CompletedResetForm: {};
|
|
55
|
+
}>;
|
|
56
|
+
};
|
|
57
|
+
readonly CompletedParentReset: {};
|
|
46
58
|
}>;
|
|
47
|
-
export declare const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
59
|
+
export declare const GotChildMessage: import("../../schema/index.js").CallableTaggedStruct<"GotChildMessage", {
|
|
60
|
+
readonly message: import("../../schema/index.js").MessageUnion<{
|
|
61
|
+
readonly SubmittedForm: {};
|
|
62
|
+
readonly SucceededSubmitForm: {
|
|
63
|
+
readonly id: S.String;
|
|
64
|
+
};
|
|
65
|
+
readonly CancelledForm: {};
|
|
66
|
+
readonly CompletedResetForm: {};
|
|
67
|
+
}>;
|
|
68
|
+
}>, CompletedParentReset: import("../../schema/index.js").CallableTaggedStruct<"CompletedParentReset", {}>;
|
|
53
69
|
export type ParentMessage = typeof ParentMessage.Type;
|
|
54
70
|
export declare const initialParentModel: ParentModel;
|
|
55
71
|
export declare const parentUpdate: (parentModel: ParentModel, message: ParentMessage) => readonly [ParentModel, ReadonlyArray<Command.Command<ParentMessage>>];
|
|
@@ -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,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEpD,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAKjD,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,GACtB,QAAQ,UAAU,EAClB,SAAS,YAAY,KACpB,SAAS,CACV,UAAU,EACV,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAC5C,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAyB5B,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;AAID,eAAO,MAAM,YAAY,GACvB,aAAa,WAAW,EACxB,SAAS,aAAa,KACrB,SAAS,CAAC,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CA+BnE,CAAA"}
|
|
@@ -1,38 +1,37 @@
|
|
|
1
|
-
import { Effect,
|
|
1
|
+
import { Effect, Option, Schema as S } from 'effect';
|
|
2
2
|
import * as Command from '../../command/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { defineMessageUnion } from '../../message/index.js';
|
|
4
4
|
// CHILD MODEL
|
|
5
5
|
export const ChildModel = S.Struct({
|
|
6
6
|
status: S.Literals(['Idle', 'Submitting', 'Submitted']),
|
|
7
7
|
});
|
|
8
8
|
// CHILD MESSAGE
|
|
9
|
-
export const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
CancelledForm,
|
|
17
|
-
CompletedResetForm,
|
|
18
|
-
]);
|
|
9
|
+
export const ChildMessage = defineMessageUnion({
|
|
10
|
+
SubmittedForm: {},
|
|
11
|
+
SucceededSubmitForm: { id: S.String },
|
|
12
|
+
CancelledForm: {},
|
|
13
|
+
CompletedResetForm: {},
|
|
14
|
+
});
|
|
15
|
+
export const { SubmittedForm, SucceededSubmitForm, CancelledForm, CompletedResetForm, } = ChildMessage;
|
|
19
16
|
// CHILD OUT MESSAGE
|
|
20
|
-
export const
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
export const ChildOutMessage = defineMessageUnion({
|
|
18
|
+
RequestedSave: { id: S.String },
|
|
19
|
+
RequestedCancel: {},
|
|
20
|
+
});
|
|
21
|
+
export const { RequestedSave, RequestedCancel } = ChildOutMessage;
|
|
23
22
|
// CHILD COMMAND
|
|
24
23
|
export const SubmitForm = Command.define('SubmitForm', {
|
|
25
|
-
messages: [SucceededSubmitForm],
|
|
26
|
-
execute: Effect.sync(() => SucceededSubmitForm({ id: 'abc' })),
|
|
24
|
+
messages: [ChildMessage.SucceededSubmitForm],
|
|
25
|
+
execute: Effect.sync(() => ChildMessage.SucceededSubmitForm({ id: 'abc' })),
|
|
27
26
|
});
|
|
28
27
|
export const ResetForm = Command.define('ResetForm', {
|
|
29
|
-
messages: [CompletedResetForm],
|
|
30
|
-
execute: Effect.sync(() => CompletedResetForm()),
|
|
28
|
+
messages: [ChildMessage.CompletedResetForm],
|
|
29
|
+
execute: Effect.sync(() => ChildMessage.CompletedResetForm()),
|
|
31
30
|
});
|
|
32
31
|
// CHILD INIT
|
|
33
32
|
export const initialChildModel = { status: 'Idle' };
|
|
34
33
|
// CHILD UPDATE
|
|
35
|
-
export const childUpdate = (_model, message) =>
|
|
34
|
+
export const childUpdate = (_model, message) => ChildMessage.match(message, {
|
|
36
35
|
SubmittedForm: () => [
|
|
37
36
|
{ status: 'Submitting' },
|
|
38
37
|
[SubmitForm()],
|
|
@@ -41,15 +40,15 @@ export const childUpdate = (_model, message) => M.value(message).pipe(M.withRetu
|
|
|
41
40
|
SucceededSubmitForm: ({ id }) => [
|
|
42
41
|
{ status: 'Submitted' },
|
|
43
42
|
[ResetForm()],
|
|
44
|
-
Option.some(RequestedSave({ id })),
|
|
43
|
+
Option.some(ChildOutMessage.RequestedSave({ id })),
|
|
45
44
|
],
|
|
46
45
|
CancelledForm: () => [
|
|
47
46
|
{ status: 'Idle' },
|
|
48
47
|
[],
|
|
49
|
-
Option.some(RequestedCancel()),
|
|
48
|
+
Option.some(ChildOutMessage.RequestedCancel()),
|
|
50
49
|
],
|
|
51
50
|
CompletedResetForm: () => [{ status: 'Idle' }, [], Option.none()],
|
|
52
|
-
})
|
|
51
|
+
});
|
|
53
52
|
// PARENT MODEL
|
|
54
53
|
export const ParentModel = S.Struct({
|
|
55
54
|
child: ChildModel,
|
|
@@ -57,11 +56,11 @@ export const ParentModel = S.Struct({
|
|
|
57
56
|
cancelled: S.Boolean,
|
|
58
57
|
});
|
|
59
58
|
// PARENT MESSAGE
|
|
60
|
-
export const
|
|
61
|
-
message: ChildMessage,
|
|
59
|
+
export const ParentMessage = defineMessageUnion({
|
|
60
|
+
GotChildMessage: { message: ChildMessage },
|
|
61
|
+
CompletedParentReset: {},
|
|
62
62
|
});
|
|
63
|
-
export const CompletedParentReset =
|
|
64
|
-
export const ParentMessage = S.Union([GotChildMessage, CompletedParentReset]);
|
|
63
|
+
export const { GotChildMessage, CompletedParentReset } = ParentMessage;
|
|
65
64
|
// PARENT INIT
|
|
66
65
|
export const initialParentModel = {
|
|
67
66
|
child: { status: 'Idle' },
|
|
@@ -69,12 +68,12 @@ export const initialParentModel = {
|
|
|
69
68
|
cancelled: false,
|
|
70
69
|
};
|
|
71
70
|
// PARENT UPDATE
|
|
72
|
-
export const parentUpdate = (parentModel, message) =>
|
|
71
|
+
export const parentUpdate = (parentModel, message) => ParentMessage.match(message, {
|
|
73
72
|
GotChildMessage: ({ message: childMessage }) => {
|
|
74
73
|
const [nextChild, commands, maybeOutMessage] = childUpdate(parentModel.child, childMessage);
|
|
75
74
|
const nextParent = Option.match(maybeOutMessage, {
|
|
76
75
|
onNone: () => ({ ...parentModel, child: nextChild }),
|
|
77
|
-
onSome: outMessage =>
|
|
76
|
+
onSome: outMessage => ChildOutMessage.match(outMessage, {
|
|
78
77
|
RequestedSave: ({ id }) => ({
|
|
79
78
|
...parentModel,
|
|
80
79
|
child: nextChild,
|
|
@@ -85,10 +84,10 @@ export const parentUpdate = (parentModel, message) => M.value(message).pipe(M.wi
|
|
|
85
84
|
child: nextChild,
|
|
86
85
|
cancelled: true,
|
|
87
86
|
}),
|
|
88
|
-
})
|
|
87
|
+
}),
|
|
89
88
|
});
|
|
90
|
-
const mappedCommands = Command.mapMessages(commands, childMessage => GotChildMessage({ message: childMessage }));
|
|
89
|
+
const mappedCommands = Command.mapMessages(commands, childMessage => ParentMessage.GotChildMessage({ message: childMessage }));
|
|
91
90
|
return [nextParent, mappedCommands];
|
|
92
91
|
},
|
|
93
92
|
CompletedParentReset: () => [parentModel, []],
|
|
94
|
-
})
|
|
93
|
+
});
|
|
@@ -8,19 +8,24 @@ export declare const Model: S.Struct<{
|
|
|
8
8
|
readonly changed: S.String;
|
|
9
9
|
}>;
|
|
10
10
|
export type Model = typeof Model.Type;
|
|
11
|
-
export declare const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
export declare const Message: import("../../schema/index.js").MessageUnion<{
|
|
12
|
+
readonly ClickedButton: {};
|
|
13
|
+
readonly DoubleClickedButton: {};
|
|
14
|
+
readonly HoveredTarget: {};
|
|
15
|
+
readonly FocusedInput: {};
|
|
16
|
+
readonly BlurredInput: {};
|
|
17
|
+
readonly ChangedSelect: {
|
|
18
|
+
readonly value: S.String;
|
|
19
|
+
};
|
|
18
20
|
}>;
|
|
19
|
-
export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"ClickedButton", {}>, import("../../schema/index.js").CallableTaggedStruct<"DoubleClickedButton", {}>, import("../../schema/index.js").CallableTaggedStruct<"HoveredTarget", {}>, import("../../schema/index.js").CallableTaggedStruct<"FocusedInput", {}>, import("../../schema/index.js").CallableTaggedStruct<"BlurredInput", {}>, import("../../schema/index.js").CallableTaggedStruct<"ChangedSelect", {
|
|
20
|
-
value: S.String;
|
|
21
|
-
}>]>;
|
|
22
21
|
export type Message = typeof Message.Type;
|
|
23
22
|
export declare const initialModel: Model;
|
|
24
|
-
export declare const update: (model: Model, message: Message) => readonly [
|
|
23
|
+
export declare const update: (model: Model, message: Message) => readonly [{
|
|
24
|
+
readonly clicks: number;
|
|
25
|
+
readonly doubleClicks: number;
|
|
26
|
+
readonly hovered: boolean;
|
|
27
|
+
readonly focused: boolean;
|
|
28
|
+
readonly changed: string;
|
|
29
|
+
}, readonly never[]];
|
|
25
30
|
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
26
31
|
//# 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,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEpC,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,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;;;;;;oBAWjD,CAAA;AAIJ,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IA+B5D,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Schema as S } from 'effect';
|
|
2
|
+
import { defineMessageUnion } from '../../message/index.js';
|
|
3
3
|
// MODEL
|
|
4
4
|
export const Model = S.Struct({
|
|
5
5
|
clicks: S.Number,
|
|
@@ -9,20 +9,14 @@ export const Model = S.Struct({
|
|
|
9
9
|
changed: S.String,
|
|
10
10
|
});
|
|
11
11
|
// MESSAGE
|
|
12
|
-
export const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
DoubleClickedButton,
|
|
21
|
-
HoveredTarget,
|
|
22
|
-
FocusedInput,
|
|
23
|
-
BlurredInput,
|
|
24
|
-
ChangedSelect,
|
|
25
|
-
]);
|
|
12
|
+
export const Message = defineMessageUnion({
|
|
13
|
+
ClickedButton: {},
|
|
14
|
+
DoubleClickedButton: {},
|
|
15
|
+
HoveredTarget: {},
|
|
16
|
+
FocusedInput: {},
|
|
17
|
+
BlurredInput: {},
|
|
18
|
+
ChangedSelect: { value: S.String },
|
|
19
|
+
});
|
|
26
20
|
// INIT
|
|
27
21
|
export const initialModel = {
|
|
28
22
|
clicks: 0,
|
|
@@ -32,7 +26,7 @@ export const initialModel = {
|
|
|
32
26
|
changed: '',
|
|
33
27
|
};
|
|
34
28
|
// UPDATE
|
|
35
|
-
export const update = (model, message) =>
|
|
29
|
+
export const update = (model, message) => Message.match(message, {
|
|
36
30
|
ClickedButton: () => [{ ...model, clicks: model.clicks + 1 }, []],
|
|
37
31
|
DoubleClickedButton: () => [
|
|
38
32
|
{ ...model, doubleClicks: model.doubleClicks + 1 },
|
|
@@ -42,23 +36,26 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
|
|
|
42
36
|
FocusedInput: () => [{ ...model, focused: true }, []],
|
|
43
37
|
BlurredInput: () => [{ ...model, focused: false }, []],
|
|
44
38
|
ChangedSelect: ({ value }) => [{ ...model, changed: value }, []],
|
|
45
|
-
})
|
|
39
|
+
});
|
|
46
40
|
// VIEW
|
|
47
41
|
export const view = (model, h) => {
|
|
48
42
|
return h.div([], [
|
|
49
43
|
h.button([
|
|
50
|
-
h.OnClick(ClickedButton()),
|
|
51
|
-
h.OnDoubleClick(DoubleClickedButton()),
|
|
52
|
-
h.OnMouseEnter(HoveredTarget()),
|
|
44
|
+
h.OnClick(Message.ClickedButton()),
|
|
45
|
+
h.OnDoubleClick(Message.DoubleClickedButton()),
|
|
46
|
+
h.OnMouseEnter(Message.HoveredTarget()),
|
|
53
47
|
h.AriaLabel('action'),
|
|
54
48
|
], [`clicks=${model.clicks} dbl=${model.doubleClicks}`]),
|
|
55
49
|
h.input([
|
|
56
50
|
h.Role('textbox'),
|
|
57
51
|
h.AriaLabel('name'),
|
|
58
|
-
h.OnFocus(FocusedInput()),
|
|
59
|
-
h.OnBlur(BlurredInput()),
|
|
52
|
+
h.OnFocus(Message.FocusedInput()),
|
|
53
|
+
h.OnBlur(Message.BlurredInput()),
|
|
60
54
|
]),
|
|
61
|
-
h.select([
|
|
55
|
+
h.select([
|
|
56
|
+
h.AriaLabel('fruit'),
|
|
57
|
+
h.OnChange(value => Message.ChangedSelect({ value })),
|
|
58
|
+
], [
|
|
62
59
|
h.option([h.Value('apple')], ['Apple']),
|
|
63
60
|
h.option([h.Value('banana')], ['Banana']),
|
|
64
61
|
]),
|
|
@@ -5,19 +5,19 @@ export declare const Model: S.Struct<{
|
|
|
5
5
|
readonly isShifted: S.Boolean;
|
|
6
6
|
}>;
|
|
7
7
|
export type Model = typeof Model.Type;
|
|
8
|
-
export declare const
|
|
9
|
-
|
|
8
|
+
export declare const Message: import("../../schema/index.js").MessageUnion<{
|
|
9
|
+
readonly PressedKey: {
|
|
10
|
+
readonly key: S.String;
|
|
11
|
+
};
|
|
12
|
+
readonly PressedShiftKey: {
|
|
13
|
+
readonly key: S.String;
|
|
14
|
+
};
|
|
10
15
|
}>;
|
|
11
|
-
export declare const PressedShiftKey: import("../../schema/index.js").CallableTaggedStruct<"PressedShiftKey", {
|
|
12
|
-
key: S.String;
|
|
13
|
-
}>;
|
|
14
|
-
export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"PressedKey", {
|
|
15
|
-
key: S.String;
|
|
16
|
-
}>, import("../../schema/index.js").CallableTaggedStruct<"PressedShiftKey", {
|
|
17
|
-
key: S.String;
|
|
18
|
-
}>]>;
|
|
19
16
|
export type Message = typeof Message.Type;
|
|
20
17
|
export declare const initialModel: Model;
|
|
21
|
-
export declare const update: (model: Model, message: Message) => readonly [
|
|
18
|
+
export declare const update: (model: Model, message: Message) => readonly [{
|
|
19
|
+
readonly lastKey: string;
|
|
20
|
+
readonly isShifted: boolean;
|
|
21
|
+
}, readonly never[]];
|
|
22
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,
|
|
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;AAK5D,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;;;oBAOjD,CAAA;AAIJ,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAoB5D,CAAA"}
|