'use strict'; var ZeroClipboard = window.ZeroClipboard; angular.module('insight') .directive('whenScrolled', ['$window', function($window) { return { restric: 'A', link: function(scope, elm, attr) { var pageHeight, clientHeight, scrollPos; $window = angular.element($window); var handler = function() { pageHeight = window.document.documentElement.scrollHeight; clientHeight = window.document.documentElement.clientHeight; scrollPos = window.pageYOffset; if (pageHeight - (scrollPos + clientHeight) === 0) { scope.$apply(attr.whenScrolled); } }; $window.on('scroll', handler); scope.$on('$destroy', function() { return $window.off('scroll', handler); }); } }; }]) .directive('clipCopy', [function() { ZeroClipboard.config({ moviePath: '../lib/zeroclipboard/ZeroClipboard.swf', trustedDomains: ['*'], allowScriptAccess: 'always', forceHandCursor: true }); return { restric: 'A', scope: { clipCopy: '=clipCopy' }, link: function(scope, elm) { var clip = new ZeroClipboard(elm); clip.on('load', function(client) { var onMousedown = function(client) { client.setText(scope.clipCopy); }; client.on('mousedown', onMousedown); scope.$on('$destroy', function() { client.off('mousedown', onMousedown); client.unglue(elm); }); }); } }; }]);