import { inject as service } from '@ember/service'; import { alias, or } from '@ember/object/computed'; import Component from '@ember/component'; import { matchesState } from 'xstate'; export default Component.extend({ classNames: ['ui-wizard-container'], wizard: service(), auth: service(), router: service(), shouldRender: or('auth.currentToken', 'wizard.showWhenUnauthenticated'), currentState: alias('wizard.currentState'), featureState: alias('wizard.featureState'), featureComponent: alias('wizard.featureComponent'), tutorialComponent: alias('wizard.tutorialComponent'), componentState: alias('wizard.componentState'), nextFeature: alias('wizard.nextFeature'), nextStep: alias('wizard.nextStep'), currentRouteName: alias('router.currentRouteName'), actions: { dismissWizard() { this.wizard.transitionTutorialMachine(this.currentState, 'DISMISS'); }, advanceWizard() { const inInit = matchesState('init', this.wizard.currentState); const event = inInit ? this.wizard.initEvent || 'CONTINUE' : 'CONTINUE'; this.wizard.transitionTutorialMachine(this.currentState, event); }, advanceFeature() { this.wizard.transitionFeatureMachine(this.featureState, 'CONTINUE'); }, finishFeature() { this.wizard.transitionFeatureMachine(this.featureState, 'DONE'); }, repeatStep() { this.wizard.transitionFeatureMachine(this.featureState, 'REPEAT', this.componentState); }, resetFeature() { this.wizard.transitionFeatureMachine(this.featureState, 'RESET', this.componentState); }, pauseWizard() { this.wizard.transitionTutorialMachine(this.currentState, 'PAUSE'); }, }, });