-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathangular-fullscreen.js
70 lines (62 loc) · 1.92 KB
/
angular-fullscreen.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
(function(window) {
var createModule = function(angular) {
var module = angular.module('FSAngular', []);
module.factory('Fullscreen', ['$document', function ($document) {
var document = $document[0];
return {
all: function() {
this.enable( document.documentElement );
},
enable: function(element) {
if(element.requestFullScreen) {
element.requestFullScreen();
} else if(element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if(element.webkitRequestFullScreen) {
element.webkitRequestFullScreen();
}
},
cancel: function() {
if(document.cancelFullScreen) {
document.cancelFullScreen();
} else if(document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if(document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
}
},
isEnabled: function(){
var fullscreenElement = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;
return fullscreenElement;
}
};
}]);
module.directive('fullscreen', ['Fullscreen', '$document', function(Fullscreen, $document) {
var document = $document[0];
return {
link : function ($scope, $element, $attrs) {
// Watch for changes on scope if model is provided
if ($attrs.fullscreen) {
$scope.$watch($attrs.fullscreen, function(value) {
var isEnabled = Fullscreen.isEnabled();
if (value && !isEnabled) {
Fullscreen.enable($element[0]);
} else if (!value && isEnabled) {
Fullscreen.cancel();
}
});
}
$element.on('click', function (ev) {
Fullscreen.enable( $element[0] );
});
}
};
}]);
return module;
};
if (typeof define === "function" && define.amd) {
define("FSAngular", ['angular'], function (angular) { return createModule(angular); } );
} else {
createModule(window.angular);
}
})(window);