observer.js 524 Bytes
import {
  isFunc
} from './utils/tools'
import {
  firstLetterUpper
} from './utils/helper'

const EVENT_TYPE = ['ready', 'beforeImageLoad', 'beforeDraw', 'imageLoad']

export default function observer () {
  const self = this

  self.on = (event, fn) => {
    if (EVENT_TYPE.indexOf(event) > -1) {
      if (isFunc(fn)) {
        event === 'ready'
          ? fn(self)
          : self[`on${firstLetterUpper(event)}`] = fn
      }
    } else {
      console.error(`event: ${event} is invalid`)
    }
    return self
  }
}