intro.ts 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { Sequencer } from './sequencer';
  2. import { TerminalTyper } from './terminal-typer';
  3. // tslint:disable-next-line
  4. require('../../styles/intro/intro.scss');
  5. const textArea = document.querySelector('.vendure-intro .intro-text-area');
  6. const scene = document.querySelector('.vendure-intro .scene');
  7. const controls = document.querySelector('.vendure-intro .intro-controls');
  8. const title = document.querySelector('.vendure-intro .intro-title');
  9. if (textArea && scene && controls && title) {
  10. const replayButton = controls.querySelector('#replay');
  11. const terminalCommands = `$ install @vendure/core\n` +
  12. `$ vendure init\n` +
  13. `$ start\n`;
  14. const terminal = new TerminalTyper(textArea as HTMLDivElement, terminalCommands);
  15. const onTransition = (className: string) => {
  16. controls.querySelectorAll('button').forEach(button => button.classList.remove('active'));
  17. const active = controls.querySelector(`#${className}-button`);
  18. if (active) {
  19. active.classList.add('active');
  20. }
  21. if (className === 'scene-6') {
  22. title.classList.add('visible');
  23. if (replayButton) {
  24. replayButton.classList.add('visible');
  25. }
  26. }
  27. };
  28. const sequencer = new Sequencer(scene as HTMLDivElement, terminal, onTransition);
  29. sequencer.play();
  30. if (replayButton) {
  31. replayButton.addEventListener('click', () => sequencer.play());
  32. }
  33. controls.addEventListener('click', event => {
  34. const target = event.target as HTMLButtonElement;
  35. const command = target.id;
  36. if (command) {
  37. switch (command) {
  38. case 'replay':
  39. sequencer.play();
  40. break;
  41. case 'scene-0-button':
  42. sequencer.jumpTo(0);
  43. break;
  44. case 'scene-1-button':
  45. sequencer.jumpTo(1);
  46. break;
  47. case 'scene-2-button':
  48. sequencer.jumpTo(2);
  49. break;
  50. case 'scene-3-button':
  51. sequencer.jumpTo(3);
  52. break;
  53. case 'scene-4-button':
  54. sequencer.jumpTo(4);
  55. break;
  56. case 'scene-5-button':
  57. sequencer.jumpTo(5);
  58. break;
  59. case 'scene-6-button':
  60. sequencer.jumpTo(6);
  61. break;
  62. default:
  63. sequencer.jumpTo(0);
  64. }
  65. }
  66. });
  67. }