Summary Table
| Categories |
Total Count |
| PII |
0 |
| URL |
0 |
| DNS |
0 |
| EKL |
0 |
| IP |
0 |
| PORT |
0 |
| VsID |
0 |
| CF |
0 |
| AI |
0 |
| VPD |
0 |
| PL |
0 |
| Other |
0 |
File Content
angular.module('snap', []);
(function() {
'use strict';
var version = [1, 4, 1]
, vObj = {
full: version.join('.'),
major: version[0],
minor: version[1],
patch: version[2]
};
angular.module('snap').constant('SNAP_VERSION', vObj);
}());
angular.module('snap')
.directive('snapClose', ['$rootScope', 'snapRemote', function($rootScope, snapRemote) {
'use strict';
return {
restrict: 'A',
link: function (scope, element, attrs) {
element.bind('click', function() {
// Wrap in anonymous function for easier testing
snapRemote.close(scope.$eval(attrs.snapId));
$rootScope.$digest();
});
}
};
}]);
angular.module('snap')
.directive('snapContent', ['snapRemote', function (snapRemote) {
'use strict';
return {
restrict: 'AE',
link: function postLink(scope, element, attrs) {
element.addClass('snap-content');
var snapOptions = {
element: element[0]
};
angular.extend(snapOptions, snapRemote.globalOptions);
var snapId = attrs.snapId;
if(!!snapId) {
snapId = scope.$eval(attrs.snapId);
}
// override snap options if some provided in snap-options attribute
if(angular.isDefined(attrs.snapOptions) && attrs.snapOptions) {
angular.extend(snapOptions, scope.$eval(attrs.snapOptions));
}
snapRemote.register(new window.Snap(snapOptions), snapId);
// watch snapOptions for updates
if(angular.isDefined(attrs.snapOptions) && attrs.snapOptions) {
scope.$watch(attrs.snapOptions, function(newSnapOptions) {
snapRemote.getSnapper(snapId).then(function(snapper) {
snapper.settings(newSnapOptions);
});
}, true);
}
scope.$on('$destroy', function() {
snapRemote.unregister(snapId);
});
}
};
}]);
angular.module('snap')
.directive('snapDragger', ['snapRemote', function(snapRemote) {
'use strict';
return {
restrict: 'AE',
link: function(scope, element, attrs) {
var snapId = scope.$eval(attrs.snapId);
snapRemote.getSnapper(snapId).then(function(snapper) {
snapper.settings({
dragger: element[0]
});
});
}
};
}]);
angular.module('snap')
.directive('snapDrawer', function () {
'use strict';
return {
restrict: 'AE',
link: function(scope, element, attrs) {
element.addClass('snap-drawer');
// Don't force a `snap-drawers` wrapper when we only want to use a
// single shelf
var parent = element.parent()
, needsDrawersWrapper = true;
if (attrs.snapDrawer === 'right') {
element.addClass('snap-drawer-right');
} else {
element.addClass('snap-drawer-left');
}
while(parent.length) {
if(parent.hasClass('snap-drawers')) {
needsDrawersWrapper = false;
}
parent = parent.parent();
}
if(needsDrawersWrapper) {
element.wrap('<div class="snap-drawers" />');
}
}
};
});
angular.module('snap')
.directive('snapDrawers', function () {
'use strict';
return {
restrict: 'AE',
compile: function(element, attrs) {
element.addClass('snap-drawers');
}
};
});
angular.module('snap')
.directive('snapToggle', ['$rootScope', 'snapRemote', function($rootScope, snapRemote) {
'use strict';
return {
restrict: 'A',
link: function (scope, element, attrs) {
var snapId = attrs.snapId,
snapSide = attrs.snapToggle || 'left';
if(!!snapId) {
snapId = scope.$eval(snapId);
}
element.bind('click', function() {
var snapType = '';
if(typeof this !== "undefined"){
snapType = this.parentElement.tagName
}
snapRemote.toggle(snapSide, snapId, snapType);
$rootScope.$digest();
});
}
};
}]);
angular.module('snap')
.provider('snapRemote', function SnapRemoteProvider() {
'use strict';
// Global Snap.js options
var self = this;
this.globalOptions = {};
this.$get = ['$q', function($q) {
var snapperStore = {}
, DEFAULT_SNAPPER_ID = '__DEFAULT_SNAPPER_ID__'
, exports = {}
, initStoreForId
, resolveInStoreById;
exports.globalOptions = self.globalOptions;
exports.getSnapper = function(id) {
id = id || DEFAULT_SNAPPER_ID;
if(!snapperStore.hasOwnProperty(id)) {
initStoreForId(id);
}
return snapperStore[id].deferred.promise;
};
exports.register = function(snapper, id) {
id = id || DEFAULT_SNAPPER_ID;
if(!snapperStore.hasOwnProperty(id)) {
initStoreForId(id);
}
if(snapperStore[id].isResolved) {
initStoreForId(id);
}
resolveInStoreById(snapper, id);
};
exports.unregister = function(id) {
id = id || DEFAULT_SNAPPER_ID;
if(snapperStore.hasOwnProperty(id)) {
delete snapperStore[id];
}
};
exports.toggle = function(side, id, snapType) {
id = id || DEFAULT_SNAPPER_ID;
exports.getSnapper(id).then(function(snapper) {
if(side === snapper.state().state) {
if(snapType === 'LI'){
setTimeout(function(){exports.close(id)},200);
}
else{
exports.close(id);
}
} else {
exports.open(side, id);
}
});
};
exports.open = function(side, id) {
id = id || DEFAULT_SNAPPER_ID;
exports.getSnapper(id).then(function(snapper) {
snapper.open(side);
});
};
exports.close = function(id) {
id = id || DEFAULT_SNAPPER_ID;
exports.getSnapper(id).then(function(snapper) {
snapper.close();
});
};
initStoreForId = function(id) {
snapperStore[id] = {
deferred: $q.defer(),
isResolved: false
};
};
resolveInStoreById = function(snapper, id) {
snapperStore[id].deferred.resolve(snapper);
snapperStore[id].isResolved = true;
};
return exports;
}];
return this;
});