@jikan0/ui 0.0.3 → 2.0.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 +30 -1
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/ui.d.ts +214 -0
- package/dist/lib/ui.js +393 -0
- package/dist/lib/ui.js.map +1 -0
- package/package.json +35 -9
- package/src/index.js +0 -5
- package/src/index.js.map +0 -1
- package/src/lib/ui.d.ts +0 -150
- package/src/lib/ui.js +0 -218
- package/src/lib/ui.js.map +0 -1
- /package/{src → dist}/index.d.ts +0 -0
package/README.md
CHANGED
|
@@ -1 +1,30 @@
|
|
|
1
|
-
|
|
1
|
+
# Workout model
|
|
2
|
+
|
|
3
|
+
The workout model is pure: applications own state and interpret transition
|
|
4
|
+
results.
|
|
5
|
+
|
|
6
|
+
```ts
|
|
7
|
+
const result = reduce(MakeSimpleModeRoundsSelectedEvent('2'))(state);
|
|
8
|
+
if (result.ok) {
|
|
9
|
+
state = result.state;
|
|
10
|
+
// Interpret result.effects once, after committing, outside model evaluation.
|
|
11
|
+
} else {
|
|
12
|
+
// state is unchanged and effects is empty.
|
|
13
|
+
showIssues(result.issues); // each issue has path, code, message
|
|
14
|
+
}
|
|
15
|
+
const projection = view(state);
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Numeric inputs accept `bigint`, safe integral numbers, or whole-number text.
|
|
19
|
+
Incomplete text, fractions, NaN/infinity, negative elapsed time, and unsafe
|
|
20
|
+
conversions return issues. Text is limited to 17 characters before parsing.
|
|
21
|
+
Exercise duration is positive; rest is nonnegative, and zero omits rest stages.
|
|
22
|
+
Durations use `MAX_WORKOUT_DURATION_MS = Number.MAX_SAFE_INTEGER`; rounds are
|
|
23
|
+
1–`MAX_ROUNDS` (5000). `simpleModeSelectorToProgram` returns the same explicit
|
|
24
|
+
success/issues shape.
|
|
25
|
+
|
|
26
|
+
`stopped` is ready: Start begins preparation, then exercise/rest stages with no
|
|
27
|
+
final rest. Exercise rounds are ordinal 1–N; preparation is round 0. Pause and
|
|
28
|
+
Continue retain stage/progress. Running and paused states ignore settings actions;
|
|
29
|
+
Stop preserves settings and returns to `stopped`; natural completion is distinct.
|
|
30
|
+
Views expose actions and progress so renderers need no transition rules.
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./lib/ui"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB"}
|
package/dist/lib/ui.d.ts
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import type { Program, NonEmptyState as NonEmptyFsmState } from '@jikan0/fsm';
|
|
2
|
+
import type { QueueItem, TransitionResult, ValidationIssue } from '@jikan0/fsm';
|
|
3
|
+
import * as S from 'effect/Schema';
|
|
4
|
+
export type StartClickedEvent = {
|
|
5
|
+
_tag: 'StartClicked';
|
|
6
|
+
};
|
|
7
|
+
export declare const StartClickedEvent: () => StartClickedEvent;
|
|
8
|
+
export type StopClickedEvent = {
|
|
9
|
+
_tag: 'StopClicked';
|
|
10
|
+
};
|
|
11
|
+
export declare const StopClickedEvent: () => StopClickedEvent;
|
|
12
|
+
export type PauseClickedEvent = {
|
|
13
|
+
_tag: 'PauseClicked';
|
|
14
|
+
};
|
|
15
|
+
export declare const PauseClickedEvent: () => PauseClickedEvent;
|
|
16
|
+
export type ContinueClickedEvent = {
|
|
17
|
+
_tag: 'ContinueClicked';
|
|
18
|
+
};
|
|
19
|
+
export declare const ContinueClickedEvent: () => ContinueClickedEvent;
|
|
20
|
+
export type TimePassedEvent = {
|
|
21
|
+
_tag: 'TimePassed';
|
|
22
|
+
timeMs: NumericInput;
|
|
23
|
+
};
|
|
24
|
+
export declare const TimePassedEvent: (timeMs: NumericInput) => TimePassedEvent;
|
|
25
|
+
declare const SIMPLE_MODE: 'simple';
|
|
26
|
+
type SimpleMode = typeof SIMPLE_MODE;
|
|
27
|
+
declare const MODES: readonly ["simple"];
|
|
28
|
+
type Mode = (typeof MODES)[number];
|
|
29
|
+
export declare const DEFAULT_MODE: "simple";
|
|
30
|
+
export declare const DEFAULT_EXERCISE_TIME_MS: bigint;
|
|
31
|
+
export declare const DEFAULT_REST_TIME_MS: bigint;
|
|
32
|
+
export declare const DEFAULT_ROUNDS: bigint;
|
|
33
|
+
export type ModeSelectedEvent<M extends Mode = Mode> = {
|
|
34
|
+
_tag: 'ModeSelected';
|
|
35
|
+
mode: M;
|
|
36
|
+
};
|
|
37
|
+
export declare const ModeSelectedEvent: <M extends Mode>(mode: M) => ModeSelectedEvent<M>;
|
|
38
|
+
export type SimpleModeExerciseTimeSelectedEvent = {
|
|
39
|
+
_tag: 'SimpleModeExerciseTimeSelected';
|
|
40
|
+
exerciseTimeMs: NumericInput;
|
|
41
|
+
};
|
|
42
|
+
export declare const MakeSimpleModeExerciseTimeSelectedEvent: (exerciseTimeMs: NumericInput) => SimpleModeExerciseTimeSelectedEvent;
|
|
43
|
+
export type SimpleModeRestTimeSelectedEvent = {
|
|
44
|
+
_tag: 'SimpleModeRestTimeSelected';
|
|
45
|
+
restTimeMs: NumericInput;
|
|
46
|
+
};
|
|
47
|
+
export declare const MakeSimpleModeRestTimeSelectedEvent: (restTimeMs: NumericInput) => SimpleModeRestTimeSelectedEvent;
|
|
48
|
+
export type SimpleModeRoundsSelectedEvent = {
|
|
49
|
+
_tag: 'SimpleModeRoundsSelected';
|
|
50
|
+
rounds: NumericInput;
|
|
51
|
+
};
|
|
52
|
+
export declare const MakeSimpleModeRoundsSelectedEvent: (rounds: NumericInput) => SimpleModeRoundsSelectedEvent;
|
|
53
|
+
export type Event = StartClickedEvent | StopClickedEvent | PauseClickedEvent | ContinueClickedEvent | ModeSelectedEvent | SimpleModeExerciseTimeSelectedEvent | SimpleModeRestTimeSelectedEvent | SimpleModeRoundsSelectedEvent | TimePassedEvent;
|
|
54
|
+
export type Action = Event;
|
|
55
|
+
declare const RUNNING_STATE_RUNNING: 'running';
|
|
56
|
+
declare const RUNNING_STATE_PAUSED: 'paused';
|
|
57
|
+
declare const RUNNING_STATE_STOPPED: 'stopped';
|
|
58
|
+
declare const RUNNING_STATE_COMPLETED: 'completed';
|
|
59
|
+
type RunningStateRunning = typeof RUNNING_STATE_RUNNING;
|
|
60
|
+
type RunningStatePaused = typeof RUNNING_STATE_PAUSED;
|
|
61
|
+
type RunningStateStopped = typeof RUNNING_STATE_STOPPED;
|
|
62
|
+
type RunningState = typeof RUNNING_STATE_RUNNING | typeof RUNNING_STATE_PAUSED | typeof RUNNING_STATE_STOPPED | typeof RUNNING_STATE_COMPLETED;
|
|
63
|
+
type Button<E> = {
|
|
64
|
+
active: true;
|
|
65
|
+
onClick: E;
|
|
66
|
+
} | {
|
|
67
|
+
active: false;
|
|
68
|
+
};
|
|
69
|
+
type ActiveButton<E> = Button<E> & {
|
|
70
|
+
active: true;
|
|
71
|
+
};
|
|
72
|
+
type InactiveButton<E = never> = Button<E> & {
|
|
73
|
+
active: false;
|
|
74
|
+
};
|
|
75
|
+
type ViewActiveValue = {
|
|
76
|
+
startButton: Button<StartClickedEvent>;
|
|
77
|
+
stopButton: Button<StopClickedEvent>;
|
|
78
|
+
pauseButton: Button<PauseClickedEvent>;
|
|
79
|
+
continueButton: Button<ContinueClickedEvent>;
|
|
80
|
+
};
|
|
81
|
+
export type State<M extends Mode = Mode> = {
|
|
82
|
+
mode: ModeSelectorState & {
|
|
83
|
+
selected: M;
|
|
84
|
+
};
|
|
85
|
+
} & ({
|
|
86
|
+
running: RunningStateRunning | RunningStatePaused;
|
|
87
|
+
fsmState: NonEmptyFsmState<StepPerMode[M]>;
|
|
88
|
+
} | {
|
|
89
|
+
running: RunningStateStopped | typeof RUNNING_STATE_COMPLETED;
|
|
90
|
+
});
|
|
91
|
+
export declare const SimpleModeSettings: S.Struct<{
|
|
92
|
+
exerciseTimeMs: typeof S.BigIntFromSelf;
|
|
93
|
+
restTimeMs: typeof S.BigIntFromSelf;
|
|
94
|
+
rounds: typeof S.BigIntFromSelf;
|
|
95
|
+
}>;
|
|
96
|
+
export type ModeSelectorSettingsValue = {
|
|
97
|
+
mode: Mode;
|
|
98
|
+
} & ({
|
|
99
|
+
mode: SimpleMode;
|
|
100
|
+
} & S.Schema.Type<typeof SimpleModeSettings>);
|
|
101
|
+
export declare const ModesSettings: S.Struct<{
|
|
102
|
+
simple: S.Struct<{
|
|
103
|
+
exerciseTimeMs: typeof S.BigIntFromSelf;
|
|
104
|
+
restTimeMs: typeof S.BigIntFromSelf;
|
|
105
|
+
rounds: typeof S.BigIntFromSelf;
|
|
106
|
+
}>;
|
|
107
|
+
}>;
|
|
108
|
+
export declare const ModeSettings: S.Struct<{
|
|
109
|
+
selected: S.Literal<["simple"]>;
|
|
110
|
+
settings: S.Struct<{
|
|
111
|
+
simple: S.Struct<{
|
|
112
|
+
exerciseTimeMs: typeof S.BigIntFromSelf;
|
|
113
|
+
restTimeMs: typeof S.BigIntFromSelf;
|
|
114
|
+
rounds: typeof S.BigIntFromSelf;
|
|
115
|
+
}>;
|
|
116
|
+
}>;
|
|
117
|
+
}>;
|
|
118
|
+
export type ModeSettings = S.Schema.Type<typeof ModeSettings>;
|
|
119
|
+
export type ModesSettings = Readonly<{
|
|
120
|
+
[k in Mode]: Readonly<Omit<ModeSelectorSettingsValue & {
|
|
121
|
+
mode: k;
|
|
122
|
+
}, 'mode'>>;
|
|
123
|
+
}> & S.Schema.Type<typeof ModeSettings>;
|
|
124
|
+
export type ModeSelectorState = Readonly<S.Schema.Type<typeof ModeSettings>>;
|
|
125
|
+
export declare const modeSelectorState0: Readonly<{
|
|
126
|
+
selected: "simple";
|
|
127
|
+
settings: Readonly<{
|
|
128
|
+
simple: Readonly<{
|
|
129
|
+
exerciseTimeMs: bigint;
|
|
130
|
+
restTimeMs: bigint;
|
|
131
|
+
rounds: bigint;
|
|
132
|
+
}>;
|
|
133
|
+
}>;
|
|
134
|
+
}>;
|
|
135
|
+
export declare const state0: State<SimpleMode>;
|
|
136
|
+
export declare const PREPARATION_STEP: 'warmup';
|
|
137
|
+
export declare const EXERCISE_STEP: 'exercise';
|
|
138
|
+
export declare const REST_STEP: 'rest';
|
|
139
|
+
export declare const SIMPLE_PROGRAM_STEPS: readonly ["warmup", "exercise", "rest"];
|
|
140
|
+
export type SimpleProgramStep = (typeof SIMPLE_PROGRAM_STEPS)[number];
|
|
141
|
+
type StepPerMode = {
|
|
142
|
+
[k in Mode]: string;
|
|
143
|
+
} & {
|
|
144
|
+
simple: SimpleProgramStep;
|
|
145
|
+
};
|
|
146
|
+
export type NumericInput = bigint | number | string;
|
|
147
|
+
export declare const MAX_ROUNDS: bigint;
|
|
148
|
+
export declare const MAX_WORKOUT_DURATION_MS: bigint;
|
|
149
|
+
export declare const simpleModeSelectorToProgram: (settings: Omit<ModeSelectorSettingsValue & {
|
|
150
|
+
mode: SimpleMode;
|
|
151
|
+
}, 'mode'>) => {
|
|
152
|
+
ok: true;
|
|
153
|
+
program: Program<SimpleProgramStep>;
|
|
154
|
+
} | {
|
|
155
|
+
ok: false;
|
|
156
|
+
issues: readonly ValidationIssue[];
|
|
157
|
+
};
|
|
158
|
+
export type ModeSelectorSettingViewModeActions<M extends Mode> = {
|
|
159
|
+
simple: {
|
|
160
|
+
setRounds: typeof MakeSimpleModeRoundsSelectedEvent;
|
|
161
|
+
setExerciseTimeMs: typeof MakeSimpleModeExerciseTimeSelectedEvent;
|
|
162
|
+
setRestTimeMs: typeof MakeSimpleModeRestTimeSelectedEvent;
|
|
163
|
+
};
|
|
164
|
+
}[M];
|
|
165
|
+
export type ModeSelectorSettingsViewValue = ModeSelectorSettingsValue;
|
|
166
|
+
export type ModeSelectorSettingsViewActions = {
|
|
167
|
+
[m in Mode]: {
|
|
168
|
+
onSelect: ModeSelectedEvent<m>;
|
|
169
|
+
} & ModeSelectorSettingViewModeActions<m>;
|
|
170
|
+
};
|
|
171
|
+
type TimerStatsCurrent<RoundKind extends string = string> = {
|
|
172
|
+
current: bigint;
|
|
173
|
+
kind: RoundKind;
|
|
174
|
+
leftMs: bigint;
|
|
175
|
+
totalMs: bigint;
|
|
176
|
+
};
|
|
177
|
+
type TimerStats<RoundKind extends string = string> = {
|
|
178
|
+
rounds: bigint;
|
|
179
|
+
round: TimerStatsCurrent<RoundKind>;
|
|
180
|
+
};
|
|
181
|
+
export type ViewValue<R extends RunningState = RunningState> = ViewActiveValue & {
|
|
182
|
+
modeSelector: {
|
|
183
|
+
value: ModeSelectorSettingsViewValue;
|
|
184
|
+
};
|
|
185
|
+
running: R;
|
|
186
|
+
} & ({
|
|
187
|
+
running: 'running';
|
|
188
|
+
startButton: InactiveButton;
|
|
189
|
+
stopButton: ActiveButton<StopClickedEvent>;
|
|
190
|
+
pauseButton: ActiveButton<PauseClickedEvent>;
|
|
191
|
+
continueButton: InactiveButton;
|
|
192
|
+
timerStats: TimerStats;
|
|
193
|
+
} | {
|
|
194
|
+
running: 'paused';
|
|
195
|
+
startButton: InactiveButton;
|
|
196
|
+
stopButton: ActiveButton<StopClickedEvent>;
|
|
197
|
+
pauseButton: InactiveButton;
|
|
198
|
+
continueButton: ActiveButton<ContinueClickedEvent>;
|
|
199
|
+
timerStats: TimerStats;
|
|
200
|
+
} | {
|
|
201
|
+
running: 'stopped' | 'completed';
|
|
202
|
+
startButton: ActiveButton<StartClickedEvent>;
|
|
203
|
+
stopButton: InactiveButton;
|
|
204
|
+
pauseButton: InactiveButton;
|
|
205
|
+
continueButton: InactiveButton;
|
|
206
|
+
modeSelector: {
|
|
207
|
+
actions: ModeSelectorSettingsViewActions;
|
|
208
|
+
};
|
|
209
|
+
});
|
|
210
|
+
type View_<S, R> = (state: S) => R;
|
|
211
|
+
export type View = View_<State, ViewValue>;
|
|
212
|
+
export declare const view: <M extends Mode = Mode>(state: State<M>) => ViewValue;
|
|
213
|
+
export declare const reduce: (action: Action) => (state: State) => TransitionResult<State, QueueItem>;
|
|
214
|
+
export {};
|
package/dist/lib/ui.js
ADDED
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.reduce = exports.view = exports.simpleModeSelectorToProgram = exports.MAX_WORKOUT_DURATION_MS = exports.MAX_ROUNDS = exports.SIMPLE_PROGRAM_STEPS = exports.REST_STEP = exports.EXERCISE_STEP = exports.PREPARATION_STEP = exports.state0 = exports.modeSelectorState0 = exports.ModeSettings = exports.ModesSettings = exports.SimpleModeSettings = exports.MakeSimpleModeRoundsSelectedEvent = exports.MakeSimpleModeRestTimeSelectedEvent = exports.MakeSimpleModeExerciseTimeSelectedEvent = exports.ModeSelectedEvent = exports.DEFAULT_ROUNDS = exports.DEFAULT_REST_TIME_MS = exports.DEFAULT_EXERCISE_TIME_MS = exports.DEFAULT_MODE = exports.TimePassedEvent = exports.ContinueClickedEvent = exports.PauseClickedEvent = exports.StopClickedEvent = exports.StartClickedEvent = void 0;
|
|
37
|
+
const fsm_1 = require("@jikan0/fsm");
|
|
38
|
+
const utils_1 = require("@jikan0/utils");
|
|
39
|
+
const fsm_2 = require("@jikan0/fsm");
|
|
40
|
+
const S = __importStar(require("effect/Schema"));
|
|
41
|
+
const StartClickedEvent = () => ({
|
|
42
|
+
_tag: 'StartClicked',
|
|
43
|
+
});
|
|
44
|
+
exports.StartClickedEvent = StartClickedEvent;
|
|
45
|
+
const StopClickedEvent = () => ({
|
|
46
|
+
_tag: 'StopClicked',
|
|
47
|
+
});
|
|
48
|
+
exports.StopClickedEvent = StopClickedEvent;
|
|
49
|
+
const PauseClickedEvent = () => ({
|
|
50
|
+
_tag: 'PauseClicked',
|
|
51
|
+
});
|
|
52
|
+
exports.PauseClickedEvent = PauseClickedEvent;
|
|
53
|
+
const ContinueClickedEvent = () => ({
|
|
54
|
+
_tag: 'ContinueClicked',
|
|
55
|
+
});
|
|
56
|
+
exports.ContinueClickedEvent = ContinueClickedEvent;
|
|
57
|
+
const TimePassedEvent = (timeMs) => ({
|
|
58
|
+
_tag: 'TimePassed',
|
|
59
|
+
timeMs,
|
|
60
|
+
});
|
|
61
|
+
exports.TimePassedEvent = TimePassedEvent;
|
|
62
|
+
const SIMPLE_MODE = 'simple';
|
|
63
|
+
const MODES = [SIMPLE_MODE];
|
|
64
|
+
exports.DEFAULT_MODE = SIMPLE_MODE;
|
|
65
|
+
exports.DEFAULT_EXERCISE_TIME_MS = BigInt(30000);
|
|
66
|
+
exports.DEFAULT_REST_TIME_MS = BigInt(10000);
|
|
67
|
+
exports.DEFAULT_ROUNDS = BigInt(10);
|
|
68
|
+
const ModeSelectedEvent = (mode) => ({
|
|
69
|
+
_tag: 'ModeSelected',
|
|
70
|
+
mode,
|
|
71
|
+
});
|
|
72
|
+
exports.ModeSelectedEvent = ModeSelectedEvent;
|
|
73
|
+
const MakeSimpleModeExerciseTimeSelectedEvent = (exerciseTimeMs) => ({
|
|
74
|
+
_tag: 'SimpleModeExerciseTimeSelected',
|
|
75
|
+
exerciseTimeMs,
|
|
76
|
+
});
|
|
77
|
+
exports.MakeSimpleModeExerciseTimeSelectedEvent = MakeSimpleModeExerciseTimeSelectedEvent;
|
|
78
|
+
const MakeSimpleModeRestTimeSelectedEvent = (restTimeMs) => ({
|
|
79
|
+
_tag: 'SimpleModeRestTimeSelected',
|
|
80
|
+
restTimeMs,
|
|
81
|
+
});
|
|
82
|
+
exports.MakeSimpleModeRestTimeSelectedEvent = MakeSimpleModeRestTimeSelectedEvent;
|
|
83
|
+
const MakeSimpleModeRoundsSelectedEvent = (rounds) => ({
|
|
84
|
+
_tag: 'SimpleModeRoundsSelected',
|
|
85
|
+
rounds,
|
|
86
|
+
});
|
|
87
|
+
exports.MakeSimpleModeRoundsSelectedEvent = MakeSimpleModeRoundsSelectedEvent;
|
|
88
|
+
const RUNNING_STATE_RUNNING = 'running';
|
|
89
|
+
const RUNNING_STATE_PAUSED = 'paused';
|
|
90
|
+
const RUNNING_STATE_STOPPED = 'stopped';
|
|
91
|
+
const RUNNING_STATE_COMPLETED = 'completed';
|
|
92
|
+
exports.SimpleModeSettings = S.Struct({
|
|
93
|
+
exerciseTimeMs: S.BigIntFromSelf,
|
|
94
|
+
restTimeMs: S.BigIntFromSelf,
|
|
95
|
+
rounds: S.BigIntFromSelf,
|
|
96
|
+
});
|
|
97
|
+
exports.ModesSettings = S.Struct({
|
|
98
|
+
simple: exports.SimpleModeSettings,
|
|
99
|
+
});
|
|
100
|
+
exports.ModeSettings = S.Struct({
|
|
101
|
+
selected: S.Literal(...MODES),
|
|
102
|
+
settings: exports.ModesSettings,
|
|
103
|
+
});
|
|
104
|
+
exports.modeSelectorState0 = Object.freeze({
|
|
105
|
+
selected: exports.DEFAULT_MODE,
|
|
106
|
+
settings: Object.freeze({
|
|
107
|
+
simple: Object.freeze({
|
|
108
|
+
exerciseTimeMs: exports.DEFAULT_EXERCISE_TIME_MS,
|
|
109
|
+
restTimeMs: exports.DEFAULT_REST_TIME_MS,
|
|
110
|
+
rounds: exports.DEFAULT_ROUNDS,
|
|
111
|
+
}),
|
|
112
|
+
}),
|
|
113
|
+
});
|
|
114
|
+
const selectorToProgram = (selector) => {
|
|
115
|
+
const settings = selector.settings[selector.selected];
|
|
116
|
+
switch (selector.selected) {
|
|
117
|
+
case SIMPLE_MODE: {
|
|
118
|
+
return (0, exports.simpleModeSelectorToProgram)(settings);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
exports.state0 = Object.freeze({
|
|
123
|
+
running: RUNNING_STATE_STOPPED,
|
|
124
|
+
mode: exports.modeSelectorState0,
|
|
125
|
+
});
|
|
126
|
+
exports.PREPARATION_STEP = 'warmup';
|
|
127
|
+
exports.EXERCISE_STEP = 'exercise';
|
|
128
|
+
exports.REST_STEP = 'rest';
|
|
129
|
+
exports.SIMPLE_PROGRAM_STEPS = [
|
|
130
|
+
exports.PREPARATION_STEP,
|
|
131
|
+
exports.EXERCISE_STEP,
|
|
132
|
+
exports.REST_STEP,
|
|
133
|
+
];
|
|
134
|
+
const PREPARATION_STEPS_SIMPLE = [
|
|
135
|
+
{
|
|
136
|
+
kind: exports.PREPARATION_STEP,
|
|
137
|
+
duration: 3000 /*TODO make configurable*/,
|
|
138
|
+
},
|
|
139
|
+
];
|
|
140
|
+
// Two stages per round (preparation replaces final rest) fit the core's bound.
|
|
141
|
+
exports.MAX_ROUNDS = BigInt(Math.floor(fsm_2.MAX_PROGRAM_STAGES / 2));
|
|
142
|
+
exports.MAX_WORKOUT_DURATION_MS = BigInt(fsm_2.MAX_DURATION);
|
|
143
|
+
const numeric = (input, path, minimum, maximum) => {
|
|
144
|
+
const fail = (message) => ({
|
|
145
|
+
ok: false,
|
|
146
|
+
issues: [{ path, code: 'invalid-number', message }],
|
|
147
|
+
});
|
|
148
|
+
if (typeof input === 'number' && !Number.isSafeInteger(input))
|
|
149
|
+
return fail('Enter a whole, safely representable number.');
|
|
150
|
+
if (typeof input !== 'bigint' &&
|
|
151
|
+
typeof input !== 'number' &&
|
|
152
|
+
typeof input !== 'string')
|
|
153
|
+
return fail('Enter a whole number.');
|
|
154
|
+
if (typeof input === 'string' && !/^[+-]?\d+$/.test(input))
|
|
155
|
+
return fail('Enter a whole number.');
|
|
156
|
+
// Reject huge text before attempting an unbounded bigint conversion.
|
|
157
|
+
if (typeof input === 'string' && input.length > 17)
|
|
158
|
+
return fail(`Enter a value between ${minimum} and ${maximum}.`);
|
|
159
|
+
const value = BigInt(input);
|
|
160
|
+
return value < minimum || value > maximum
|
|
161
|
+
? fail(`Enter a value between ${minimum} and ${maximum}.`)
|
|
162
|
+
: { ok: true, value };
|
|
163
|
+
};
|
|
164
|
+
const simpleModeSelectorToProgram = (settings) => {
|
|
165
|
+
const rounds = numeric(settings.rounds, 'rounds', BigInt(1), exports.MAX_ROUNDS);
|
|
166
|
+
const exercise = numeric(settings.exerciseTimeMs, 'exerciseTimeMs', BigInt(1), exports.MAX_WORKOUT_DURATION_MS);
|
|
167
|
+
const rest = numeric(settings.restTimeMs, 'restTimeMs', BigInt(0), exports.MAX_WORKOUT_DURATION_MS);
|
|
168
|
+
if (!rounds.ok || !exercise.ok || !rest.ok)
|
|
169
|
+
return {
|
|
170
|
+
ok: false,
|
|
171
|
+
issues: [rounds, exercise, rest].flatMap((result) => result.ok ? [] : result.issues),
|
|
172
|
+
};
|
|
173
|
+
const program = [...PREPARATION_STEPS_SIMPLE];
|
|
174
|
+
for (let i = BigInt(0); i < rounds.value; i++) {
|
|
175
|
+
program.push({ kind: exports.EXERCISE_STEP, duration: Number(exercise.value) });
|
|
176
|
+
if (rest.value > BigInt(0) && i + BigInt(1) < rounds.value)
|
|
177
|
+
program.push({ kind: exports.REST_STEP, duration: Number(rest.value) });
|
|
178
|
+
}
|
|
179
|
+
return {
|
|
180
|
+
ok: true,
|
|
181
|
+
program: Object.freeze((0, utils_1.assertRNEA)(program)),
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
exports.simpleModeSelectorToProgram = simpleModeSelectorToProgram;
|
|
185
|
+
const simpleModeStateToStats = (s, rounds) => ({
|
|
186
|
+
current: (0, utils_1.lastRNEA)(s.queue).kind === exports.PREPARATION_STEP
|
|
187
|
+
? BigInt(0)
|
|
188
|
+
: rounds -
|
|
189
|
+
BigInt(s.queue.filter((x) => x.kind === exports.EXERCISE_STEP).length) +
|
|
190
|
+
((0, utils_1.lastRNEA)(s.queue).kind === exports.EXERCISE_STEP ? BigInt(1) : BigInt(0)),
|
|
191
|
+
kind: (0, utils_1.lastRNEA)(s.queue).kind,
|
|
192
|
+
leftMs: BigInt(s.duration),
|
|
193
|
+
totalMs: BigInt((0, utils_1.lastRNEA)(s.queue).duration),
|
|
194
|
+
});
|
|
195
|
+
const modeSelectorSettingsViewActions = {
|
|
196
|
+
simple: {
|
|
197
|
+
onSelect: (0, exports.ModeSelectedEvent)('simple'),
|
|
198
|
+
setRounds: exports.MakeSimpleModeRoundsSelectedEvent,
|
|
199
|
+
setExerciseTimeMs: exports.MakeSimpleModeExerciseTimeSelectedEvent,
|
|
200
|
+
setRestTimeMs: exports.MakeSimpleModeRestTimeSelectedEvent,
|
|
201
|
+
},
|
|
202
|
+
};
|
|
203
|
+
const view = (state) => {
|
|
204
|
+
const modeSelectorValue = {
|
|
205
|
+
mode: state.mode.selected,
|
|
206
|
+
...state.mode.settings[state.mode.selected],
|
|
207
|
+
};
|
|
208
|
+
switch (state.running) {
|
|
209
|
+
case RUNNING_STATE_RUNNING: {
|
|
210
|
+
return {
|
|
211
|
+
running: state.running,
|
|
212
|
+
startButton: {
|
|
213
|
+
active: false,
|
|
214
|
+
},
|
|
215
|
+
stopButton: {
|
|
216
|
+
active: true,
|
|
217
|
+
onClick: (0, exports.StopClickedEvent)(),
|
|
218
|
+
},
|
|
219
|
+
pauseButton: {
|
|
220
|
+
active: true,
|
|
221
|
+
onClick: (0, exports.PauseClickedEvent)(),
|
|
222
|
+
},
|
|
223
|
+
continueButton: {
|
|
224
|
+
active: false,
|
|
225
|
+
},
|
|
226
|
+
modeSelector: {
|
|
227
|
+
value: modeSelectorValue,
|
|
228
|
+
},
|
|
229
|
+
timerStats: {
|
|
230
|
+
// dupe but it's a "view"!
|
|
231
|
+
rounds: modeSelectorValue.rounds,
|
|
232
|
+
round: simpleModeStateToStats(state.fsmState, modeSelectorValue.rounds),
|
|
233
|
+
},
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
case RUNNING_STATE_PAUSED: {
|
|
237
|
+
return {
|
|
238
|
+
running: state.running,
|
|
239
|
+
startButton: {
|
|
240
|
+
active: false,
|
|
241
|
+
},
|
|
242
|
+
stopButton: {
|
|
243
|
+
active: true,
|
|
244
|
+
onClick: (0, exports.StopClickedEvent)(),
|
|
245
|
+
},
|
|
246
|
+
pauseButton: {
|
|
247
|
+
active: false,
|
|
248
|
+
},
|
|
249
|
+
continueButton: {
|
|
250
|
+
active: true,
|
|
251
|
+
onClick: (0, exports.ContinueClickedEvent)(),
|
|
252
|
+
},
|
|
253
|
+
modeSelector: {
|
|
254
|
+
value: modeSelectorValue,
|
|
255
|
+
},
|
|
256
|
+
timerStats: {
|
|
257
|
+
rounds: modeSelectorValue.rounds,
|
|
258
|
+
round: simpleModeStateToStats(state.fsmState, modeSelectorValue.rounds),
|
|
259
|
+
},
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
case RUNNING_STATE_COMPLETED:
|
|
263
|
+
case RUNNING_STATE_STOPPED: {
|
|
264
|
+
return {
|
|
265
|
+
running: state.running,
|
|
266
|
+
startButton: {
|
|
267
|
+
active: true,
|
|
268
|
+
onClick: (0, exports.StartClickedEvent)(),
|
|
269
|
+
},
|
|
270
|
+
stopButton: {
|
|
271
|
+
active: false,
|
|
272
|
+
},
|
|
273
|
+
pauseButton: {
|
|
274
|
+
active: false,
|
|
275
|
+
},
|
|
276
|
+
continueButton: {
|
|
277
|
+
active: false,
|
|
278
|
+
},
|
|
279
|
+
modeSelector: {
|
|
280
|
+
value: modeSelectorValue,
|
|
281
|
+
actions: modeSelectorSettingsViewActions,
|
|
282
|
+
},
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
};
|
|
287
|
+
exports.view = view;
|
|
288
|
+
const reduce = (action) => (state) => {
|
|
289
|
+
const success = (next = state, effects = []) => ({
|
|
290
|
+
ok: true,
|
|
291
|
+
state: next,
|
|
292
|
+
effects,
|
|
293
|
+
});
|
|
294
|
+
const reject = (issues) => ({
|
|
295
|
+
ok: false,
|
|
296
|
+
state,
|
|
297
|
+
issues,
|
|
298
|
+
effects: [],
|
|
299
|
+
});
|
|
300
|
+
switch (action._tag) {
|
|
301
|
+
case 'TimePassed': {
|
|
302
|
+
const elapsed = numeric(action.timeMs, 'timeMs', BigInt(0), exports.MAX_WORKOUT_DURATION_MS);
|
|
303
|
+
if (!elapsed.ok)
|
|
304
|
+
return reject(elapsed.issues);
|
|
305
|
+
if (state.running !== 'running')
|
|
306
|
+
return success();
|
|
307
|
+
const result = (0, fsm_1.tick)(Number(elapsed.value))(state.fsmState);
|
|
308
|
+
if (!result.ok)
|
|
309
|
+
return reject(result.issues);
|
|
310
|
+
if (result.state === state.fsmState)
|
|
311
|
+
return success();
|
|
312
|
+
return (0, fsm_1.isEmpty)(result.state)
|
|
313
|
+
? success({ running: 'completed', mode: state.mode }, result.effects)
|
|
314
|
+
: success({ ...state, fsmState: result.state }, result.effects);
|
|
315
|
+
}
|
|
316
|
+
case 'StartClicked': {
|
|
317
|
+
if (state.running === 'running' || state.running === 'paused')
|
|
318
|
+
return success();
|
|
319
|
+
const program = selectorToProgram(state.mode);
|
|
320
|
+
if (!program.ok)
|
|
321
|
+
return reject(program.issues);
|
|
322
|
+
const result = (0, fsm_1.push)(program.program)(fsm_1.empty);
|
|
323
|
+
if (!result.ok)
|
|
324
|
+
return reject(result.issues);
|
|
325
|
+
if ((0, fsm_1.isEmpty)(result.state))
|
|
326
|
+
return reject([
|
|
327
|
+
{
|
|
328
|
+
path: 'program',
|
|
329
|
+
code: 'empty-program',
|
|
330
|
+
message: 'A workout must contain exercise.',
|
|
331
|
+
},
|
|
332
|
+
]);
|
|
333
|
+
return success({ mode: state.mode, running: 'running', fsmState: result.state }, result.effects);
|
|
334
|
+
}
|
|
335
|
+
case 'StopClicked':
|
|
336
|
+
return state.running === 'running' || state.running === 'paused'
|
|
337
|
+
? success({ running: 'stopped', mode: state.mode })
|
|
338
|
+
: success();
|
|
339
|
+
case 'PauseClicked':
|
|
340
|
+
return state.running === 'running'
|
|
341
|
+
? success({ ...state, running: 'paused' })
|
|
342
|
+
: success();
|
|
343
|
+
case 'ContinueClicked':
|
|
344
|
+
return state.running === 'paused'
|
|
345
|
+
? success({ ...state, running: 'running' })
|
|
346
|
+
: success();
|
|
347
|
+
case 'ModeSelected':
|
|
348
|
+
if (state.running === 'running' || state.running === 'paused')
|
|
349
|
+
return success();
|
|
350
|
+
if (action.mode !== SIMPLE_MODE)
|
|
351
|
+
return reject([
|
|
352
|
+
{
|
|
353
|
+
path: 'mode',
|
|
354
|
+
code: 'invalid-mode',
|
|
355
|
+
message: 'Select a supported mode.',
|
|
356
|
+
},
|
|
357
|
+
]);
|
|
358
|
+
return success();
|
|
359
|
+
case 'SimpleModeRoundsSelected':
|
|
360
|
+
case 'SimpleModeExerciseTimeSelected':
|
|
361
|
+
case 'SimpleModeRestTimeSelected': {
|
|
362
|
+
if (state.running === 'running' || state.running === 'paused')
|
|
363
|
+
return success();
|
|
364
|
+
const field = action._tag === 'SimpleModeRoundsSelected'
|
|
365
|
+
? 'rounds'
|
|
366
|
+
: action._tag === 'SimpleModeExerciseTimeSelected'
|
|
367
|
+
? 'exerciseTimeMs'
|
|
368
|
+
: 'restTimeMs';
|
|
369
|
+
const input = action._tag === 'SimpleModeRoundsSelected'
|
|
370
|
+
? action.rounds
|
|
371
|
+
: action._tag === 'SimpleModeExerciseTimeSelected'
|
|
372
|
+
? action.exerciseTimeMs
|
|
373
|
+
: action.restTimeMs;
|
|
374
|
+
const value = numeric(input, field, field === 'restTimeMs' ? BigInt(0) : BigInt(1), field === 'rounds' ? exports.MAX_ROUNDS : exports.MAX_WORKOUT_DURATION_MS);
|
|
375
|
+
if (!value.ok)
|
|
376
|
+
return reject(value.issues);
|
|
377
|
+
if (state.mode.settings.simple[field] === value.value)
|
|
378
|
+
return success();
|
|
379
|
+
return success({
|
|
380
|
+
...state,
|
|
381
|
+
mode: {
|
|
382
|
+
...state.mode,
|
|
383
|
+
settings: {
|
|
384
|
+
...state.mode.settings,
|
|
385
|
+
simple: { ...state.mode.settings.simple, [field]: value.value },
|
|
386
|
+
},
|
|
387
|
+
},
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
};
|
|
392
|
+
exports.reduce = reduce;
|
|
393
|
+
//# sourceMappingURL=ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/lib/ui.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,15 +1,41 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jikan0/ui",
|
|
3
|
-
"version": "0.0
|
|
4
|
-
"dependencies": {
|
|
5
|
-
"tslib": "^2.3.0",
|
|
6
|
-
"@jikan0/fsm": "*",
|
|
7
|
-
"@jikan0/utils": "*"
|
|
8
|
-
},
|
|
3
|
+
"version": "2.0.0",
|
|
9
4
|
"type": "commonjs",
|
|
10
|
-
"main": "./
|
|
11
|
-
"
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"default": "./dist/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist",
|
|
15
|
+
"README.md",
|
|
16
|
+
"LICENSE"
|
|
17
|
+
],
|
|
18
|
+
"license": "MIT",
|
|
19
|
+
"sideEffects": false,
|
|
12
20
|
"publishConfig": {
|
|
13
|
-
"access": "public"
|
|
21
|
+
"access": "public",
|
|
22
|
+
"registry": "https://registry.npmjs.org/"
|
|
23
|
+
},
|
|
24
|
+
"repository": {
|
|
25
|
+
"type": "git",
|
|
26
|
+
"url": "git+https://github.com/dearlordylord/jikan.git",
|
|
27
|
+
"directory": "ui"
|
|
28
|
+
},
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "node ../tools/build-package.cjs",
|
|
31
|
+
"prepack": "cd .. && npx turbo run build --filter=@jikan0/ui..."
|
|
32
|
+
},
|
|
33
|
+
"engines": {
|
|
34
|
+
"node": ">=24"
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@jikan0/fsm": "2.0.0",
|
|
38
|
+
"@jikan0/utils": "2.0.0",
|
|
39
|
+
"effect": "3.22.2"
|
|
14
40
|
}
|
|
15
41
|
}
|
package/src/index.js
DELETED
package/src/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ui/src/index.ts"],"names":[],"mappings":";;;AAAA,mDAAyB"}
|
package/src/lib/ui.d.ts
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import { NonEmptyState as NonEmptyFsmState } from '@jikan0/fsm';
|
|
2
|
-
export type StartClickedEvent = {
|
|
3
|
-
_tag: 'StartClicked';
|
|
4
|
-
};
|
|
5
|
-
export declare const StartClickedEvent: () => StartClickedEvent;
|
|
6
|
-
export type StopClickedEvent = {
|
|
7
|
-
_tag: 'StopClicked';
|
|
8
|
-
};
|
|
9
|
-
export declare const StopClickedEvent: () => StopClickedEvent;
|
|
10
|
-
export type PauseClickedEvent = {
|
|
11
|
-
_tag: 'PauseClicked';
|
|
12
|
-
};
|
|
13
|
-
export declare const PauseClickedEvent: () => PauseClickedEvent;
|
|
14
|
-
export type ContinueClickedEvent = {
|
|
15
|
-
_tag: 'ContinueClicked';
|
|
16
|
-
};
|
|
17
|
-
export declare const ContinueClickedEvent: () => ContinueClickedEvent;
|
|
18
|
-
export type TimePassedEvent = {
|
|
19
|
-
_tag: 'TimePassed';
|
|
20
|
-
timeMs: bigint;
|
|
21
|
-
};
|
|
22
|
-
export declare const TimePassedEvent: (timeMs: bigint) => TimePassedEvent;
|
|
23
|
-
declare const SIMPLE_MODE: "simple";
|
|
24
|
-
type SimpleMode = typeof SIMPLE_MODE;
|
|
25
|
-
declare const MODES: readonly ["simple"];
|
|
26
|
-
type Mode = (typeof MODES)[number];
|
|
27
|
-
export declare const DEFAULT_MODE: "simple";
|
|
28
|
-
export declare const DEFAULT_EXERCISE_TIME_MS: bigint;
|
|
29
|
-
export declare const DEFAULT_REST_TIME_MS: bigint;
|
|
30
|
-
export declare const DEFAULT_ROUNDS: bigint;
|
|
31
|
-
export type ModeSelectedEvent<M extends Mode = Mode> = {
|
|
32
|
-
_tag: 'ModeSelected';
|
|
33
|
-
mode: M;
|
|
34
|
-
};
|
|
35
|
-
export declare const ModeSelectedEvent: <M extends "simple">(mode: M) => ModeSelectedEvent<M>;
|
|
36
|
-
export type Event = StartClickedEvent | StopClickedEvent | PauseClickedEvent | ContinueClickedEvent | ModeSelectedEvent | TimePassedEvent;
|
|
37
|
-
export type Action = Event;
|
|
38
|
-
declare const RUNNING_STATE_RUNNING: "running";
|
|
39
|
-
declare const RUNNING_STATE_PAUSED: "paused";
|
|
40
|
-
declare const RUNNING_STATE_STOPPED: "stopped";
|
|
41
|
-
type RunningStateRunning = typeof RUNNING_STATE_RUNNING;
|
|
42
|
-
type RunningStatePaused = typeof RUNNING_STATE_PAUSED;
|
|
43
|
-
type RunningStateStopped = typeof RUNNING_STATE_STOPPED;
|
|
44
|
-
type Button<E> = {
|
|
45
|
-
active: true;
|
|
46
|
-
onClick: E;
|
|
47
|
-
} | {
|
|
48
|
-
active: false;
|
|
49
|
-
};
|
|
50
|
-
type ActiveButton<E> = Button<E> & {
|
|
51
|
-
active: true;
|
|
52
|
-
};
|
|
53
|
-
type InactiveButton<E = never> = Button<E> & {
|
|
54
|
-
active: false;
|
|
55
|
-
};
|
|
56
|
-
type ViewActiveValue = {
|
|
57
|
-
startButton: Button<StartClickedEvent>;
|
|
58
|
-
stopButton: Button<StopClickedEvent>;
|
|
59
|
-
pauseButton: Button<PauseClickedEvent>;
|
|
60
|
-
continueButton: Button<ContinueClickedEvent>;
|
|
61
|
-
};
|
|
62
|
-
type State<M extends Mode = Mode> = {
|
|
63
|
-
mode: ModeSelectorState<M>;
|
|
64
|
-
} & ({
|
|
65
|
-
running: RunningStateRunning | RunningStatePaused;
|
|
66
|
-
fsmState: NonEmptyFsmState<StepPerMode[M]>;
|
|
67
|
-
} | {
|
|
68
|
-
running: RunningStateStopped;
|
|
69
|
-
});
|
|
70
|
-
export type ModeSelectorSettingsValue = {
|
|
71
|
-
mode: Mode;
|
|
72
|
-
} & {
|
|
73
|
-
mode: SimpleMode;
|
|
74
|
-
exerciseTimeMs: bigint;
|
|
75
|
-
restTimeMs: bigint;
|
|
76
|
-
rounds: bigint;
|
|
77
|
-
};
|
|
78
|
-
export type ModeSelectorSettings = Readonly<{
|
|
79
|
-
[k in Mode]: Readonly<Omit<ModeSelectorSettingsValue & {
|
|
80
|
-
mode: k;
|
|
81
|
-
}, 'mode'>>;
|
|
82
|
-
}>;
|
|
83
|
-
export type ModeSelectorState<M extends Mode> = Readonly<{
|
|
84
|
-
selected: M;
|
|
85
|
-
settings: ModeSelectorSettings;
|
|
86
|
-
}>;
|
|
87
|
-
export declare const modeSelectorState0: Readonly<{
|
|
88
|
-
selected: "simple";
|
|
89
|
-
settings: Readonly<{
|
|
90
|
-
simple: Readonly<{
|
|
91
|
-
exerciseTimeMs: bigint;
|
|
92
|
-
restTimeMs: bigint;
|
|
93
|
-
rounds: bigint;
|
|
94
|
-
}>;
|
|
95
|
-
}>;
|
|
96
|
-
}>;
|
|
97
|
-
export declare const state0: State<SimpleMode>;
|
|
98
|
-
declare const SIMPLE_PROGRAM_STEPS: readonly ["preparation", "exercise", "rest"];
|
|
99
|
-
type SimpleProgramStep = (typeof SIMPLE_PROGRAM_STEPS)[number];
|
|
100
|
-
type StepPerMode = {
|
|
101
|
-
[k in Mode]: string;
|
|
102
|
-
} & {
|
|
103
|
-
simple: SimpleProgramStep;
|
|
104
|
-
};
|
|
105
|
-
export type ModeSelectorSettingsViewValue = ModeSelectorSettingsValue;
|
|
106
|
-
export type ModeSelectorSettingsViewActions = {
|
|
107
|
-
[m in Mode]: {
|
|
108
|
-
onSelect: ModeSelectedEvent<m>;
|
|
109
|
-
};
|
|
110
|
-
};
|
|
111
|
-
type TimerStatsCurrent<RoundKind extends string = string> = {
|
|
112
|
-
current: bigint;
|
|
113
|
-
kind: RoundKind;
|
|
114
|
-
};
|
|
115
|
-
type TimerStats<RoundKind extends string = string> = {
|
|
116
|
-
rounds: bigint;
|
|
117
|
-
round: TimerStatsCurrent<RoundKind>;
|
|
118
|
-
};
|
|
119
|
-
export type ViewValue = ViewActiveValue & {
|
|
120
|
-
modeSelector: {
|
|
121
|
-
value: ModeSelectorSettingsViewValue;
|
|
122
|
-
};
|
|
123
|
-
} & ({
|
|
124
|
-
running: 'running';
|
|
125
|
-
startButton: InactiveButton;
|
|
126
|
-
stopButton: InactiveButton;
|
|
127
|
-
pauseButton: ActiveButton<PauseClickedEvent>;
|
|
128
|
-
continueButton: InactiveButton;
|
|
129
|
-
timerStats: TimerStats;
|
|
130
|
-
} | {
|
|
131
|
-
running: 'paused';
|
|
132
|
-
startButton: InactiveButton;
|
|
133
|
-
stopButton: ActiveButton<StopClickedEvent>;
|
|
134
|
-
pauseButton: InactiveButton;
|
|
135
|
-
continueButton: ActiveButton<ContinueClickedEvent>;
|
|
136
|
-
} | {
|
|
137
|
-
running: 'stopped';
|
|
138
|
-
startButton: ActiveButton<StartClickedEvent>;
|
|
139
|
-
stopButton: InactiveButton;
|
|
140
|
-
pauseButton: InactiveButton;
|
|
141
|
-
continueButton: InactiveButton;
|
|
142
|
-
modeSelector: {
|
|
143
|
-
actions: ModeSelectorSettingsViewActions;
|
|
144
|
-
};
|
|
145
|
-
});
|
|
146
|
-
type View_<S, R> = (state: S) => R;
|
|
147
|
-
export type View = View_<State, ViewValue>;
|
|
148
|
-
export declare const view: <M extends "simple" = "simple">(state: State<M>) => ViewValue;
|
|
149
|
-
export declare const reduce: (action: Action) => (state: State) => State;
|
|
150
|
-
export {};
|
package/src/lib/ui.js
DELETED
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.reduce = exports.view = exports.state0 = exports.modeSelectorState0 = exports.ModeSelectedEvent = exports.DEFAULT_ROUNDS = exports.DEFAULT_REST_TIME_MS = exports.DEFAULT_EXERCISE_TIME_MS = exports.DEFAULT_MODE = exports.TimePassedEvent = exports.ContinueClickedEvent = exports.PauseClickedEvent = exports.StopClickedEvent = exports.StartClickedEvent = void 0;
|
|
4
|
-
const fsm_1 = require("@jikan0/fsm");
|
|
5
|
-
const utils_1 = require("@jikan0/utils");
|
|
6
|
-
const StartClickedEvent = () => ({
|
|
7
|
-
_tag: 'StartClicked',
|
|
8
|
-
});
|
|
9
|
-
exports.StartClickedEvent = StartClickedEvent;
|
|
10
|
-
const StopClickedEvent = () => ({
|
|
11
|
-
_tag: 'StopClicked',
|
|
12
|
-
});
|
|
13
|
-
exports.StopClickedEvent = StopClickedEvent;
|
|
14
|
-
const PauseClickedEvent = () => ({
|
|
15
|
-
_tag: 'PauseClicked',
|
|
16
|
-
});
|
|
17
|
-
exports.PauseClickedEvent = PauseClickedEvent;
|
|
18
|
-
const ContinueClickedEvent = () => ({
|
|
19
|
-
_tag: 'ContinueClicked',
|
|
20
|
-
});
|
|
21
|
-
exports.ContinueClickedEvent = ContinueClickedEvent;
|
|
22
|
-
const TimePassedEvent = (timeMs) => ({
|
|
23
|
-
_tag: 'TimePassed',
|
|
24
|
-
timeMs,
|
|
25
|
-
});
|
|
26
|
-
exports.TimePassedEvent = TimePassedEvent;
|
|
27
|
-
const SIMPLE_MODE = 'simple';
|
|
28
|
-
const MODES = [SIMPLE_MODE];
|
|
29
|
-
exports.DEFAULT_MODE = SIMPLE_MODE;
|
|
30
|
-
exports.DEFAULT_EXERCISE_TIME_MS = BigInt(30000);
|
|
31
|
-
exports.DEFAULT_REST_TIME_MS = BigInt(10000);
|
|
32
|
-
exports.DEFAULT_ROUNDS = BigInt(10);
|
|
33
|
-
const ModeSelectedEvent = (mode) => ({
|
|
34
|
-
_tag: 'ModeSelected',
|
|
35
|
-
mode,
|
|
36
|
-
});
|
|
37
|
-
exports.ModeSelectedEvent = ModeSelectedEvent;
|
|
38
|
-
const RUNNING_STATE_RUNNING = 'running';
|
|
39
|
-
const RUNNING_STATE_PAUSED = 'paused';
|
|
40
|
-
const RUNNING_STATE_STOPPED = 'stopped';
|
|
41
|
-
const _RUNNING_STATES = [
|
|
42
|
-
RUNNING_STATE_RUNNING,
|
|
43
|
-
RUNNING_STATE_PAUSED,
|
|
44
|
-
RUNNING_STATE_STOPPED,
|
|
45
|
-
];
|
|
46
|
-
exports.modeSelectorState0 = Object.freeze({
|
|
47
|
-
selected: exports.DEFAULT_MODE,
|
|
48
|
-
settings: Object.freeze({
|
|
49
|
-
simple: Object.freeze({
|
|
50
|
-
exerciseTimeMs: exports.DEFAULT_EXERCISE_TIME_MS,
|
|
51
|
-
restTimeMs: exports.DEFAULT_REST_TIME_MS,
|
|
52
|
-
rounds: exports.DEFAULT_ROUNDS,
|
|
53
|
-
}),
|
|
54
|
-
}),
|
|
55
|
-
});
|
|
56
|
-
const selectorToProgram = (selector) => {
|
|
57
|
-
const settings = selector.settings[selector.selected];
|
|
58
|
-
switch (selector.selected) {
|
|
59
|
-
case SIMPLE_MODE: {
|
|
60
|
-
return simpleModeSelectorToProgram(settings);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
exports.state0 = Object.freeze({
|
|
65
|
-
running: RUNNING_STATE_STOPPED,
|
|
66
|
-
mode: exports.modeSelectorState0,
|
|
67
|
-
});
|
|
68
|
-
const PREPARATION_STEP = 'preparation';
|
|
69
|
-
const EXERCISE_STEP = 'exercise';
|
|
70
|
-
const REST_STEP = 'rest';
|
|
71
|
-
const SIMPLE_PROGRAM_STEPS = [
|
|
72
|
-
PREPARATION_STEP,
|
|
73
|
-
EXERCISE_STEP,
|
|
74
|
-
REST_STEP,
|
|
75
|
-
];
|
|
76
|
-
const PREPARATION_STEPS_SIMPLE = [
|
|
77
|
-
{
|
|
78
|
-
kind: PREPARATION_STEP,
|
|
79
|
-
duration: 3000 /*TODO make configurable*/,
|
|
80
|
-
},
|
|
81
|
-
];
|
|
82
|
-
const simpleModeSelectorToProgram = (settings) => Object.freeze([...Array(settings.rounds).keys()].flatMap((i) => [
|
|
83
|
-
...(i === 0 ? PREPARATION_STEPS_SIMPLE : []),
|
|
84
|
-
{ kind: EXERCISE_STEP, duration: Number(settings.exerciseTimeMs) },
|
|
85
|
-
...(Number(settings.rounds) === i + 1
|
|
86
|
-
? []
|
|
87
|
-
: [{ kind: REST_STEP, duration: Number(settings.restTimeMs) }]),
|
|
88
|
-
]));
|
|
89
|
-
const simpleModeQueueToStats = (q) => ({
|
|
90
|
-
current: BigInt(q.filter((x) => x.kind === EXERCISE_STEP).length),
|
|
91
|
-
kind: (0, utils_1.lastRNEA)(q).kind,
|
|
92
|
-
});
|
|
93
|
-
const modeSelectorSettingsViewActions = {
|
|
94
|
-
simple: {
|
|
95
|
-
onSelect: (0, exports.ModeSelectedEvent)('simple'),
|
|
96
|
-
},
|
|
97
|
-
};
|
|
98
|
-
const view = (state) => {
|
|
99
|
-
const modeSelectorValue = Object.assign({ mode: state.mode.selected }, state.mode.settings[state.mode.selected]);
|
|
100
|
-
switch (state.running) {
|
|
101
|
-
case RUNNING_STATE_RUNNING: {
|
|
102
|
-
const s = state;
|
|
103
|
-
return {
|
|
104
|
-
running: state.running,
|
|
105
|
-
startButton: {
|
|
106
|
-
active: false,
|
|
107
|
-
},
|
|
108
|
-
stopButton: {
|
|
109
|
-
active: false,
|
|
110
|
-
},
|
|
111
|
-
pauseButton: {
|
|
112
|
-
active: true,
|
|
113
|
-
onClick: (0, exports.PauseClickedEvent)(),
|
|
114
|
-
},
|
|
115
|
-
continueButton: {
|
|
116
|
-
active: false,
|
|
117
|
-
},
|
|
118
|
-
modeSelector: {
|
|
119
|
-
value: modeSelectorValue,
|
|
120
|
-
},
|
|
121
|
-
timerStats: {
|
|
122
|
-
// dupe but it's a "view"!
|
|
123
|
-
rounds: modeSelectorValue.rounds,
|
|
124
|
-
round: simpleModeQueueToStats(s.fsmState.queue),
|
|
125
|
-
},
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
case RUNNING_STATE_PAUSED: {
|
|
129
|
-
return {
|
|
130
|
-
running: state.running,
|
|
131
|
-
startButton: {
|
|
132
|
-
active: false,
|
|
133
|
-
},
|
|
134
|
-
stopButton: {
|
|
135
|
-
active: true,
|
|
136
|
-
onClick: (0, exports.StopClickedEvent)(),
|
|
137
|
-
},
|
|
138
|
-
pauseButton: {
|
|
139
|
-
active: false,
|
|
140
|
-
},
|
|
141
|
-
continueButton: {
|
|
142
|
-
active: true,
|
|
143
|
-
onClick: (0, exports.ContinueClickedEvent)(),
|
|
144
|
-
},
|
|
145
|
-
modeSelector: {
|
|
146
|
-
value: modeSelectorValue,
|
|
147
|
-
},
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
case RUNNING_STATE_STOPPED: {
|
|
151
|
-
return {
|
|
152
|
-
running: state.running,
|
|
153
|
-
startButton: {
|
|
154
|
-
active: true,
|
|
155
|
-
onClick: (0, exports.StartClickedEvent)(),
|
|
156
|
-
},
|
|
157
|
-
stopButton: {
|
|
158
|
-
active: false,
|
|
159
|
-
},
|
|
160
|
-
pauseButton: {
|
|
161
|
-
active: false,
|
|
162
|
-
},
|
|
163
|
-
continueButton: {
|
|
164
|
-
active: false,
|
|
165
|
-
},
|
|
166
|
-
modeSelector: {
|
|
167
|
-
value: modeSelectorValue,
|
|
168
|
-
actions: modeSelectorSettingsViewActions,
|
|
169
|
-
},
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
};
|
|
174
|
-
exports.view = view;
|
|
175
|
-
const reduce = (action) => (state) => {
|
|
176
|
-
switch (action._tag) {
|
|
177
|
-
case 'TimePassed': {
|
|
178
|
-
if (state.running !== 'running')
|
|
179
|
-
return state;
|
|
180
|
-
const timeMs = Number(action.timeMs);
|
|
181
|
-
const fsmState = (0, utils_1.pipe)(state.fsmState, (0, fsm_1.tick)(timeMs), ([s]) => s);
|
|
182
|
-
if (fsmState === state.fsmState)
|
|
183
|
-
return state;
|
|
184
|
-
return (0, fsm_1.isEmpty)(fsmState)
|
|
185
|
-
? Object.assign(Object.assign({}, state), { running: 'stopped' }) : Object.assign(Object.assign({}, state), { fsmState });
|
|
186
|
-
}
|
|
187
|
-
case 'StartClicked': {
|
|
188
|
-
if (state.running === 'running' || state.running === 'paused')
|
|
189
|
-
return state;
|
|
190
|
-
const program = selectorToProgram(state.mode);
|
|
191
|
-
return Object.assign(Object.assign({}, state), { running: 'running', fsmState: (0, utils_1.pipe)(fsm_1.empty, (0, fsm_1.push)(program), (s) => s) });
|
|
192
|
-
}
|
|
193
|
-
case 'StopClicked': {
|
|
194
|
-
if (state.running === 'stopped' ||
|
|
195
|
-
state.running === 'running' /*pause before stopping*/)
|
|
196
|
-
return state;
|
|
197
|
-
return Object.assign(Object.assign({}, state), { running: 'stopped' });
|
|
198
|
-
}
|
|
199
|
-
case 'PauseClicked': {
|
|
200
|
-
if (state.running === 'stopped' || state.running === 'paused')
|
|
201
|
-
return state;
|
|
202
|
-
return Object.assign(Object.assign({}, state), { running: 'paused' });
|
|
203
|
-
}
|
|
204
|
-
case 'ContinueClicked': {
|
|
205
|
-
if (state.running === 'stopped' || state.running === 'running')
|
|
206
|
-
return state;
|
|
207
|
-
return Object.assign(Object.assign({}, state), { running: 'running' });
|
|
208
|
-
}
|
|
209
|
-
case 'ModeSelected': {
|
|
210
|
-
if (state.mode.selected === action.mode)
|
|
211
|
-
return state;
|
|
212
|
-
// TODO deep change tools?
|
|
213
|
-
return Object.assign(Object.assign({}, state), { mode: Object.assign(Object.assign({}, state.mode), { selected: action.mode }) });
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
};
|
|
217
|
-
exports.reduce = reduce;
|
|
218
|
-
//# sourceMappingURL=ui.js.map
|
package/src/lib/ui.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../../ui/src/lib/ui.ts"],"names":[],"mappings":"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"}
|
/package/{src → dist}/index.d.ts
RENAMED
|
File without changes
|