1 | import { __assign } from './_virtual/_tslib.js';
|
2 | import { toEventObject } from './utils.js';
|
3 |
|
4 | function toggle(onState, offState, eventType) {
|
5 | var _a, _b, _c;
|
6 |
|
7 | return _a = {}, _a[onState] = {
|
8 | on: (_b = {}, _b[eventType] = offState, _b)
|
9 | }, _a[offState] = {
|
10 | on: (_c = {}, _c[eventType] = onState, _c)
|
11 | }, _a;
|
12 | }
|
13 | var defaultSequencePatternOptions = {
|
14 | nextEvent: 'NEXT',
|
15 | prevEvent: 'PREV'
|
16 | };
|
17 | function sequence(items, options) {
|
18 | var resolvedOptions = __assign(__assign({}, defaultSequencePatternOptions), options);
|
19 |
|
20 | var states = {};
|
21 | var nextEventObject = resolvedOptions.nextEvent === undefined ? undefined : toEventObject(resolvedOptions.nextEvent);
|
22 | var prevEventObject = resolvedOptions.prevEvent === undefined ? undefined : toEventObject(resolvedOptions.prevEvent);
|
23 | items.forEach(function (item, i) {
|
24 | var state = {
|
25 | on: {}
|
26 | };
|
27 |
|
28 | if (i + 1 === items.length) {
|
29 | state.type = 'final';
|
30 | }
|
31 |
|
32 | if (nextEventObject && i + 1 < items.length) {
|
33 | state.on[nextEventObject.type] = items[i + 1];
|
34 | }
|
35 |
|
36 | if (prevEventObject && i > 0) {
|
37 | state.on[prevEventObject.type] = items[i - 1];
|
38 | }
|
39 |
|
40 | states[item] = state;
|
41 | });
|
42 | return {
|
43 | initial: items[0],
|
44 | states: states
|
45 | };
|
46 | }
|
47 |
|
48 | export { sequence, toggle };
|