import Mixin from '@ember/object/mixin'
import { computed, observer } from '@ember/object'
import { A } from '@ember/array'

AsWizard = Mixin.create(
  completed: computed -> A()

  completeOn: null

  markCompleted: (step, new_step) ->
    step ||= @get('step')
    @get('completed').pushObject(step)
    @set('step', new_step) if new_step
    @trigger('stepComplete', step)

  markNotCompleted: (step) ->
    @get('completed').removeObject(step)

  clearCompleted: ->
    @set('completed', A())

  isComplete: (step) ->
    @get('completed').includes(step)

  wizardComplete: computed( 'completed.[]', (->
    @get('completed').includes(@get('completeOn'))
  ))

  notifyComplete: observer('wizardComplete', (->
    if @get('wizardComplete')
      console.debug "- wizardComplete"
      @sendAction('on-wizard-complete')
  ))



)

export default AsWizard
