define(["jquery",
"angular",
"angular-ui-router",
"angular-animate",
"angular-aria",
"angular-material",
"material-steppers",
"angular-device-detector",
"angular-resizable",
"angular-messages",
"angular-local-storage",
"underscore",
"element-queries",
"string",
"jquery-resize",
'angular-material-icons',
'angular-spinner',
'angular-nanoscroller',
'angular-truncate',
'angular-sanitize',
'angular-resource',
'jquery-print',
'ng-file-upload',
'adm-dtp',
'angular-material-data-table',
'ng-scrollable',
'tinymce',
'angular-tinymce',
"masonry"],
function (jquery,
angular,
angularUiRouter,
angularAnimate,
angularAria,
angularMaterial,
materialSteppers,
angularDeviceDetector,
angularResizable,
angularMessages,
angularLocalStorage,
underscore,
elementQueries,
string,
jqueryResize,
angularMaterialIcons,
angularSpinner,
angularNanoScroller,
angularTruncate,
angularSanitize,
angularResource,
jqueryPrint,
ngFileUpload,
admDateTimePicker,
angularMaterialDataTable,
ngScrollable,
tinyMce,
angularTinyMce,
masonry) {
var app = angular.module("app", ['ui.router', 'ngMaterial', 'ngMessages', 'LocalStorageModule', 'angularResizable', 'ng.deviceDetector', 'ngMdIcons', 'angularSpinner', 'sun.scrollable', 'md.data.table', 'truncate', 'ngResource', 'ngScrollable', "ngSanitize", "ngAnimate", 'ADM-dateTimePicker', 'ngFileUpload','md-steppers','ui.tinymce'],
function config() {
});
app.run(function ($rootScope, $state,security,materialDataTable,state) {
$rootScope.$on('$stateChangeStart', function (event, toState) {
if (toState.data && toState.data.secure && !security.isAuthenticated()) {
$state.go("root.login");
event.preventDefault();
}
});
$rootScope.$on('$stateChangeSuccess', function (event, toState) {
if(toState.data.resetDataContextAfterStateActivated) {
//create new context or reset preexist context
materialDataTable.getContext(state.current.getDataServiceName(), state.current.getDataService(),true);
}
});
});
var afterBootstrapTasks = [];
function startAngular() {
var root = document.getElementsByTagName("body")[0];
angular.bootstrap(root, ["app"]);
var injector = angular.element(root).injector();
afterBootstrapTasks.forEach(function (item) {
item(injector);
});
}
return {
jquery: jquery,
angular: angular,
angularUiRouter: angularUiRouter,
underscore: underscore,
elementQueries: elementQueries,
jqueryResize: jqueryResize,
string: string,
masonry: masonry,
app: app,
startAngular: startAngular,
storage: angularLocalStorage,
directives: [],
afterBootstrapTasks: afterBootstrapTasks,
tinyMce:tinyMce,
};
});