patterns.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var _tslib = require('./_virtual/_tslib.js');
  4. var utils = require('./utils.js');
  5. function toggle(onState, offState, eventType) {
  6. var _a, _b, _c;
  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 = _tslib.__assign(_tslib.__assign({}, defaultSequencePatternOptions), options);
  19. var states = {};
  20. var nextEventObject = resolvedOptions.nextEvent === undefined ? undefined : utils.toEventObject(resolvedOptions.nextEvent);
  21. var prevEventObject = resolvedOptions.prevEvent === undefined ? undefined : utils.toEventObject(resolvedOptions.prevEvent);
  22. items.forEach(function (item, i) {
  23. var state = {
  24. on: {}
  25. };
  26. if (i + 1 === items.length) {
  27. state.type = 'final';
  28. }
  29. if (nextEventObject && i + 1 < items.length) {
  30. state.on[nextEventObject.type] = items[i + 1];
  31. }
  32. if (prevEventObject && i > 0) {
  33. state.on[prevEventObject.type] = items[i - 1];
  34. }
  35. states[item] = state;
  36. });
  37. return {
  38. initial: items[0],
  39. states: states
  40. };
  41. }
  42. exports.sequence = sequence;
  43. exports.toggle = toggle;