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(); }),
} = 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(); }),
'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');
} = 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; },
'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(() => {
'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');