UNPKG

afterwriting

Version:

Post-processing tools for Fountain screenplays

73 lines (58 loc) 2.32 kB
define(function(require) { var $ = require('jquery'), BaseComponent = require('core/view/base-component'), TopMenuPresenter = require('theme/aw-bubble/presenter/menu/top-menu-presenter'), TopMenuItem = require('theme/aw-bubble/view/menu/top-menu-item'); var TopMenu = BaseComponent.extend({ $meta: { presenter: TopMenuPresenter }, html: '<div class="top-bar">' + '<div><img data-prop="$closeIcon" class="content-action content-action--close" src="gfx/icons/close.svg" /><img data-prop="$expandIcon" class="content-action content-action--expand" src="gfx/icons/expand.svg" /></div>' + '</div>', $closeIcon: null, $expandIcon: null, sections: { renderWith: { property: 'section', renderer: TopMenuItem } }, $create: function() { this.$closeIcon.click(this.dispatch.bind(this, 'close')); this.$expandIcon.click(this.dispatch.bind(this, 'expand')); }, addInteractions: function() { var y, revert = true; $('.content').draggable({ axis: "y", scroll: true, scrollSensitivity: 25, handle: '.content-action--close', revert: function() { return revert; }, scrollSpeed: 25, addClasses: false, start: function() { this.$closeIcon.off(); }.bind(this), drag: function(event, data) { revert = Math.abs(data.offset.top) <= 100; }, stop: function() { if (!revert) { this.dispatch('swipe'); } this.$closeIcon.click(this.dispatch.bind(this, 'close')); }.bind(this) }); }, setSelected: function(section) { this.children.forEach(function(topMenuItem) { topMenuItem.selected = topMenuItem.section === section; }); } }); return TopMenu; });