コード例 #1
0
  Component,
  computed,
  get,
  isPresent,
  on,
  set
} = Ember;

const configurablePriority = ['directable.attrs', 'config.attrs.director.codeChallenge', 'config.attrs.globals'];

export default Component.extend(DirectableComponentMixin, TransitionMixin, {
  layout,

  config: multiton('ember-theater/config', 'theaterId'),

  rawSnippets: configurable(configurablePriority, 'snippets'),
  transitionIn: deepConfigurable(configurablePriority, 'transitionIn'),
  transitionOut: deepConfigurable(configurablePriority, 'transitionOut'),

  handlePriorSceneRecord: on('didInsertElement', function() {
    if (isPresent(get(this, 'priorSceneRecord'))) {
      set(this, 'directable.direction.result', get(this, 'priorSceneRecord'));

      this.resolveAndDestroy();
    }
  }),

  transitionInCodeChallenge: on('didInsertElement', function() {
    this.executeTransitionIn();
  }),
コード例 #2
0
} = Ember;

const configurablePriority = ['config.attrs.menuBar', 'config.attrs.globals'];

export default Component.extend(BusPublisherMixin, EKMixin, {
  keyboardFirstResponder: true,
  keyboardLaxPriority: true,
  classNames: ['et-menu-bar-control-icon'],
  tagName: 'button',
  windowId: 'main',

  config: multiton('ember-theater/config', 'theaterId'),
  saveStateManager: multiton('ember-theater/save-state-manager', 'theaterId'),
  director: multiton('ember-theater/director/director', 'theaterId', 'windowId'),

  menuBarClassNames: configurable(configurablePriority, 'classNames'),

  setupFocusKeystroke: on('init', function() {
    const type = get(this, 'type');
    const keys = get(this, `config.attrs.menuBar.${type}.keys.open`);

    keys.forEach((key) => this.on(keyDown(key), (event) => {
      this.toggleOpen();
      event.preventDefault();
    }));
  }),

  toggleOpen: on('click', 'touchEnd', function() {
    this.openMenu();
  }),
コード例 #3
0
  'directable.attrs',
  'directable.attrs.fixture',
  'config.attrs.director.backdrop',
  'config.attrs.globals'
];

export default Component.extend(DirectableComponentMixin, TransitionMixin, TransitionObserverMixin, {
  classNames: ['et-backdrop-container'],
  hook: 'backdrop-direction',

  translator: service('ember-theater/translator'),

  config: multiton('ember-theater/config', 'theaterId'),
  preloader: multiton('ember-theater/preloader', 'theaterId'),

  caption: configurable(configurablePriority, 'caption'),
  src: configurable(configurablePriority, 'src'),
  transitions: deepArrayConfigurable(configurablePriority, 'directable.attrs.transitions', 'transition'),

  captionTranslation: computed('directable.attrs.fixture.id', 'caption', {
    get() {
      const translation = get(this, 'caption') || `backdrops.${get(this, 'directable.attrs.fixture.id')}`;

      return get(this, 'translator').translate(translation);
    }
  }).readOnly(),

  insertImage: on('didInsertElement', function() {
    next(() => {
      const preloader = get(this, 'preloader');
      const fixture = get(this, 'directable.attrs.fixture');
コード例 #4
0
} = Ember;

const configurablePriority = [
  'config.attrs.director.sound',
  'config.attrs.globals'
];

export default Direction.extend({
  componentPath: 'ember-theater/director/directable/sound',

  config: multiton('ember-theater/fixture-store', 'theaterId'),
  fixtureStore: multiton('ember-theater/fixture-store', 'theaterId'),
  preloader: multiton('ember-theater/preloader', 'theaterId'),
  soundManager: multiton('ember-theater/sound-manager', 'theaterId'),

  duration: configurable(configurablePriority, 'duration'),

  _setup(fixtureOrId) {
    this._entryPoint();

    const fixtureStore = get(this, 'fixtureStore');
    const fixture = typeOf(fixtureOrId) === 'object' ? fixtureOrId : fixtureStore.find('sounds', fixtureOrId);
    const audioId = get(this, 'preloader').idFor(fixture, 'src');
    const soundManager = get(this, 'soundManager');
    const soundInstance = soundManager.findOrCreateInstance(audioId);

    set(this, 'attrs.audioId', audioId);
    set(this, 'attrs.soundInstance', soundInstance);

    return this;
  },
コード例 #5
0
  'expression.expression',
  'expression',
  'config.attrs.director.expression',
  'config.attrs.globals'
];

export default Component.extend(DirectableComponentMixin, TransitionMixin, {
  classNames: ['et-character-expression-container'],
  hook: 'expression-direction',

  translator: service('ember-theater/translator'),

  config: multiton('ember-theater/config', 'theaterId'),
  preloader: multiton('ember-theater/preloader', 'theaterId'),

  caption: configurable(configurablePriority, 'caption'),
  resolve: configurable(configurablePriority, 'resolve'),
  src: configurable(configurablePriority, 'src'),
  transitionIn: deepConfigurable(configurablePriority, 'transitionIn'),
  transitionOut: deepConfigurable(configurablePriority, 'transitionOut'),

  captionTranslation: computed('expression.id', 'caption', {
    get() {
      const translation = get(this, 'caption') || `expressions.${get(this, 'expression.id')}`;

      return get(this, 'translator').translate(translation);
    }
  }),

  transitionInExpression: on('didInsertElement', function() {
    this.executeTransitionIn().then(() => {
コード例 #6
0
  'directable.attrs.fixture',
  'config.attrs.director.character',
  'config.attrs.globals'
];

export default Component.extend(DirectableComponentMixin, TransitionMixin, TransitionObserverMixin, WindowResizeMixin, {
  layout,

  classNames: ['et-character'],
  hook: 'character-direction',

  config: multiton('ember-theater/config', 'theaterId'),

  expressionContainers: computed(() => Ember.A([])),

  expression: configurable(configurablePriority, 'expression'),
  height: configurable(configurablePriority, 'height'),
  transitions: deepArrayConfigurable(configurablePriority, 'directable.attrs.transitions', 'transition'),

  crossFade({ expression, transitionIn, transitionOut }) {
    return new Promise((resolve) => {
      next(() => {
        this._transitionOutExpressions(transitionOut);
        this._transitionInExpression(resolve, expression, transitionIn);
      });
    });
  },

  styles: computed('height', {
    get() {
      const height = get(this, 'height');