diff options
Diffstat (limited to 'js/build/app.js')
-rw-r--r-- | js/build/app.js | 1072 |
1 files changed, 560 insertions, 512 deletions
diff --git a/js/build/app.js b/js/build/app.js index cad42c8ae..7e68fc320 100644 --- a/js/build/app.js +++ b/js/build/app.js @@ -1,521 +1,569 @@ -(function(angular, $, OC, oc_requesttoken, undefined){ - -'use strict'; - - -var app = angular.module('News', [ - 'ngRoute', - 'ngSanitize', - 'ngAnimate' - ]); -app.config([ - '$routeProvider', - '$provide', - '$httpProvider', - function ($routeProvider, $provide, $httpProvider) { +var $__build_47_app__ = function () { 'use strict'; - var getResolve, feedType; - feedType = { - FEED: 0, - FOLDER: 1, - STARRED: 2, - SUBSCRIPTIONS: 3, - SHARED: 4 - }; - // constants - $provide.constant('REFRESH_RATE', 60); - // seconds, how often feeds and folders shoudl be refreshed - $provide.constant('ITEM_BATCH_SIZE', 50); - // how many items to autopage by - $provide.constant('BASE_URL', OC.generateUrl('/apps/news')); - $provide.constant('FEED_TYPE', feedType); - // make sure that the CSRF header is only sent to the ownCloud domain - $provide.factory('CSRFInterceptor', function ($q, BASE_URL) { - return { - request: function (config) { - if (config.url.indexOf(BASE_URL) === 0) { - config.headers.requesttoken = oc_requesttoken; - } - return config || $q.when(config); - } - }; - }); - $httpProvider.interceptors.push('CSRFInterceptor'); - // routing - getResolve = function (type) { - return { - data: [ - '$http', - '$route', - '$q', - 'BASE_URL', - 'ITEM_BATCH_SIZE', - function ($http, $route, $q, BASE_URL, ITEM_BATCH_SIZE) { - var parameters, deferred; - parameters = { - type: type, - limit: ITEM_BATCH_SIZE + var __moduleName = 'build/app'; + (function (window, document, angular, $, OC, csrfToken, undefined) { + 'use strict'; + var app = angular.module('News', [ + 'ngRoute', + 'ngSanitize', + 'ngAnimate' + ]); + app.config([ + '$routeProvider', + '$provide', + '$httpProvider', + function ($routeProvider, $provide, $httpProvider) { + 'use strict'; + var feedType = { + FEED: 0, + FOLDER: 1, + STARRED: 2, + SUBSCRIPTIONS: 3, + SHARED: 4 + }; + $provide.constant('REFRESH_RATE', 60); + $provide.constant('ITEM_BATCH_SIZE', 50); + $provide.constant('BASE_URL', OC.generateUrl('/apps/news')); + $provide.constant('FEED_TYPE', feedType); + $provide.factory('CSRFInterceptor', function ($q, BASE_URL) { + return { + request: function (config) { + if (config.url.indexOf(BASE_URL) === 0) { + config.headers.requesttoken = csrfToken; + } + return config || $q.when(config); + } }; - if ($route.current.params.id !== undefined) { - parameters.id = $route.current.params.id; + }); + $httpProvider.interceptors.push('CSRFInterceptor'); + var getResolve = function (type) { + return { + data: [ + '$http', + '$route', + '$q', + 'BASE_URL', + 'ITEM_BATCH_SIZE', + function ($http, $route, $q, BASE_URL, ITEM_BATCH_SIZE) { + var parameters = { + type: type, + limit: ITEM_BATCH_SIZE + }; + if ($route.current.params.id !== undefined) { + parameters.id = $route.current.params.id; + } + var deferred = $q.defer(); + $http({ + url: BASE_URL + '/items', + method: 'GET', + params: parameters + }).success(function (data) { + deferred.resolve(data); + }); + return deferred.promise; + } + ] + }; + }; + $routeProvider.when('/items', { + controller: 'ContentController', + templateUrl: 'content.html', + resolve: getResolve(feedType.SUBSCRIPTIONS) + }).when('/items/starred', { + controller: 'ContentController', + templateUrl: 'content.html', + resolve: getResolve(feedType.STARRED) + }).when('/items/feeds/:id', { + controller: 'ContentController', + templateUrl: 'content.html', + resolve: getResolve(feedType.FEED) + }).when('/items/folders/:id', { + controller: 'ContentController', + templateUrl: 'content.html', + resolve: getResolve(feedType.FOLDER) + }).otherwise({ redirectTo: '/items' }); + } + ]); + app.run([ + '$rootScope', + '$location', + '$http', + '$q', + '$interval', + 'Loading', + 'ItemResource', + 'FeedResource', + 'FolderResource', + 'Settings', + 'Publisher', + 'BASE_URL', + 'FEED_TYPE', + 'REFRESH_RATE', + function ($rootScope, $location, $http, $q, $interval, Loading, ItemResource, FeedResource, FolderResource, Settings, Publisher, BASE_URL, FEED_TYPE, REFRESH_RATE) { + 'use strict'; + console.log($location); + Loading.setLoading('global', true); + Publisher.subscribe(ItemResource).toChannels('items', 'newestItemId', 'starred'); + Publisher.subscribe(FolderResource).toChannels('folders'); + Publisher.subscribe(FeedResource).toChannels('feeds'); + Publisher.subscribe(Settings).toChannels('settings'); + var settingsDeferred = $q.defer(); + $http.get(BASE_URL + '/settings').success(function (data) { + Publisher.publishAll(data); + settingsDeferred.resolve(); + }); + var activeFeedDeferred = $q.defer(); + $http.get(BASE_URL + '/feeds/active').success(function (data) { + var url; + switch (data.type) { + case FEED_TYPE.FEED: + url = '/items/feeds/' + data.id; + break; + case FEED_TYPE.FOLDER: + url = '/items/folders/' + data.id; + break; + case FEED_TYPE.STARRED: + url = '/items/starred'; + break; + default: + url = '/items'; } - deferred = $q.defer(); - $http({ - url: BASE_URL + '/items', - method: 'GET', - params: parameters - }).success(function (data) { - deferred.resolve(data); - }); - return deferred.promise; - } - ] - }; - }; - $routeProvider.when('/items', { - controller: 'ContentController', - templateUrl: 'content.html', - resolve: getResolve(feedType.SUBSCRIPTIONS) - }).when('/items/starred', { - controller: 'ContentController', - templateUrl: 'content.html', - resolve: getResolve(feedType.STARRED) - }).when('/items/feeds/:id', { - controller: 'ContentController', - templateUrl: 'content.html', - resolve: getResolve(feedType.FEED) - }).when('/items/folders/:id', { - controller: 'ContentController', - templateUrl: 'content.html', - resolve: getResolve(feedType.FOLDER) - }).otherwise({ redirectTo: '/items' }); - } -]); -app.run([ - '$rootScope', - '$location', - '$http', - '$q', - '$interval', - 'Loading', - 'ItemResource', - 'FeedResource', - 'FolderResource', - 'Settings', - 'Publisher', - 'BASE_URL', - 'FEED_TYPE', - 'REFRESH_RATE', - function ($rootScope, $location, $http, $q, $interval, Loading, ItemResource, FeedResource, FolderResource, Settings, Publisher, BASE_URL, FEED_TYPE, REFRESH_RATE) { - 'use strict'; - // show Loading screen - Loading.setLoading('global', true); - // listen to keys in returned queries to automatically distribute the - // incoming values to models - Publisher.subscribe(ItemResource).toChannels('items', 'newestItemId', 'starred'); - Publisher.subscribe(FolderResource).toChannels('folders'); - Publisher.subscribe(FeedResource).toChannels('feeds'); - Publisher.subscribe(Settings).toChannels('settings'); - // load feeds, settings and last read feed - var settingsDeferred, activeFeedDeferred, folderDeferred, feedDeferred; - settingsDeferred = $q.defer(); - $http.get(BASE_URL + '/settings').success(function (data) { - Publisher.publishAll(data); - settingsDeferred.resolve(); - }); - activeFeedDeferred = $q.defer(); - $http.get(BASE_URL + '/feeds/active').success(function (data) { - var url; - switch (data.type) { - case FEED_TYPE.FEED: - url = '/items/feeds/' + data.id; - break; - case FEED_TYPE.FOLDER: - url = '/items/folders/' + data.id; - break; - case FEED_TYPE.STARRED: - url = '/items/starred'; - break; - default: - url = '/items'; - } - $location.path(url); - activeFeedDeferred.resolve(); - }); - folderDeferred = $q.defer(); - $http.get(BASE_URL + '/folders').success(function (data) { - Publisher.publishAll(data); - folderDeferred.resolve(); - }); - feedDeferred = $q.defer(); - $http.get(BASE_URL + '/feeds').success(function (data) { - Publisher.publishAll(data); - feedDeferred.resolve(); - }); - // disable loading if all initial requests finished - $q.all([ - settingsDeferred.promise, - activeFeedDeferred.promise, - feedDeferred.promise, - folderDeferred.promise - ]).then(function () { - Loading.setLoading('global', false); - }); - // refresh feeds and folders - $interval(function () { - $http.get(BASE_URL + '/feeds'); - $http.get(BASE_URL + '/folders'); - }, REFRESH_RATE * 1000); - $rootScope.$on('$routeChangeStart', function () { - Loading.setLoading('content', true); - }); - $rootScope.$on('$routeChangeSuccess', function () { - Loading.setLoading('content', false); - }); - // in case of wrong id etc show all items - $rootScope.$on('$routeChangeError', function () { - $location.path('/items'); - }); - } -]); -app.controller('AppController', [ - 'Loading', - 'FeedResource', - 'FolderResource', - function (Loading, FeedResource, FolderResource) { - 'use strict'; - this.loading = Loading; - this.isFirstRun = function () { - return FeedResource.size() === 0 && FolderResource.size() === 0; - }; - } -]); -app.controller('ContentController', [ - 'Publisher', - 'FeedResource', - 'ItemResource', - 'data', - function (Publisher, FeedResource, ItemResource, data) { - 'use strict'; - // distribute data to models based on key - Publisher.publishAll(data); - this.getItems = function () { - return ItemResource.getAll(); - }; - this.getFeeds = function () { - return FeedResource.getAll(); - }; - } -]); -app.controller('NavigationController', function () { - 'use strict'; - console.log('here'); -}); -app.controller('SettingsController', function () { - 'use strict'; - console.log('here'); -}); -app.factory('FeedResource', [ - 'Resource', - '$http', - function (Resource, $http) { - 'use strict'; - var FeedResource = function ($http) { - Resource.call(this, 'url', $http); - }; - FeedResource.prototype = Object.create(Resource.prototype); - return new FeedResource($http); - } -]); -app.factory('FolderResource', [ - 'Resource', - '$http', - function (Resource, $http) { - 'use strict'; - var FolderResource = function ($http) { - Resource.call(this, 'name', $http); - }; - FolderResource.prototype = Object.create(Resource.prototype); - return new FolderResource($http); - } -]); -app.factory('ItemResource', [ - 'Resource', - '$http', - function (Resource, $http) { - 'use strict'; - var ItemResource = function ($http) { - Resource.call(this, 'id', $http); - }; - ItemResource.prototype = Object.create(Resource.prototype); - ItemResource.prototype.receive = function (value, channel) { - switch (channel) { - case 'newestItemId': - this.newestItemId = value; - break; - case 'starred': - this.starredCount = value; - break; - default: - Resource.prototype.receive.call(this, value, channel); - } - }; - ItemResource.prototype.getNewestItemId = function () { - return this.newestItemId; - }; - ItemResource.prototype.getStarredCount = function () { - return this.starredCount; - }; - return new ItemResource($http); - } -]); -app.service('Loading', function () { - 'use strict'; - this.loading = { - global: false, - content: false, - autopaging: false - }; - this.setLoading = function (area, isLoading) { - this.loading[area] = isLoading; - }; - this.isLoading = function (area) { - return this.loading[area]; - }; -}); -app.service('Publisher', function () { - 'use strict'; - var self = this; - this.channels = {}; - this.subscribe = function (object) { - return { - toChannels: function () { - var counter, channel; - for (counter = 0; counter < arguments.length; counter += 1) { - channel = arguments[counter]; - self.channels[channel] = self.channels[channel] || []; - self.channels[channel].push(object); + $location.path(url); + activeFeedDeferred.resolve(); + }); + var folderDeferred = $q.defer(); + $http.get(BASE_URL + '/folders').success(function (data) { + Publisher.publishAll(data); + folderDeferred.resolve(); + }); + var feedDeferred = $q.defer(); + $http.get(BASE_URL + '/feeds').success(function (data) { + Publisher.publishAll(data); + feedDeferred.resolve(); + }); + $q.all([ + settingsDeferred.promise, + activeFeedDeferred.promise, + feedDeferred.promise, + folderDeferred.promise + ]).then(function () { + Loading.setLoading('global', false); + }); + $interval(function () { + $http.get(BASE_URL + '/feeds'); + $http.get(BASE_URL + '/folders'); + }, REFRESH_RATE * 1000); + $rootScope.$on('$routeChangeStart', function () { + Loading.setLoading('content', true); + }); + $rootScope.$on('$routeChangeSuccess', function () { + Loading.setLoading('content', false); + }); + $rootScope.$on('$routeChangeError', function () { + $location.path('/items'); + }); + } + ]); + app.controller('AppController', [ + 'Loading', + 'FeedResource', + 'FolderResource', + function (Loading, FeedResource, FolderResource) { + 'use strict'; + this.loading = Loading; + this.isFirstRun = function () { + return FeedResource.size() === 0 && FolderResource.size() === 0; + }; } - } - }; - }; - this.publishAll = function (data) { - var channel, counter; - for (channel in data) { - if (data.hasOwnProperty(channel) && this.channels[channel] !== undefined) { - for (counter = 0; counter < this.channels[channel].length; counter += 1) { - this.channels[channel][counter].receive(data[channel], channel); + ]); + app.controller('ContentController', [ + 'Publisher', + 'FeedResource', + 'ItemResource', + 'data', + function (Publisher, FeedResource, ItemResource, data) { + 'use strict'; + Publisher.publishAll(data); + this.getItems = function () { + return ItemResource.getAll(); + }; + this.getFeeds = function () { + return FeedResource.getAll(); + }; } - } - } - }; -}); -app.factory('Resource', function () { - 'use strict'; - var Resource = function (id, http) { - this.id = id; - this.values = []; - this.hashMap = {}; - this.http = http; - }; - Resource.prototype = { - receive: function (values) { - var self = this; - values.forEach(function (value) { - self.add(value); + ]); + app.controller('NavigationController', function () { + 'use strict'; + console.log('here'); }); - }, - add: function (value) { - var key, existing; - existing = this.hashMap[value[this.id]]; - if (existing === undefined) { - this.values.push(value); - this.hashMap[value[this.id]] = value; - } else { - // copy values from new to old object if it exists already - for (key in value) { - if (value.hasOwnProperty(key)) { - existing[key] = value[key]; - } + app.controller('SettingsController', function () { + 'use strict'; + console.log('here'); + }); + app.factory('FeedResource', [ + 'Resource', + '$http', + function (Resource, $http) { + 'use strict'; + var FeedResource = function FeedResource($http) { + $traceurRuntime.superCall(this, $FeedResource.prototype, 'constructor', [ + 'url', + $http + ]); + }; + var $FeedResource = FeedResource; + $traceurRuntime.createClass(FeedResource, {}, {}, Resource); + return new FeedResource($http); } - } - }, - size: function () { - return this.values.length; - }, - get: function (id) { - return this.hashMap[id]; - }, - delete: function (id) { - // find index of object that should be deleted - var i, deleteAtIndex; - for (i = 0; i < this.values.length; i += 1) { - if (this.values[i][this.id] === id) { - deleteAtIndex = i; - break; + ]); + app.factory('FolderResource', [ + 'Resource', + '$http', + function (Resource, $http) { + 'use strict'; + var FolderResource = function FolderResource($http) { + $traceurRuntime.superCall(this, $FolderResource.prototype, 'constructor', [ + 'name', + $http + ]); + }; + var $FolderResource = FolderResource; + $traceurRuntime.createClass(FolderResource, {}, {}, Resource); + return new FolderResource($http); } - } - if (deleteAtIndex !== undefined) { - this.values.splice(deleteAtIndex, 1); - } - if (this.hashMap[id] !== undefined) { - delete this.hashMap[id]; - } - }, - clear: function () { - this.hashMap = {}; - // http://stackoverflow.com/questions/1232040/how-to-empty-an-array-in-javascript - // this is the fastes way to empty an array when you want to keep the - // reference around - while (this.values.length > 0) { - this.values.pop(); - } - }, - getAll: function () { - return this.values; - } - }; - return Resource; -}); -app.service('Settings', function () { - 'use strict'; - this.settings = {}; - this.receive = function (data) { - var key; - for (key in data) { - if (data.hasOwnProperty(key)) { - this.settings[key] = data[key]; - } - } - }; - this.get = function (key) { - return this.settings[key]; - }; - this.set = function (key, value) { - this.settings[key] = value; - }; -}); -/** - * Code in here acts only as a click shortcut mechanism. That's why its not - * being put into a directive since it has to be tested with protractor - * anyways and theres no benefit from wiring it into the angular app - */ -(function (window, document, $) { - 'use strict'; - var noInputFocused, noModifierKey, scrollArea, scrollToItem, scrollToNextItem, scrollToPreviousItem, toggleStar, toggleUnread, expandItem, openLink, getActiveItem; - scrollArea = $('#app-content'); - noInputFocused = function (element) { - return !(element.is('input') && element.is('select') && element.is('textarea') && element.is('checkbox')); - }; - noModifierKey = function (event) { - return !(event.shiftKey || event.altKey || event.ctrlKey || event.metaKey); - }; - scrollToItem = function (item, scrollArea) { - scrollArea.scrollTop(item.offset().top - scrollArea.offset().top + scrollArea.scrollTop()); - }; - scrollToNextItem = function (scrollArea) { - var items, counter, item; - items = scrollArea.find('.feed_item'); - for (counter = 0; counter < items.length; counter += 1) { - item = $(items[counter]); - if (item.position().top > 1) { - scrollToItem(scrollArea, item); - return; - } - } - // in case this is the last item it should still scroll below the top - scrollArea.scrollTop(scrollArea.prop('scrollHeight')); - }; - scrollToPreviousItem = function (scrollArea) { - var items, item, counter, previous; - items = scrollArea.find('.feed_item'); - for (counter = 0; counter < items.length; counter += 1) { - item = $(items[counter]); - if (item.position().top >= 0) { - previous = item.prev(); - // if there are no items before the current one - if (previous.length > 0) { - scrollToItem(scrollArea, previous); + ]); + app.factory('ItemResource', [ + 'Resource', + '$http', + function (Resource, $http) { + 'use strict'; + var ItemResource = function ItemResource($http) { + $traceurRuntime.superCall(this, $ItemResource.prototype, 'constructor', [ + 'id', + $http + ]); + }; + var $ItemResource = ItemResource; + $traceurRuntime.createClass(ItemResource, { + receive: function (value, channel) { + switch (channel) { + case 'newestItemId': + this.newestItemId = value; + break; + case 'starred': + this.starredCount = value; + break; + default: + $traceurRuntime.superCall(this, $ItemResource.prototype, 'receive', [ + value, + channel + ]); + } + }, + getNewestItemId: function () { + return this.newestItemId; + }, + getStarredCount: function () { + return this.starredCount; + } + }, {}, Resource); + return new ItemResource($http); } - return; - } - } - // if there was no jump jump to the last element - if (items.length > 0) { - scrollToItem(scrollArea, items.last()); - } - }; - getActiveItem = function (scrollArea) { - var items, item, counter; - items = scrollArea.find('.feed_item'); - for (counter = 0; counter < items.length; counter += 1) { - item = $(items[counter]); - // 130px of the item should be visible - if (item.height() + item.position().top > 30) { - return item; - } - } - }; - toggleUnread = function (scrollArea) { - var item = getActiveItem(scrollArea); - item.find('.keep_unread').trigger('click'); - }; - toggleStar = function (scrollArea) { - var item = getActiveItem(scrollArea); - item.find('.item_utils .star').trigger('click'); - }; - expandItem = function (scrollArea) { - var item = getActiveItem(scrollArea); - item.find('.item_heading a').trigger('click'); - }; - openLink = function (scrollArea) { - var item = getActiveItem(scrollArea).find('.item_title a'); - item.trigger('click'); - // mark read - window.open(item.attr('href'), '_blank'); - }; - $(document).keyup(function (event) { - var keyCode; - keyCode = event.keyCode; - if (noInputFocused($(':focus')) && noModifierKey(event)) { - // j, n, right arrow - if ([ - 74, - 78, - 34 - ].indexOf(keyCode) >= 0) { - event.preventDefault(); - scrollToNextItem(scrollArea); // k, p, left arrow - } else if ([ - 75, - 80, - 37 - ].indexOf(keyCode) >= 0) { - event.preventDefault(); - scrollToPreviousItem(scrollArea); // u - } else if ([85].indexOf(keyCode) >= 0) { - event.preventDefault(); - toggleUnread(scrollArea); // e - } else if ([69].indexOf(keyCode) >= 0) { - event.preventDefault(); - expandItem(scrollArea); // s, i, l - } else if ([ - 73, - 83, - 76 - ].indexOf(keyCode) >= 0) { - event.preventDefault(); - toggleStar(scrollArea); // h - } else if ([72].indexOf(keyCode) >= 0) { - event.preventDefault(); - toggleStar(scrollArea); - scrollToNextItem(scrollArea); // o - } else if ([79].indexOf(keyCode) >= 0) { - event.preventDefault(); - openLink(scrollArea); - } - } - }); -}(window, document, jQuery)); - -})(angular, jQuery, OC, oc_requesttoken);
\ No newline at end of file + ]); + app.service('Loading', function () { + 'use strict'; + var $__0 = this; + this.loading = { + global: false, + content: false, + autopaging: false + }; + this.setLoading = function (area, isLoading) { + $traceurRuntime.setProperty($__0.loading, area, isLoading); + }; + this.isLoading = function (area) { + return $__0.loading[$traceurRuntime.toProperty(area)]; + }; + }); + app.service('Publisher', function () { + 'use strict'; + var $__0 = this; + this.channels = {}; + this.subscribe = function (obj) { + return { + toChannels: function () { + for (var channels = [], $__4 = 0; $__4 < arguments.length; $__4++) + $traceurRuntime.setProperty(channels, $__4, arguments[$traceurRuntime.toProperty($__4)]); + for (var $__2 = channels[$traceurRuntime.toProperty(Symbol.iterator)](), $__3; !($__3 = $__2.next()).done;) { + try { + throw undefined; + } catch (channel) { + channel = $__3.value; + { + $traceurRuntime.setProperty($__0.channels, channel, $__0.channels[$traceurRuntime.toProperty(channel)] || []); + $__0.channels[$traceurRuntime.toProperty(channel)].push(obj); + } + } + } + } + }; + }; + this.publishAll = function (data) { + for (var $channel in data) { + try { + throw undefined; + } catch (channel) { + channel = $channel; + if ($__0.channels[$traceurRuntime.toProperty(channel)] !== undefined) { + for (var $__2 = $__0.channels[$traceurRuntime.toProperty(channel)][$traceurRuntime.toProperty(Symbol.iterator)](), $__3; !($__3 = $__2.next()).done;) { + try { + throw undefined; + } catch (listener) { + listener = $__3.value; + { + listener.receive(data[$traceurRuntime.toProperty(channel)], channel); + } + } + } + } + } + } + }; + }); + app.factory('Resource', function () { + 'use strict'; + var Resource = function Resource(id, http) { + this.id = id; + this.values = []; + this.hashMap = {}; + this.http = http; + }; + $traceurRuntime.createClass(Resource, { + receive: function (values) { + var $__0 = this; + values.forEach(function (value) { + $__0.add(value); + }); + }, + add: function (value) { + var existing = this.hashMap[$traceurRuntime.toProperty(value[$traceurRuntime.toProperty(this.id)])]; + if (existing === undefined) { + this.values.push(value); + $traceurRuntime.setProperty(this.hashMap, value[$traceurRuntime.toProperty(this.id)], value); + } else { + for (var $key in value) { + try { + throw undefined; + } catch (key) { + key = $key; + if (value.hasOwnProperty(key)) { + $traceurRuntime.setProperty(existing, key, value[$traceurRuntime.toProperty(key)]); + } + } + } + } + }, + size: function () { + return this.values.length; + }, + get: function (id) { + return this.hashMap[$traceurRuntime.toProperty(id)]; + }, + delete: function (id) { + var deleteAtIndex; + { + try { + throw undefined; + } catch ($i) { + $i = 0; + for (; $i < this.values.length; $i += 1) { + try { + throw undefined; + } catch (i) { + i = $i; + try { + if (this.values[$traceurRuntime.toProperty(i)][$traceurRuntime.toProperty(this.id)] === id) { + deleteAtIndex = i; + break; + } + } finally { + $i = i; + } + } + } + } + } + if (deleteAtIndex !== undefined) { + this.values.splice(deleteAtIndex, 1); + } + if (this.hashMap[$traceurRuntime.toProperty(id)] !== undefined) { + delete this.hashMap[$traceurRuntime.toProperty(id)]; + } + }, + clear: function () { + this.hashMap = {}; + while (this.values.length > 0) { + this.values.pop(); + } + }, + getAll: function () { + return this.values; + } + }, {}); + return Resource; + }); + app.service('Settings', function () { + 'use strict'; + var $__0 = this; + this.settings = {}; + this.receive = function (data) { + for (var $key in data) { + try { + throw undefined; + } catch (key) { + key = $key; + $traceurRuntime.setProperty($__0.settings, key, data[$traceurRuntime.toProperty(key)]); + } + } + }; + this.get = function (key) { + return $__0.settings[$traceurRuntime.toProperty(key)]; + }; + this.set = function (key, value) { + $traceurRuntime.setProperty($__0.settings, key, value); + }; + }); + (function (window, document, $) { + 'use strict'; + var scrollArea = $('#app-content'); + var noInputFocused = function (element) { + return !(element.is('input') && element.is('select') && element.is('textarea') && element.is('checkbox')); + }; + var noModifierKey = function (event) { + return !(event.shiftKey || event.altKey || event.ctrlKey || event.metaKey); + }; + var scrollToItem = function (item, scrollArea) { + scrollArea.scrollTop(item.offset().top - scrollArea.offset().top + scrollArea.scrollTop()); + }; + var scrollToNextItem = function (scrollArea) { + var items = scrollArea.find('.feed_item'); + for (var $__2 = items[$traceurRuntime.toProperty(Symbol.iterator)](), $__3; !($__3 = $__2.next()).done;) { + try { + throw undefined; + } catch (item) { + item = $__3.value; + { + item = $(item); + if (item.position().top > 1) { + scrollToItem(scrollArea, item); + return; + } + } + } + } + scrollArea.scrollTop(scrollArea.prop('scrollHeight')); + }; + var scrollToPreviousItem = function (scrollArea) { + var items = scrollArea.find('.feed_item'); + for (var $__2 = items[$traceurRuntime.toProperty(Symbol.iterator)](), $__3; !($__3 = $__2.next()).done;) { + try { + throw undefined; + } catch (item) { + item = $__3.value; + { + item = $(item); + if (item.position().top >= 0) { + try { + throw undefined; + } catch (previous) { + previous = item.prev(); + if (previous.length > 0) { + scrollToItem(scrollArea, previous); + } + return; + } + } + } + } + } + if (items.length > 0) { + scrollToItem(scrollArea, items.last()); + } + }; + var getActiveItem = function (scrollArea) { + var items = scrollArea.find('.feed_item'); + for (var $__2 = items[$traceurRuntime.toProperty(Symbol.iterator)](), $__3; !($__3 = $__2.next()).done;) { + try { + throw undefined; + } catch (item) { + item = $__3.value; + { + item = $(item); + if (item.height() + item.position().top > 30) { + return item; + } + } |