diff --git a/client/gulpfile.js b/client/gulpfile.js new file mode 100644 index 00000000000..ab64e4540eb --- /dev/null +++ b/client/gulpfile.js @@ -0,0 +1,27 @@ +var gulp = require('gulp'); +var uglify = require('gulp-uglify'); +var sourcemaps = require('gulp-sourcemaps'); +var del = require('del'); + +var paths = { + scripts: ['galaxy/scripts/**/*.js', + 'galaxy/scripts/!apps/**/*.js' + ] +}; + +gulp.task('scripts', ['clean'], function() { + return gulp.src(paths.scripts) + .pipe(sourcemaps.init()) + // Transpile here prior to uglify. + .pipe(uglify()) + .pipe(sourcemaps.write('../maps/')) + .pipe(gulp.dest('../static/scripts/')); +}); + +gulp.task('clean', function(){ + // This currently wipes out webpack bundles, too, but it'll keep us from + // shipping cruft. Need to add a whitelist. + return del(['../static/scripts/'], {force: true}); +}); + +gulp.task('default', ['scripts']); diff --git a/client/package.json b/client/package.json index e1b27d9893e..428d90b5635 100644 --- a/client/package.json +++ b/client/package.json @@ -15,6 +15,7 @@ "babel-core": "^6.24.0", "babel-loader": "^6.4.1", "babel-preset-env": "^1.3.2", + "del": "^2.2.2", "grunt": "^0.4.5", "grunt-bower-install-simple": "^1.1.0", "grunt-check-modules": "^1.0.0", @@ -26,6 +27,9 @@ "grunt-contrib-watch": "^0.6.1", "grunt-exec": "^0.4.6", "grunt-spritesmith": "^4.7.1", + "gulp": "^3.9.1", + "gulp-sourcemaps": "^2.5.1", + "gulp-uglify": "^2.1.2", "webpack": "^2.3.3" }, "scripts": { @@ -33,6 +37,7 @@ "webpack": "webpack -p", "webpack-dev": "webpack -d", "webpack-dev-watch": "webpack -d --watch", - "build-style": "grunt style" + "build-style": "grunt style", + "gulp": "gulp" } } diff --git a/static/maps/galaxy.interactive_environments.js.map b/static/maps/galaxy.interactive_environments.js.map index 75370a01be8..28d5c261ff2 100644 --- a/static/maps/galaxy.interactive_environments.js.map +++ b/static/maps/galaxy.interactive_environments.js.map @@ -1 +1 @@ -{"version":3,"file":"galaxy.interactive_environments.js","sources":["../src/galaxy.interactive_environments.js"],"names":["append_notebook","url","clear_main_area","$","append","remove","children","display_spinner","galaxy_root","load_when_ready","success_callback","request_count","timeout_time","timeout_time_max","timeout_time_step","timeout","ajax","xhrFields","withCredentials","type","dataType","success","data","console","log","toastr","clear","info","closeButton","tapToDismiss","window","setTimeout","error","test_ie_availability","interval","setInterval","clearInterval","timeOut"],"mappings":"AAIA,QAASA,iBAAgBC,GACrBC,kBACAC,EAAE,SAASC,OAAO,uHAAwHH,EAAK,eAInJ,QAASC,mBACLC,EAAE,YAAYE,SACdF,EAAE,SAASG,WAAWD,SAG1B,QAASE,mBACDJ,EAAE,SAASC,OAAO,0BAA4BI,YAAc,wGAMpE,QAASC,iBAAgBR,EAAKS,GAC1B,GAAIC,GAAgB,EAChBC,EAAe,IACfC,EAAmB,KACnBC,EAAoB,IACpBC,EAAU,WACVZ,EAAEa,MACEf,IAAKA,EACLgB,WACIC,iBAAiB,GAErBC,KAAM,MACNJ,QAAS,IACTK,SAAU,OACVC,QAAS,SAASC,GACH,GAARA,GACCC,QAAQC,IAAI,gDACZtB,kBACAuB,OAAOC,QACPhB,KACa,GAARY,GACe,GAAjBX,IACCJ,kBACAkB,OAAOE,KACH,gGACCC,aAAe,EAAMC,cAAgB,KAG9ClB,IACkBE,EAAfD,IACCA,GAAgBE,GAEpBS,QAAQC,IAAI,qBAAuBb,EAAgB,aAAeC,EAAe,IAAO,KACxFkB,OAAOC,WAAWhB,EAASH,KAE3BV,kBACAuB,OAAOC,QACPD,OAAOO,MACH,gHACA,SACCJ,aAAe,EAAMC,cAAgB,QAM1DC,QAAOC,WAAWhB,EAASH,GAY/B,QAASqB,sBAAqBhC,EAAKS,GAC/B,GAAIC,GAAgB,CACpBJ,mBACA2B,SAAWC,YAAY,WACnBhC,EAAEa,MACEf,IAAKA,EACLgB,WACIC,iBAAiB,GAErBC,KAAM,MACNJ,QAAS,IACTM,QAAS,WACLE,QAAQC,IAAI,8BACZY,cAAcF,UACdxB,KAEJsB,MAAO,WACHrB,IACAY,QAAQC,IAAI,wBAA0Bb,GACnCA,EAAgB,KACfyB,cAAcF,UACdhC,kBACAuB,OAAOO,MACH,sDACA,SACCJ,aAAe,EAAMS,QAAW,IAAOR,cAAgB,SAKzE"} \ No newline at end of file +{"version":3,"sources":["galaxy.interactive_environments.js"],"names":["append_notebook","url","clear_main_area","$","append","remove","children","display_spinner","galaxy_root","load_when_ready","success_callback","request_count","timeout_time","timeout","ajax","xhrFields","withCredentials","type","dataType","success","data","console","log","toastr","clear","info","closeButton","tapToDismiss","window","setTimeout","error","test_ie_availability","interval","setInterval","clearInterval","jqxhr","status","timeOut"],"mappings":"AAIA,QAASA,iBAAgBC,GACrBC,kBACAC,EAAE,SAASC,OAAO,uHAAwHH,EAAK,eAInJ,QAASC,mBACLC,EAAE,YAAYE,SACdF,EAAE,SAASG,WAAWD,SAG1B,QAASE,mBACDJ,EAAE,SAASC,OAAO,0BAA4BI,YAAc,wGAMpE,QAASC,iBAAgBR,EAAKS,GAC1B,GAAIC,GAAgB,EAChBC,EAAe,IAGfC,EAAU,WACVV,EAAEW,MACEb,IAAKA,EACLc,WACIC,iBAAiB,GAErBC,KAAM,MACNJ,QAAS,IACTK,SAAU,OACVC,QAAS,SAASC,GACH,GAARA,GACCC,QAAQC,IAAI,gDACZpB,kBACAqB,OAAOC,QACPd,KACa,GAARU,GACe,GAAjBT,IACCJ,kBACAgB,OAAOE,KACH,gGACCC,aAAe,EAAMC,cAAgB,KAG9ChB,IACGC,EA1BI,OA2BHA,GA1BI,KA4BRS,QAAQC,IAAI,qBAAuBX,EAAgB,aAAeC,EAAe,IAAO,KACxFgB,OAAOC,WAAWhB,EAASD,KAE3BV,kBACAqB,OAAOC,QACPD,OAAOO,MACH,gHACA,SACCJ,aAAe,EAAMC,cAAgB,QAM1DC,QAAOC,WAAWhB,EAASD,GAY/B,QAASmB,sBAAqB9B,EAAKS,GAC/B,GAAIC,GAAgB,CACpBJ,mBACAyB,SAAWC,YAAY,WACnB9B,EAAEW,MACEb,IAAKA,EACLc,WACIC,iBAAiB,GAErBC,KAAM,MACNJ,QAAS,IACTM,QAAS,WACLE,QAAQC,IAAI,8BACZY,cAAcF,UACdtB,KAEJoB,MAAO,SAASK,EAAOC,EAAQN,GAC3BnB,IACAU,QAAQC,IAAI,wBAA0BX,GACnCA,EAAgB,KACfuB,cAAcF,UACd9B,kBACAqB,OAAOO,MACH,sDACA,SACCJ,aAAe,EAAMW,QAAW,IAAOV,cAAgB,SAKzE","file":"../scripts/galaxy.interactive_environments.js","sourcesContent":["/**\n * Internal function to remove content from the main area and add the notebook.\n * Not idempotent\n */\nfunction append_notebook(url){\n clear_main_area();\n $('#main').append(''\n );\n}\n\nfunction clear_main_area(){\n $('#spinner').remove();\n $('#main').children().remove();\n}\n\nfunction display_spinner(){\n $('#main').append('');\n}\n\n/**\n * Check a URL for a boolean true/false and call a callback when done.\n */\nfunction load_when_ready(url, success_callback){\n var request_count = 0;\n var timeout_time = 1000;\n var timeout_time_max = 15000;\n var timeout_time_step = 1000;\n var timeout = function(){\n $.ajax({\n url: url,\n xhrFields: {\n withCredentials: true\n },\n type: \"GET\",\n timeout: 500,\n dataType: \"json\",\n success: function(data){\n if(data == true){\n console.log(\"Galaxy reports IE container ready, returning\");\n clear_main_area();\n toastr.clear();\n success_callback();\n }else if(data == false){\n if(request_count == 0){\n display_spinner();\n toastr.info(\n \"Galaxy is launching a container in which to run this interactive environment. Please wait...\",\n {'closeButton': true, 'tapToDismiss': false}\n );\n }\n request_count++;\n if(timeout_time < timeout_time_max){\n timeout_time += timeout_time_step;\n }\n console.log(\"Readiness request \" + request_count + \" sleeping \" + timeout_time / 1000 + \"s\");\n window.setTimeout(timeout, timeout_time)\n }else{\n clear_main_area();\n toastr.clear();\n toastr.error(\n \"Galaxy failed to launch a container in which to run this interactive environment, contact your administrator.\",\n \"Error\",\n {'closeButton': true, 'tapToDismiss': false}\n );\n }\n }\n });\n }\n window.setTimeout(timeout, timeout_time);\n}\n\n\n\n/**\n * Test availability of a URL, and call a callback when done.\n * http://stackoverflow.com/q/25390206/347368\n * @param {String} url: URL to test availability of. Must return a 200 (302->200 is OK).\n * @param {String} callback: function to call once successfully connected.\n *\n */\nfunction test_ie_availability(url, success_callback){\n var request_count = 0;\n display_spinner();\n interval = setInterval(function(){\n $.ajax({\n url: url,\n xhrFields: {\n withCredentials: true\n },\n type: \"GET\",\n timeout: 500,\n success: function(){\n console.log(\"Connected to IE, returning\");\n clearInterval(interval);\n success_callback();\n },\n error: function(jqxhr, status, error){\n request_count++;\n console.log(\"Availability request \" + request_count);\n if(request_count > 30){\n clearInterval(interval);\n clear_main_area();\n toastr.error(\n \"Could not connect to IE, contact your administrator\",\n \"Error\",\n {'closeButton': true, 'timeOut': 20000, 'tapToDismiss': false}\n );\n }\n }\n });\n }, 1000);\n}\n"]} \ No newline at end of file diff --git a/static/maps/galaxy.js.map b/static/maps/galaxy.js.map index 13cf261b083..6d8f762b807 100644 --- a/static/maps/galaxy.js.map +++ b/static/maps/galaxy.js.map @@ -1 +1 @@ -{"version":3,"file":"galaxy.js","sources":["../src/galaxy.js"],"names":["define","_","Backbone","BASE_MVC","userModel","metricsLogger","addLogging","localize","GalaxyApp","options","bootstrapped","self","this","_init","DEBUGGING_KEY","NAMESPACE_KEY","localDebugging","localStorage","getItem","storageErr","console","log","prototype","extend","Events","logger","debug","_processOptions","root","_initConfig","config","_patchGalaxy","window","Galaxy","_initLogger","loggerOptions","_initLocale","_initUser","user","_setUpListeners","trigger","defaultOptions","patchExisting","defaults","k","hasOwnProperty","patchWith","consoleLogger","consoleLevel","MetricsLogger","ALL","consoleNamespaceWhitelist","split","emit","map","i","arguments","Array","slice","call","LoggableMixin","_l","userJSON","User","lastAjax","$","document","bind","ev","xhr","data","JSON","parse","err","url","location","href","debugging","setting","undefined","setItem","removeItem","debuggingNamespaces","namespaces","csv","newSettings","toString","userEmail","get"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["galaxy.js"],"names":["define","_","Backbone","BASE_MVC","userModel","metricsLogger","addLogging","localize","GalaxyApp","options","bootstrapped","this","_init","NAMESPACE_KEY","DEBUGGING_KEY","localDebugging","localStorage","getItem","storageErr","console","log","prototype","self","extend","Events","logger","debug","_processOptions","root","_initConfig","config","_patchGalaxy","window","Galaxy","_initLogger","loggerOptions","_initLocale","_initUser","user","_setUpListeners","trigger","defaultOptions","patchExisting","defaults","k","hasOwnProperty","patchWith","consoleLogger","consoleLevel","MetricsLogger","ALL","consoleNamespaceWhitelist","split","emit","map","i","data","arguments","Array","slice","call","LoggableMixin","_l","userJSON","User","lastAjax","$","document","bind","ev","xhr","JSON","parse","err","url","location","href","debugging","setting","undefined","setItem","removeItem","debuggingNamespaces","namespaces","csv","newSettings","toString","get"],"mappings":"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","file":"../scripts/galaxy.js","sourcesContent":["define([\n 'libs/underscore',\n 'libs/backbone',\n 'mvc/base-mvc',\n 'mvc/user/user-model',\n 'utils/metrics-logger',\n 'utils/add-logging',\n 'utils/localization'\n], function( _, Backbone, BASE_MVC, userModel, metricsLogger, addLogging, localize ){\n\n// TODO: move into a singleton pattern and have dependents import Galaxy\n// ============================================================================\n/** Base galaxy client-side application.\n * Iniitializes:\n * logger : the logger/metrics-logger\n * localize : the string localizer\n * config : the current configuration (any k/v in\n * galaxy.ini available from the configuration API)\n * user : the current user (as a mvc/user/user-model)\n */\nfunction GalaxyApp( options, bootstrapped ){\n var self = this;\n return self._init( options || {}, bootstrapped || {} );\n}\n\n// add logging shortcuts for this object\naddLogging( GalaxyApp, 'GalaxyApp' );\n\n// a debug flag can be set via local storage and made available during script/page loading\nvar DEBUGGING_KEY = 'galaxy:debug',\n NAMESPACE_KEY = DEBUGGING_KEY + ':namespaces',\n localDebugging = false;\ntry {\n localDebugging = localStorage.getItem( DEBUGGING_KEY ) == 'true';\n} catch( storageErr ){\n console.log( localize( 'localStorage not available for debug flag retrieval' ) );\n}\n\n/** initalize options and sub-components */\nGalaxyApp.prototype._init = function __init( options, bootstrapped ){\n var self = this;\n _.extend( self, Backbone.Events );\n if( localDebugging ){\n self.logger = console;\n console.debug( 'debugging galaxy:', 'options:', options, 'bootstrapped:', bootstrapped );\n }\n\n self._processOptions( options );\n // special case for root\n self.root = options.root || '/';\n\n self._initConfig( options.config || {} );\n self._patchGalaxy( window.Galaxy );\n\n self._initLogger( self.options.loggerOptions || {} );\n // at this point, either logging or not and namespaces are enabled - chat it up\n self.debug( 'GalaxyApp.options: ', self.options );\n self.debug( 'GalaxyApp.config: ', self.config );\n self.debug( 'GalaxyApp.logger: ', self.logger );\n\n self._initLocale();\n self.debug( 'GalaxyApp.localize: ', self.localize );\n\n self.config = options.config || {};\n self.debug( 'GalaxyApp.config: ', self.config );\n\n self._initUser( options.user || {} );\n self.debug( 'GalaxyApp.user: ', self.user );\n\n self._setUpListeners();\n self.trigger( 'ready', self );\n\n return self;\n};\n\n/** default options */\nGalaxyApp.prototype.defaultOptions = {\n /** monkey patch attributes from existing window.Galaxy object? */\n patchExisting : true,\n /** root url of this app */\n root : '/'\n};\n\n/** filter to options present in defaultOptions (and default to them) */\nGalaxyApp.prototype._processOptions = function _processOptions( options ){\n var self = this,\n defaults = self.defaultOptions;\n\n self.options = {};\n for( var k in defaults ){\n if( defaults.hasOwnProperty( k ) ){\n self.options[ k ] = ( options.hasOwnProperty( k ) )?( options[ k ] ):( defaults[ k ] );\n }\n }\n return self;\n};\n\n/** parse the config and any extra info derived from it */\nGalaxyApp.prototype._initConfig = function _initConfig( config ){\n var self = this;\n self.config = config;\n\n // give precendence to localdebugging for this setting\n self.config.debug = localDebugging || self.config.debug;\n\n return self;\n};\n\n/** add an option from options if the key matches an option in defaultOptions */\nGalaxyApp.prototype._patchGalaxy = function _patchGalaxy( patchWith ){\n var self = this;\n // in case req or plain script tag order has created a prev. version of the Galaxy obj...\n if( self.options.patchExisting && patchWith ){\n // self.debug( 'found existing Galaxy object:', patchWith );\n // ...(for now) monkey patch any added attributes that the previous Galaxy may have had\n //TODO: move those attributes to more formal assignment in GalaxyApp\n for( var k in patchWith ){\n if( patchWith.hasOwnProperty( k ) ){\n // self.debug( '\\t patching in ' + k + ' to Galaxy:', self[ k ] );\n self[ k ] = patchWith[ k ];\n }\n }\n }\n};\n\n/** set up the metrics logger (utils/metrics-logger) and pass loggerOptions */\nGalaxyApp.prototype._initLogger = function _initLogger( loggerOptions ){\n var self = this;\n\n // default to console logging at the debug level if the debug flag is set\n if( self.config.debug ){\n loggerOptions.consoleLogger = loggerOptions.consoleLogger || console;\n loggerOptions.consoleLevel = loggerOptions.consoleLevel || metricsLogger.MetricsLogger.ALL;\n // load any logging namespaces from localStorage if we can\n try {\n loggerOptions.consoleNamespaceWhitelist = localStorage.getItem( NAMESPACE_KEY ).split( ',' );\n } catch( storageErr ){}\n }\n\n self.logger = new metricsLogger.MetricsLogger( loggerOptions );\n self.emit = {};\n [ 'log', 'debug', 'info', 'warn', 'error', 'metric' ].map(function( i ) {\n self.emit[ i ] = function( data ){\n self.logger.emit( i, arguments[ 0 ], Array.prototype.slice.call( arguments, 1 ) );\n };\n });\n\n if( self.config.debug ){\n // add this logger to mvc's loggable mixin so that all models can use the logger\n BASE_MVC.LoggableMixin.logger = self.logger;\n }\n return self;\n};\n\n/** add the localize fn to this object and the window namespace (as '_l') */\nGalaxyApp.prototype._initLocale = function _initLocale( options ){\n var self = this;\n self.debug( '_initLocale:', options );\n self.localize = localize;\n // add to window as global shortened alias\n // TODO: temporary - remove when can require for plugins\n window._l = self.localize;\n return self;\n};\n\n/** set up the current user as a Backbone model (mvc/user/user-model) */\nGalaxyApp.prototype._initUser = function _initUser( userJSON ){\n var self = this;\n self.debug( '_initUser:', userJSON );\n self.user = new userModel.User( userJSON );\n self.user.logger = self.logger;\n return self;\n};\n\n/** Set up DOM/jQuery/Backbone event listeners enabled for all pages */\nGalaxyApp.prototype._setUpListeners = function _setUpListeners(){\n var self = this;\n\n // hook to jq beforeSend to record the most recent ajax call and cache some data about it\n /** cached info about the last ajax call made through jQuery */\n self.lastAjax = {};\n $( document ).bind( 'ajaxSend', function( ev, xhr, options ){\n var data = options.data;\n try {\n data = JSON.parse( data );\n } catch( err ){}\n\n self.lastAjax = {\n url : location.href.slice( 0, -1 ) + options.url,\n data : data\n };\n //TODO:?? we might somehow manage to *retry* ajax using either this hook or Backbone.sync\n });\n return self;\n};\n\n/** Turn debugging/console-output on/off by passing boolean. Pass nothing to get current setting. */\nGalaxyApp.prototype.debugging = function _debugging( setting ){\n var self = this;\n try {\n if( setting === undefined ){\n return localStorage.getItem( DEBUGGING_KEY ) === 'true';\n }\n if( setting ){\n localStorage.setItem( DEBUGGING_KEY, true );\n return true;\n }\n\n localStorage.removeItem( DEBUGGING_KEY );\n // also remove all namespaces\n self.debuggingNamespaces( null );\n\n } catch( storageErr ){\n console.log( localize( 'localStorage not available for debug flag retrieval' ) );\n }\n return false;\n};\n\n/** Add, remove, or clear namespaces from the debugging filters\n * Pass no arguments to retrieve the existing namespaces as an array.\n * Pass in null to clear all namespaces (all logging messages will show now).\n * Pass in an array of strings or single string of the namespaces to filter to.\n * Returns the new/current namespaces as an array;\n */\nGalaxyApp.prototype.debuggingNamespaces = function _debuggingNamespaces( namespaces ){\n var self = this;\n try {\n if( namespaces === undefined ){\n var csv = localStorage.getItem( NAMESPACE_KEY );\n return typeof( csv ) === 'string'? csv.split( ',' ) : [];\n } else if( namespaces === null ) {\n localStorage.removeItem( NAMESPACE_KEY );\n } else {\n localStorage.setItem( NAMESPACE_KEY, namespaces );\n }\n var newSettings = self.debuggingNamespaces();\n if( self.logger ){\n self.logger.options.consoleNamespaceWhitelist = newSettings;\n }\n return newSettings;\n } catch( storageErr ){\n console.log( localize( 'localStorage not available for debug namespace retrieval' ) );\n }\n};\n\n/** string rep */\nGalaxyApp.prototype.toString = function toString(){\n var userEmail = this.user? ( this.user.get( 'email' ) || '(anonymous)' ) : 'uninitialized';\n return 'GalaxyApp(' + userEmail + ')';\n};\n\n// ============================================================================\n return {\n GalaxyApp : GalaxyApp\n };\n});\n"]} \ No newline at end of file diff --git a/static/maps/galaxy.library.js.map b/static/maps/galaxy.library.js.map index 67ae9bf7111..e04b822d2bd 100644 --- a/static/maps/galaxy.library.js.map +++ b/static/maps/galaxy.library.js.map @@ -1 +1 @@ -{"version":3,"file":"galaxy.library.js","sources":["../src/galaxy.library.js"],"names":["define","mod_masthead","mod_utils","mod_toastr","mod_baseMVC","mod_library_model","mod_folderlist_view","mod_librarylist_view","mod_librarytoolbar_view","mod_foldertoolbar_view","mod_library_dataset_view","mod_library_library_view","mod_library_folder_view","LibraryRouter","Backbone","Router","extend","initialize","this","routesHit","history","on","bind","trackPageview","routes","page/:show_page","library/:library_id/permissions","folders/:folder_id/permissions","folders/:id","folders/:id/page/:show_page","folders/:folder_id/datasets/:dataset_id","folders/:folder_id/datasets/:dataset_id/permissions","folders/:folder_id/datasets/:dataset_id/versions/:ldda_id","folders/:folder_id/download/:format","folders/:folder_id/import/:source","back","window","navigate","trigger","replace","url","getFragment","test","ga","Galaxy","root","LibraryPrefs","SessionStorageModel","defaults","with_deleted","sort_order","sort_by","library_page_size","folder_page_size","GalaxyLibrary","View","libraryToolbarView","libraryListView","library_router","libraryView","folderToolbarView","folderListView","datasetView","config","ga_code","i","s","o","g","r","a","m","q","push","arguments","l","Date","createElement","getElementsByTagName","async","src","parentNode","insertBefore","document","libraries","preferences","id","$el","unbind","LibraryToolbarView","LibraryListView","show_page","render","FolderToolbarView","FolderListView","parseInt","folder_id","format","$","find","length","info","download","dataset_id","LibraryDatasetView","show_version","show_permissions","ldda_id","library_id","LibraryView","folderView","FolderView","source","showImportModal","start","pushState","GalaxyApp"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["galaxy.library.js"],"names":["define","mod_masthead","mod_utils","mod_toastr","mod_baseMVC","mod_library_model","mod_folderlist_view","mod_librarylist_view","mod_librarytoolbar_view","mod_foldertoolbar_view","mod_library_dataset_view","mod_library_library_view","mod_library_folder_view","LibraryRouter","Backbone","Router","extend","initialize","this","routesHit","history","on","bind","trackPageview","routes","","page/:show_page","library/:library_id/permissions","folders/:folder_id/permissions","folders/:id","folders/:id/page/:show_page","folders/:folder_id/datasets/:dataset_id","folders/:folder_id/datasets/:dataset_id/permissions","folders/:folder_id/datasets/:dataset_id/versions/:ldda_id","folders/:folder_id/download/:format","folders/:folder_id/import/:source","back","window","navigate","trigger","replace","url","getFragment","test","ga","Galaxy","root","LibraryPrefs","SessionStorageModel","defaults","with_deleted","sort_order","sort_by","library_page_size","folder_page_size","GalaxyApp","View","libraryToolbarView","libraryListView","library_router","libraryView","folderToolbarView","folderListView","datasetView","config","ga_code","i","s","o","g","r","a","m","q","push","arguments","l","Date","createElement","getElementsByTagName","async","src","parentNode","insertBefore","document","libraries","preferences","id","$el","unbind","LibraryToolbarView","LibraryListView","show_page","render","FolderToolbarView","FolderListView","parseInt","folder_id","format","$","find","length","info","download","dataset_id","LibraryDatasetView","show_version","show_permissions","ldda_id","library_id","LibraryView","folderView","FolderView","source","showImportModal","start","pushState"],"mappings":"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","file":"../scripts/galaxy.library.js","sourcesContent":["// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM\n// === MAIN GALAXY LIBRARY MODULE ====\n// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM\n\ndefine([\n \"layout/masthead\",\n \"utils/utils\",\n \"libs/toastr\",\n \"mvc/base-mvc\",\n \"mvc/library/library-model\",\n \"mvc/library/library-folderlist-view\",\n \"mvc/library/library-librarylist-view\",\n \"mvc/library/library-librarytoolbar-view\",\n \"mvc/library/library-foldertoolbar-view\",\n \"mvc/library/library-dataset-view\",\n \"mvc/library/library-library-view\",\n \"mvc/library/library-folder-view\"\n ],\n function(mod_masthead,\n mod_utils,\n mod_toastr,\n mod_baseMVC,\n mod_library_model,\n mod_folderlist_view,\n mod_librarylist_view,\n mod_librarytoolbar_view,\n mod_foldertoolbar_view,\n mod_library_dataset_view,\n mod_library_library_view,\n mod_library_folder_view\n ) {\n\n// ============================================================================\n/**\n * The Data Libraries router. Takes care about triggering routes\n * and sends users to proper pieces of the application.\n */\nvar LibraryRouter = Backbone.Router.extend({\n\n initialize: function() {\n this.routesHit = 0;\n // keep count of number of routes handled by the application\n Backbone.history.on( 'route', function() { this.routesHit++; }, this );\n\n this.bind( 'route', this.trackPageview );\n },\n\n routes: {\n \"\" : \"libraries\",\n \"page/:show_page\" : \"libraries_page\",\n \"library/:library_id/permissions\" : \"library_permissions\",\n \"folders/:folder_id/permissions\" : \"folder_permissions\",\n \"folders/:id\" : \"folder_content\",\n \"folders/:id/page/:show_page\" : \"folder_page\",\n \"folders/:folder_id/datasets/:dataset_id\" : \"dataset_detail\",\n \"folders/:folder_id/datasets/:dataset_id/permissions\" : \"dataset_permissions\",\n \"folders/:folder_id/datasets/:dataset_id/versions/:ldda_id\" : \"dataset_version\",\n \"folders/:folder_id/download/:format\" : \"download\",\n \"folders/:folder_id/import/:source\" : \"import_datasets\"\n },\n\n /**\n * If more than one route has been hit the user did not land on current\n * page directly so we can go back safely. Otherwise go to the home page.\n * Use replaceState if available so the navigation doesn't create an\n * extra history entry\n */\n back: function() {\n if( this.routesHit > 1 ) {\n window.history.back();\n } else {\n this.navigate( '#', { trigger:true, replace:true } );\n }\n },\n\n /**\n * Track every route change as a page view in Google Analytics.\n */\n trackPageview: function () {\n var url = Backbone.history.getFragment();\n //prepend slash\n if (!/^\\//.test(url) && url != \"\") {\n url = \"/\" + url;\n }\n if ( typeof ga !== 'undefined' ) {\n ga( 'send', 'pageview', Galaxy.root + 'library/list' + url );\n }\n }\n});\n\n// ============================================================================\n/** session storage for library preferences */\nvar LibraryPrefs = mod_baseMVC.SessionStorageModel.extend({\n defaults : {\n with_deleted : false,\n sort_order : 'asc',\n sort_by : 'name',\n library_page_size : 20,\n folder_page_size : 15\n }\n});\n\n// ============================================================================\n/**\n * Main view of the Galaxy Data Libraries. Stores pointers to other subviews\n * and defines what router should do on the route triggers.\n */\nvar GalaxyLibrary = Backbone.View.extend({\n\n libraryToolbarView: null,\n libraryListView: null,\n library_router: null,\n libraryView: null,\n folderToolbarView: null,\n folderListView: null,\n datasetView: null,\n\n initialize : function(){\n\n // This should go upstream in the js app once available\n if ( window.Galaxy.config.ga_code ){\n (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n ga('create', window.Galaxy.config.ga_code, 'auto');\n ga('send', 'pageview');\n }\n\n Galaxy.libraries = this;\n\n this.preferences = new LibraryPrefs( { id: 'global-lib-prefs' } );\n\n this.library_router = new LibraryRouter();\n\n this.library_router.on( 'route:libraries', function() {\n if ( Galaxy.libraries.libraryToolbarView){\n Galaxy.libraries.libraryToolbarView.$el.unbind('click');\n }\n Galaxy.libraries.libraryToolbarView = new mod_librarytoolbar_view.LibraryToolbarView();\n Galaxy.libraries.libraryListView = new mod_librarylist_view.LibraryListView();\n });\n\n this.library_router.on('route:libraries_page', function( show_page ) {\n if ( Galaxy.libraries.libraryToolbarView === null ){\n Galaxy.libraries.libraryToolbarView = new mod_librarytoolbar_view.LibraryToolbarView();\n Galaxy.libraries.libraryListView = new mod_librarylist_view.LibraryListView( { show_page: show_page } );\n } else {\n Galaxy.libraries.libraryListView.render( { show_page: show_page } );\n }\n });\n\n this.library_router.on( 'route:folder_content', function( id ) {\n if (Galaxy.libraries.folderToolbarView){\n Galaxy.libraries.folderToolbarView.$el.unbind( 'click' );\n }\n Galaxy.libraries.folderToolbarView = new mod_foldertoolbar_view.FolderToolbarView( { id: id } );\n Galaxy.libraries.folderListView = new mod_folderlist_view.FolderListView( { id: id } );\n });\n\n this.library_router.on( 'route:folder_page', function( id, show_page ) {\n if ( Galaxy.libraries.folderToolbarView === null ){\n Galaxy.libraries.folderToolbarView = new mod_foldertoolbar_view.FolderToolbarView( {id: id} );\n Galaxy.libraries.folderListView = new mod_folderlist_view.FolderListView( { id: id, show_page: show_page } );\n } else {\n Galaxy.libraries.folderListView.render( { id: id, show_page: parseInt( show_page ) } );\n }\n });\n\n this.library_router.on( 'route:download', function( folder_id, format ) {\n if ( $( '#folder_list_body' ).find( ':checked' ).length === 0 ) {\n mod_toastr.info( 'You must select at least one dataset to download' );\n Galaxy.libraries.library_router.navigate( 'folders/' + folder_id, { trigger: true, replace: true } );\n } else {\n Galaxy.libraries.folderToolbarView.download( folder_id, format );\n Galaxy.libraries.library_router.navigate( 'folders/' + folder_id, { trigger: false, replace: true } );\n }\n });\n\n this.library_router.on( 'route:dataset_detail', function(folder_id, dataset_id){\n if (Galaxy.libraries.datasetView){\n Galaxy.libraries.datasetView.$el.unbind('click');\n }\n Galaxy.libraries.datasetView = new mod_library_dataset_view.LibraryDatasetView({id: dataset_id, show_version: false, show_permissions: false});\n });\n\n this.library_router.on( 'route:dataset_version', function(folder_id, dataset_id, ldda_id){\n if (Galaxy.libraries.datasetView){\n Galaxy.libraries.datasetView.$el.unbind('click');\n }\n Galaxy.libraries.datasetView = new mod_library_dataset_view.LibraryDatasetView({id: dataset_id, ldda_id: ldda_id, show_version: true});\n });\n\n this.library_router.on( 'route:dataset_permissions', function(folder_id, dataset_id){\n if (Galaxy.libraries.datasetView){\n Galaxy.libraries.datasetView.$el.unbind('click');\n }\n Galaxy.libraries.datasetView = new mod_library_dataset_view.LibraryDatasetView({id: dataset_id, show_permissions: true});\n });\n\n this.library_router.on( 'route:library_permissions', function(library_id){\n if (Galaxy.libraries.libraryView){\n Galaxy.libraries.libraryView.$el.unbind('click');\n }\n Galaxy.libraries.libraryView = new mod_library_library_view.LibraryView({id: library_id, show_permissions: true});\n });\n\n this.library_router.on( 'route:folder_permissions', function(folder_id){\n if (Galaxy.libraries.folderView){\n Galaxy.libraries.folderView.$el.unbind('click');\n }\n Galaxy.libraries.folderView = new mod_library_folder_view.FolderView({id: folder_id, show_permissions: true});\n });\n\n this.library_router.on( 'route:import_datasets', function( folder_id, source ){\n if ( Galaxy.libraries.folderToolbarView && Galaxy.libraries.folderListView ){\n Galaxy.libraries.folderToolbarView.showImportModal( { source:source } );\n } else {\n Galaxy.libraries.folderToolbarView = new mod_foldertoolbar_view.FolderToolbarView( { id: folder_id } );\n Galaxy.libraries.folderListView = new mod_folderlist_view.FolderListView( { id: folder_id } );\n Galaxy.libraries.folderToolbarView.showImportModal( { source: source } );\n }\n });\n\n Backbone.history.start({pushState: false});\n }\n});\n\nreturn {\n GalaxyApp: GalaxyLibrary\n};\n\n});\n"]} \ No newline at end of file diff --git a/static/maps/galaxy.pages.js.map b/static/maps/galaxy.pages.js.map index 8ac6e3af8fd..a3d936fdbc0 100644 --- a/static/maps/galaxy.pages.js.map +++ b/static/maps/galaxy.pages.js.map @@ -1 +1 @@ -{"version":3,"file":"galaxy.pages.js","sources":["../src/galaxy.pages.js"],"names":["init_galaxy_elts","wym","$","_doc","body","each","this","click","range","createRange","selectNodeContents","selection","window","getSelection","removeAllRanges","addRange","get_item_info","dialog_type","item_singular","item_plural","item_controller","CONTROLS","item_class","item_list_action","toLowerCase","ajax_url","list_objects_url","replace","singular","plural","controller","iclass","list_ajax_url","make_item_importable","item_id","item_type","set_accessible_url","ajax","type","url","data","id","accessible","error","alert","ITEM_HISTORY","ITEM_DATASET","ITEM_WORKFLOW","ITEM_PAGE","ITEM_VISUALIZATION","DIALOG_HISTORY_LINK","DIALOG_DATASET_LINK","DIALOG_WORKFLOW_LINK","DIALOG_PAGE_LINK","DIALOG_VISUALIZATION_LINK","DIALOG_EMBED_HISTORY","DIALOG_EMBED_DATASET","DIALOG_EMBED_WORKFLOW","DIALOG_EMBED_PAGE","DIALOG_EMBED_VISUALIZATION","WYMeditor","editor","prototype","dialog","dialogType","set_link_id","text","attribute_input","addClass","removeClass","selected","val","attr","remove","sStamp","uniqueStamp","DIALOG_LINK","_options","hrefSelector","HREF","srcSelector","SRC","titleSelector","TITLE","altSelector","ALT","curURL","curTitle","undefined","show_modal","Make link","sUrl","sId","sName","_exec","CREATE_LINK","link","indexOf","hide_modal","Cancel","DIALOG_IMAGE","_selected_image","dialogImageSelector","Insert","length","INSERT_IMAGE","DIALOG_TABLE","iRows","rowsSelector","iCols","colsSelector","table","createElement","TABLE","newRow","sCaption","captionSelector","newCaption","createCaption","innerHTML","x","insertRow","y","insertCell","summarySelector","node","findUp","container","MAIN_CONTAINERS","get","parentNode","after","append","item_info","success","table_html","make_importable","Array","url_template","get_name_and_link_url","getJSON","returned_item_info","link_text","insert","name","list_html","Embed","item_name","item_elt_id","item_embed_html","join","document","ajaxError","e","message","responseText","statusText","Ignore error","wymeditor","skin","basePath","editor_base_path","iframeBasePath","iframe_base_path","boxHtml","TOOLS","IFRAME","STATUS","toolsItems","title","css","wymeditors","save","callback","save_url","page_id","content","xhtml","annotations","JSON","stringify","Object","_","changed","do_close","onbeforeunload","location","page_list_url","Save Changes","Don't Save","containers_menu","items","containersItems","k","v","tagname","make_popupmenu","insert_link_menu_button","Insert History Link","Insert Dataset Link","Insert Workflow Link","Insert Page Link","Insert Visualization Link","embed_object_button","Embed History","Embed Dataset","Embed Workflow","Embed Visualization"],"mappings":"AA0BA,QAASA,kBAAiBC,GAGtBC,EAAE,cAAeD,EAAIE,KAAKC,MAAMC,KAAM,WAEjCH,EAAEI,MAAMC,MAAO,WAEX,GAAIC,GAAQP,EAAIE,KAAKM,aACrBD,GAAME,mBAAoBJ,KAC1B,IAAIK,GAAYC,OAAOC,cACvBF,GAAUG,kBACVH,EAAUI,SAASP,OAQhC,QAASQ,eAAeC,GAEpB,GACIC,GACAC,EACAC,CACJ,QAAQH,GACJ,IAAMI,UAAsB,aACxBH,EAAgB,UAChBC,EAAc,YACdC,EAAkB,UAClBE,WAAa,SACb,MACJ,KAAMD,UAAsB,aACxBH,EAAgB,UAChBC,EAAc,WACdC,EAAkB,UAClBE,WAAa,2BACb,MACJ,KAAMD,UAAuB,cACzBH,EAAgB,WAChBC,EAAc,YACdC,EAAkB,WAClBE,WAAa,gBACb,MACJ,KAAMD,UAAmB,UACrBH,EAAgB,OAChBC,EAAc,QACdC,EAAkB,OAClBE,WAAa,MACb,MACJ,KAAMD,UAA4B,mBAC9BH,EAAgB,gBAChBC,EAAc,iBACdC,EAAkB,gBAClBE,WAAa,gBAKrB,GAAIC,GAAmB,QAAUJ,EAAYK,cAAgB,iBACzDC,EAAWC,iBAAiBC,QAAS,cAAeJ,EAGxD,QACIK,SAAWV,EACXW,OAASV,EACTW,WAAaV,EACbW,OAAST,WACTU,cAAgBP,GAKxB,QAASQ,sBAAsBb,EAAiBc,EAASC,GAErDV,SAAWW,mBAAmBT,QAAS,kBAAmBP,GAC1DlB,EAAEmC,MACAC,KAAM,OACNC,IAAKd,SACLe,MAAQC,GAAIP,EAASQ,WAAY,QACjCC,MAAO,WAAaC,MAAM,UAAYT,EAAY,yBAzGxD,GAAId,WAGAwB,aAAe,eACfC,aAAe,eACfC,cAAgB,gBAChBC,UAAY,YACZC,mBAAqB,qBAGrBC,oBAAsB,eACtBC,oBAAsB,eACtBC,qBAAuB,gBACvBC,iBAAmB,YACnBC,0BAA4B,qBAG5BC,qBAAuB,gBACvBC,qBAAuB,gBACvBC,sBAAwB,iBACxBC,kBAAoB,aACpBC,2BAA6B,sBAyFjCC,WAAUC,OAAOC,UAAUC,OAAS,SAAUC,GAO1C,QAASC,KAGL/D,EAAE,gBAAgBK,MAAO,WAGrBL,EAAE,yBAAyBgE,KAAK,UAGhC,IAAIC,GAAkBjE,EAAE,YACxBiE,GAAgBC,SAAS,UAAUC,YAAY,YAC3CC,GACAH,EAAgBI,IAAKrE,EAAEoE,GAAUE,KAAK,OAG1CtE,EAAEI,MAAMmE,WApBhB,GAAIxE,GAAMK,KACNoE,EAASzE,EAAI0E,cACbL,EAAWrE,EAAIqE,UAuBnB,IAAKN,GAAcJ,UAAUgB,YAAc,CACpCN,IACCpE,EAAED,EAAI4E,SAASC,cAAcP,IAAIrE,EAAEoE,GAAUE,KAAKZ,UAAUmB,OAC5D7E,EAAED,EAAI4E,SAASG,aAAaT,IAAIrE,EAAEoE,GAAUE,KAAKZ,UAAUqB,MAC3D/E,EAAED,EAAI4E,SAASK,eAAeX,IAAIrE,EAAEoE,GAAUE,KAAKZ,UAAUuB,QAC7DjF,EAAED,EAAI4E,SAASO,aAAab,IAAIrE,EAAEoE,GAAUE,KAAKZ,UAAUyB,MAG/D,IAAIC,GAAQC,CACRjB,KAEAgB,EAASpF,EAAEoE,GAAUE,KAAK,QACZgB,QAAVF,IACAA,EAAS,IACbC,EAAWrF,EAAEoE,GAAUE,KAAK,SACZgB,QAAZD,IACAA,EAAW,KAEnBE,WACI,cACA,iNAAmNH,EAAS,gGACxIC,EAAW,6BAE3FG,YAAa,WAET,GAAIC,GAAOzF,EAAED,EAAI4E,SAASC,cAAcP,OAAS,GAC7CqB,EAAM1F,EAAE,WAAWqE,OAAS,GAC5BsB,EAAQ3F,EAAED,EAAI4E,SAASK,eAAeX,OAAS,EAEnD,IAAIoB,GAAQC,EAAK,CAEb3F,EAAI6F,MAAMlC,UAAUmC,YAAarB,EAGjC,IAAIsB,GAAO9F,EAAE,UAAYwE,EAAS,IAAKzE,EAAIE,KAAKC,KAChD4F,GAAKxB,KAAKZ,UAAUmB,KAAMY,GACrBnB,KAAKZ,UAAUuB,MAAOU,GACtBrB,KAAK,KAAMoB,GAGoB,IAAhCI,EAAK9B,OAAO+B,QAAQ,SACpBD,EAAK9B,KAAK2B,GAGlBK,cAEJC,OAAU,WACND,kBAIRjC,GAKR,GAAKD,GAAcJ,UAAUwC,aAwCzB,MAvCGnG,GAAIoG,kBACHnG,EAAED,EAAI4E,SAASyB,oBAAsB,IAAMrG,EAAI4E,SAASG,aACrDT,IAAIrE,EAAED,EAAIoG,iBAAiB7B,KAAKZ,UAAUqB,MAC7C/E,EAAED,EAAI4E,SAASyB,oBAAsB,IAAMrG,EAAI4E,SAASK,eACrDX,IAAIrE,EAAED,EAAIoG,iBAAiB7B,KAAKZ,UAAUuB,QAC7CjF,EAAED,EAAI4E,SAASyB,oBAAsB,IAAMrG,EAAI4E,SAASO,aACrDb,IAAIrE,EAAED,EAAIoG,iBAAiB7B,KAAKZ,UAAUyB,WAEjDI,YACI,QACA,4TAaIc,OAAU,WACN,GAAIZ,GAAOzF,EAAED,EAAI4E,SAASG,aAAaT,KACpCoB,GAAKa,OAAS,IACfvG,EAAI6F,MAAMlC,UAAU6C,aAAc/B,GAClCxE,EAAE,YAAcwE,EAAS,IAAKzE,EAAIE,KAAKC,MAClCoE,KAAKZ,UAAUqB,IAAKU,GACpBnB,KAAKZ,UAAUuB,MAAOjF,EAAED,EAAI4E,SAASK,eAAeX,OACpDC,KAAKZ,UAAUyB,IAAKnF,EAAED,EAAI4E,SAASO,aAAab,QAEvD2B,cAEJC,OAAU,WACND,eAsEhB,IA9DKlC,GAAcJ,UAAU8C,cACzBjB,WACI,QACA,gcAiBIc,OAAU,WACN,GAAII,GAAQzG,EAAED,EAAI4E,SAAS+B,cAAcrC,MACrCsC,EAAQ3G,EAAED,EAAI4E,SAASiC,cAAcvC,KAEzC,IAAGoC,EAAQ,GAAKE,EAAQ,EAAG,CAEzB,GAAIE,GAAQ9G,EAAIE,KAAK6G,cAAcpD,UAAUqD,OACzCC,EAAS,KAGDC,EAAWjH,EAAED,EAAI4E,SAASuC,iBAAiB7C,MAG3C8C,EAAaN,EAAMO,eAIvB,KAHAD,EAAWE,UAAYJ,EAGnBK,EAAE,EAAGA,EAAEb,EAAOa,IAEV,IADAN,EAASH,EAAMU,UAAUD,GACrBE,EAAE,EAAGA,EAAEb,EAAOa,IAAMR,EAAOS,WAAWD,EAI1DxH,GAAE6G,GAAOvC,KAAK,UACVtE,EAAED,EAAI4E,SAAS+C,iBAAiBrD,MAGpC,IAAIsD,GAAO3H,EAAED,EAAI6H,OAAO7H,EAAI8H,YAC1BnE,UAAUoE,kBAAkBC,IAAI,EAC9BJ,IAASA,EAAKK,WACbhI,EAAE2H,GAAMM,MAAMpB,GADW7G,EAAED,EAAIE,KAAKC,MAAMgI,OAAOrB,GAGxDb,cAEJC,OAAU,WACND,gBAOXlC,GAAc3C,SAAS6B,qBAAuBc,GAAc3C,SAAS8B,qBACrEa,GAAc3C,SAAS+B,sBAAwBY,GAAc3C,SAASgC,kBACtEW,GAAc3C,SAASiC,0BAA4B,CAEpD,GAAI+E,EACJ,QAAOrE,GAEH,IAAK3C,UAA4B,oBAC7BgH,EAAYrH,cAAcK,SAASwB,aACnC,MACJ,KAAKxB,UAA4B,oBAC7BgH,EAAYrH,cAAcK,SAASyB,aACnC,MACJ,KAAKzB,UAA6B,qBAC9BgH,EAAYrH,cAAcK,SAAS0B,cACnC,MACJ,KAAK1B,UAAyB,iBAC1BgH,EAAYrH,cAAcK,SAAS2B,UACnC,MACJ,KAAK3B,UAAkC,0BACnCgH,EAAYrH,cAAcK,SAAS4B,oBAI3C/C,EAAEmC,MAEEE,IAAK8F,EAAUrG,cACfQ,QACAG,MAAO,WAAaC,MAAO,kBAAqByF,EAAUxG,OAAOL,cAAgB,mBACjF8G,QAAS,SAASC,GAEd9C,WACI,kBAAoB4C,EAAUzG,SAC9B2G,EACA,+EACuBF,EAAUxG,OAAOL,cAAgB,0DAGpD+E,OAAU,WAGN,GAAIiC,IAAkB,CACuB,QAAxCtI,EAAE,4BAA4BqE,QAC/BiE,GAAkB,EAGP,IAAIC,MACnBvI,GAAE,0BAA0BG,KAAK,WAC7B,GAAI6B,GAAUhC,EAAEI,MAAMiE,KAGlBiE,IACAvG,qBAAqBoG,EAAUvG,WAAYI,EAASmG,EAAUzG,UAGlE8G,aAAeC,sBAAwBzG,EACvCT,SAAWiH,aAAa/G,QAAS,kBAAmB0G,EAAUvG,YAC9D5B,EAAE0I,QAASnH,SAAU,SAAUoH,GAE3B5I,EAAI6F,MAAMlC,UAAUmC,YAAarB,EACjC,IAAIoE,GAAY5I,EAAE,UAAYwE,EAAS,IAAKzE,EAAIE,KAAKC,MAAM8D,MAI1C,KAAb4E,GAEAA,GAAapE,EAIbzE,EAAI8I,OAAO,YAAcF,EAAmB7C,KAAO,KAAOqC,EAAUzG,SAAW,KAAOiH,EAAmBG,KAAO,SAKhH9I,EAAE,UAAYwE,EAAS,IAAKzE,EAAIE,KAAKC,MAAMoE,KAAKZ,UAAUmB,KAAM8D,EAAmB7C,MAAMxB,KAAKZ,UAAUuB,MAAOkD,EAAUzG,SAAWM,OAKhJgE,cAEJC,OAAU,WAEND,mBAQxB,GAAKlC,GAAc3C,SAASkC,sBAAwBS,GAAc3C,SAASmC,sBAAwBQ,GAAc3C,SAASoC,uBAAyBO,GAAc3C,SAASqC,mBAAqBM,GAAc3C,SAASsC,2BAA6B,CAE/O,GAAI0E,EACJ,QAAOrE,GAEH,IAAK3C,UAA6B,qBAC9BgH,EAAYrH,cAAcK,SAASwB,aACnC,MACJ,KAAKxB,UAA6B,qBAC9BgH,EAAYrH,cAAcK,SAASyB,aACnC,MACJ,KAAKzB,UAA8B,sBAC/BgH,EAAYrH,cAAcK,SAAS0B,cACnC,MACJ,KAAK1B,UAA0B,kBAC3BgH,EAAYrH,cAAcK,SAAS2B,UACnC,MACJ,KAAK3B,UAAmC,2BACpCgH,EAAYrH,cAAcK,SAAS4B,oBAI3C/C,EAAEmC,MAEEE,IAAK8F,EAAUrG,cACfQ,QACAG,MAAO,WAAaC,MAAO,kBAAqByF,EAAUxG,OAAOL,cAAgB,mBACjF8G,QAAS,SAASW,IAGVjF,GAAc3C,SAASkC,sBAAwBS,GAAc3C,SAASoC,uBACnEO,GAAc3C,SAASsC,8BAC1BsF,EAAYA,EAAY,+EACWZ,EAAUxG,OAAOL,cAAgB,0DACxEiE,WACI,SAAW4C,EAAUxG,OACrBoH,GAEIC,MAAS,WAGL,GAAIV,IAAkB,CACsB,OAAvCtI,EAAE,4BAA4BqE,QAC/BiE,GAAkB,GAEtBtI,EAAE,0BAA0BG,KAAK,WAE7B,GAAI6B,GAAUhC,EAAEI,MAAMiE,MAElB4E,EAAYjJ,EAAE,cAAgBgC,EAAU,YAAYgC,MAEpDsE,IACAvG,qBAAqBoG,EAAUvG,WAAYI,EAASmG,EAAUzG,SAKlE,IAAIwH,GAAcf,EAAUtG,OAAS,IAAOG,EACxCmH,GACA,YAAaD,EAAa,0BAClBf,EAAUzG,SAASJ,cAAe,iBACtC,oBACI,mBAAoB6G,EAAUzG,SAAU,KAAMuH,EAAW,IAC7D,OACA,sBACI,sEACAd,EAAUzG,SAASJ,cAAe,0BACtC,OACJ,UAAW8H,KAAM,GAGrBrJ,GAAI8I,OAAOM,KAGfnD,cAEJC,OAAU,WAEND,qBAS5BhG,EAAE,WAEEA,EAAEqJ,UAAUC,UAAW,SAAWC,EAAGjC,GAEjC,GAAIkC,GAAUlC,EAAEmC,cAAgBnC,EAAEoC,YAAc,6BAEhD,OADAnE,YAAY,eAAgBiE,GAAWG,eAAiB3D,cACjD,IAGXhG,EAAE,uBAAuB4J,WACrBC,KAAM,SACNC,SAAUC,iBACVC,eAAgBC,iBAChBC,QAAW,uFAEGxG,UAAUyG,MACV,0FAIAzG,UAAU0G,OACV1G,UAAU2G,OACV,iCAGdC,aACKxB,KAAQ,OAAQyB,MAAS,SAAUC,IAAO,qBAC1C1B,KAAQ,SAAUyB,MAAS,WAAYC,IAAO,uBAC9C1B,KAAQ,cAAeyB,MAAS,cAAeC,IAAO,0BACtD1B,KAAQ,YAAayB,MAAS,YAAaC,IAAO,wBAClD1B,KAAQ,oBAAqByB,MAAS,eAAgBC,IAAO,2BAC7D1B,KAAQ,sBAAuByB,MAAS,iBAAkBC,IAAO,6BACjE1B,KAAQ,SAAUyB,MAAS,SAAUC,IAAO,qBAC5C1B,KAAQ,UAAWyB,MAAS,UAAWC,IAAO,sBAC9C1B,KAAQ,OAAQyB,MAAS,OAAQC,IAAO,mBACxC1B,KAAQ,OAAQyB,MAAS,OAAQC,IAAO,mBACxC1B,KAAQ,aAAcyB,MAAS,OAAQC,IAAO,mBAC9C1B,KAAQ,SAAUyB,MAAS,SAAUC,IAAO,qBAC5C1B,KAAQ,cAAeyB,MAAS,QAASC,IAAO,oBAChD1B,KAAQ,cAAeyB,MAAS,QAASC,IAAO,qBAIzD,IAAI7G,GAAS3D,EAAEyK,WAAW,GACtBC,EAAO,SAAWC,GAClBpF,WAAY,cAAe,YAG3BvF,EAAEmC,MACEE,IAAKuI,SACLxI,KAAM,OACNE,MACIC,GAAIsI,QACJC,QAASnH,EAAOoH,QAChBC,YAAaC,KAAKC,UAAU,GAAIC,SAEhCC,EAAK,QAEThD,QAAS,WACLuC,OAKZ3K,GAAE,gBAAgBK,MAAO,WACrBqK,EAAM,WAAa1E,iBAGvBhG,EAAE,iBAAiBK,MAAM,WAGrB,GAAIgL,IAAU,CACd,IAAKA,EAAU,CACX,GAAIC,GAAW,WACX5K,OAAO6K,eAAiBjG,OACxB5E,OAAO2I,SAASmC,SAAWC,cAE/BlG,YAAY,eACA,8DAEIU,OAAWD,WACX0F,eAAiB,WACbhB,EAAMY,MAGVK,aAAcL,QAG9B5K,QAAO2I,SAASmC,SAAWC,eAUnC,IAAIG,GAAkB5L,EAAE,kIACxBA,GAAE,iBAAiBkI,OAAQ0D,EAG3B,IAAIC,KACJ7L,GAAEG,KAAMwD,EAAOgB,SAASmH,gBAAiB,SAAUC,EAAGC,GAClD,GAAIC,GAAUD,EAAElD,IAChB+C,GAAOG,EAAEzB,MAAM9I,QAAS,IAAK,MAAU,WAAakC,EAAOkE,UAAWoE,MAE1EC,eAAgBN,EAAiBC,EAOjC,IAAIM,GAA0BnM,EAAE,+GAA+GkE,SAAS,4BACxJlE,GAAE,iBAAiBkI,OAAOiE,GAG1BD,eAAgBC,GACZC,sBAAuB,WACnBzI,EAAOE,OAAO1C,SAAS6B,sBAE3BqJ,sBAAuB,WACnB1I,EAAOE,OAAO1C,SAAS8B,sBAE3BqJ,uBAAwB,WACpB3I,EAAOE,OAAO1C,SAAS+B,uBAE3BqJ,mBAAoB,WAChB5I,EAAOE,OAAO1C,SAASgC,mBAE3BqJ,4BAA6B,WACzB7I,EAAOE,OAAO1C,SAASiC,6BAS/B,IAAIqJ,GAAsBzM,EAAE,uGAAuGkE,SAAS,4BAC5IlE,GAAE,iBAAiBkI,OAAOuE,GAG1BP,eAAgBO,GACZC,gBAAiB,WACb/I,EAAOE,OAAO1C,SAASkC,uBAE3BsJ,gBAAiB,WACbhJ,EAAOE,OAAO1C,SAASmC,uBAE3BsJ,iBAAkB,WACdjJ,EAAOE,OAAO1C,SAASoC,wBAE3BsJ,sBAAuB,WACnBlJ,EAAOE,OAAO1C,SAASsC"} \ No newline at end of file +{"version":3,"sources":["galaxy.pages.js"],"names":["init_galaxy_elts","wym","$","_doc","body","each","this","click","range","createRange","selectNodeContents","selection","window","getSelection","removeAllRanges","addRange","get_item_info","dialog_type","item_singular","item_plural","item_controller","CONTROLS","item_class","item_list_action","toLowerCase","ajax_url","list_objects_url","replace","singular","plural","controller","iclass","list_ajax_url","make_item_importable","item_id","item_type","set_accessible_url","ajax","type","url","data","id","accessible","error","alert","ITEM_HISTORY","ITEM_DATASET","ITEM_WORKFLOW","ITEM_PAGE","ITEM_VISUALIZATION","DIALOG_HISTORY_LINK","DIALOG_DATASET_LINK","DIALOG_WORKFLOW_LINK","DIALOG_PAGE_LINK","DIALOG_VISUALIZATION_LINK","DIALOG_EMBED_HISTORY","DIALOG_EMBED_DATASET","DIALOG_EMBED_WORKFLOW","DIALOG_EMBED_PAGE","DIALOG_EMBED_VISUALIZATION","WYMeditor","editor","prototype","dialog","dialogType","dialogFeatures","bodyHtml","set_link_id","text","attribute_input","addClass","removeClass","selected","val","attr","remove","sStamp","uniqueStamp","DIALOG_LINK","_options","hrefSelector","HREF","srcSelector","SRC","titleSelector","TITLE","altSelector","ALT","curURL","curTitle","undefined","show_modal","Make link","sUrl","sId","sName","_exec","CREATE_LINK","link","indexOf","hide_modal","Cancel","DIALOG_IMAGE","_selected_image","dialogImageSelector","Insert","length","INSERT_IMAGE","DIALOG_TABLE","iRows","rowsSelector","iCols","colsSelector","table","createElement","TABLE","newRow","sCaption","captionSelector","newCaption","createCaption","innerHTML","x","insertRow","y","insertCell","summarySelector","node","findUp","container","MAIN_CONTAINERS","get","parentNode","after","append","item_info","success","table_html","make_importable","Array","url_template","get_name_and_link_url","getJSON","returned_item_info","link_text","insert","name","list_html","Embed","item_name","item_elt_id","item_embed_html","join","document","ajaxError","e","message","responseText","statusText","Ignore error","wymeditor","skin","basePath","editor_base_path","iframeBasePath","iframe_base_path","boxHtml","TOOLS","IFRAME","STATUS","toolsItems","title","css","wymeditors","save","callback","save_url","page_id","content","xhtml","annotations","JSON","stringify","Object","_","location","page_list_url","containers_menu","items","containersItems","k","v","tagname","make_popupmenu","insert_link_menu_button","Insert History Link","Insert Dataset Link","Insert Workflow Link","Insert Page Link","Insert Visualization Link","embed_object_button","Embed History","Embed Dataset","Embed Workflow","Embed Visualization"],"mappings":"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","file":"../scripts/galaxy.pages.js","sourcesContent":["\nvar CONTROLS =\n{\n // Item types.\n ITEM_HISTORY : \"item_history\",\n ITEM_DATASET : \"item_dataset\",\n ITEM_WORKFLOW : \"item_workflow\",\n ITEM_PAGE : \"item_page\",\n ITEM_VISUALIZATION : \"item_visualization\",\n\n // Link dialogs.\n DIALOG_HISTORY_LINK : \"link_history\",\n DIALOG_DATASET_LINK : \"link_dataset\",\n DIALOG_WORKFLOW_LINK : \"link_workflow\",\n DIALOG_PAGE_LINK : \"link_page\",\n DIALOG_VISUALIZATION_LINK : \"link_visualization\",\n\n // Embed dialogs.\n DIALOG_EMBED_HISTORY : \"embed_history\",\n DIALOG_EMBED_DATASET : \"embed_dataset\",\n DIALOG_EMBED_WORKFLOW : \"embed_workflow\",\n DIALOG_EMBED_PAGE : \"embed_page\",\n DIALOG_EMBED_VISUALIZATION : \"embed_visualization\"\n};\n\n// Initialize Galaxy elements.\nfunction init_galaxy_elts(wym)\n{\n // Set up events to make annotation easy.\n $('.annotation', wym._doc.body).each( function()\n {\n $(this).click( function() {\n // Works in Safari, not in Firefox.\n var range = wym._doc.createRange();\n range.selectNodeContents( this );\n var selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n var t = \"\";\n });\n });\n\n};\n\n// Based on the dialog type, return a dictionary of information about an item\nfunction get_item_info( dialog_type )\n{\n var\n item_singular,\n item_plural,\n item_controller;\n switch( dialog_type ) {\n case( CONTROLS.ITEM_HISTORY ):\n item_singular = \"History\";\n item_plural = \"Histories\";\n item_controller = \"history\";\n item_class = \"History\";\n break;\n case( CONTROLS.ITEM_DATASET ):\n item_singular = \"Dataset\";\n item_plural = \"Datasets\";\n item_controller = \"dataset\";\n item_class = \"HistoryDatasetAssociation\";\n break;\n case( CONTROLS.ITEM_WORKFLOW ):\n item_singular = \"Workflow\";\n item_plural = \"Workflows\";\n item_controller = \"workflow\";\n item_class = \"StoredWorkflow\";\n break;\n case( CONTROLS.ITEM_PAGE ):\n item_singular = \"Page\";\n item_plural = \"Pages\";\n item_controller = \"page\";\n item_class = \"Page\";\n break;\n case( CONTROLS.ITEM_VISUALIZATION ):\n item_singular = \"Visualization\";\n item_plural = \"Visualizations\";\n item_controller = \"visualization\";\n item_class = \"Visualization\";\n break;\n }\n\n // Build ajax URL that lists items for selection.\n var item_list_action = \"list_\" + item_plural.toLowerCase() + \"_for_selection\";\n var ajax_url = list_objects_url.replace( \"LIST_ACTION\", item_list_action );\n\n // Set up and return dict.\n return {\n singular : item_singular,\n plural : item_plural,\n controller : item_controller,\n iclass : item_class,\n list_ajax_url : ajax_url\n };\n};\n\n// Make an item importable.\nfunction make_item_importable( item_controller, item_id, item_type )\n{\n ajax_url = set_accessible_url.replace( \"ITEM_CONTROLLER\", item_controller );\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: { id: item_id, accessible: 'True' },\n error: function() { alert(\"Making \" + item_type + \" accessible failed\"); }\n });\n};\n\n// Completely replace WYM's dialog handling\nWYMeditor.editor.prototype.dialog = function( dialogType, dialogFeatures, bodyHtml ) {\n\n var wym = this;\n var sStamp = wym.uniqueStamp();\n var selected = wym.selected();\n\n // Swap out URL attribute for id/name attribute in link creation to enable anchor creation in page.\n function set_link_id()\n {\n // When \"set link id\" link clicked, update UI.\n $('#set_link_id').click( function()\n {\n // Set label.\n $(\"#link_attribute_label\").text(\"ID/Name\");\n\n // Set input elt class, value.\n var attribute_input = $(\".wym_href\");\n attribute_input.addClass(\"wym_id\").removeClass(\"wym_href\");\n if (selected)\n attribute_input.val( $(selected).attr('id') );\n\n // Remove link.\n $(this).remove();\n });\n }\n\n // LINK DIALOG\n if ( dialogType == WYMeditor.DIALOG_LINK ) {\n if(selected) {\n $(wym._options.hrefSelector).val($(selected).attr(WYMeditor.HREF));\n $(wym._options.srcSelector).val($(selected).attr(WYMeditor.SRC));\n $(wym._options.titleSelector).val($(selected).attr(WYMeditor.TITLE));\n $(wym._options.altSelector).val($(selected).attr(WYMeditor.ALT));\n }\n // Get current URL, title.\n var curURL, curTitle;\n if (selected)\n {\n curURL = $(selected).attr(\"href\");\n if (curURL == undefined)\n curURL = \"\";\n curTitle = $(selected).attr(\"title\");\n if (curTitle == undefined)\n curTitle = \"\";\n }\n show_modal(\n \"Create Link\",\n \"

\"\n + \"

\",\n {\n \"Make link\": function() {\n // Get URL, name/title.\n var sUrl = $(wym._options.hrefSelector).val() || '',\n sId = $(\".wym_id\").val() || '',\n sName = $(wym._options.titleSelector).val() || '';\n\n if (sUrl || sId) {\n // Create link.\n wym._exec(WYMeditor.CREATE_LINK, sStamp);\n\n // Set link attributes.\n var link = $(\"a[href=\" + sStamp + \"]\", wym._doc.body);\n link.attr(WYMeditor.HREF, sUrl)\n .attr(WYMeditor.TITLE, sName)\n .attr(\"id\", sId);\n\n // If link's text is default (wym-...), change it to the title.\n if (link.text().indexOf('wym-') === 0) {\n link.text(sName);\n }\n }\n hide_modal();\n },\n \"Cancel\": function() {\n hide_modal();\n }\n },\n {},\n set_link_id\n );\n }\n\n // IMAGE DIALOG\n if ( dialogType == WYMeditor.DIALOG_IMAGE ) {\n if(wym._selected_image) {\n $(wym._options.dialogImageSelector + \" \" + wym._options.srcSelector)\n .val($(wym._selected_image).attr(WYMeditor.SRC));\n $(wym._options.dialogImageSelector + \" \" + wym._options.titleSelector)\n .val($(wym._selected_image).attr(WYMeditor.TITLE));\n $(wym._options.dialogImageSelector + \" \" + wym._options.altSelector)\n .val($(wym._selected_image).attr(WYMeditor.ALT));\n }\n show_modal(\n \"Image\",\n \"
\"\n + \"
\"\n + \"\"\n + \"
\"\n + \"
\"\n + \"
\"\n + \"\"\n + \"
\"\n + \"
\"\n + \"
\"\n + \"\"\n + \"
\",\n {\n \"Insert\": function() {\n var sUrl = $(wym._options.srcSelector).val();\n if(sUrl.length > 0) {\n wym._exec(WYMeditor.INSERT_IMAGE, sStamp);\n $(\"img[src$=\" + sStamp + \"]\", wym._doc.body)\n .attr(WYMeditor.SRC, sUrl)\n .attr(WYMeditor.TITLE, $(wym._options.titleSelector).val())\n .attr(WYMeditor.ALT, $(wym._options.altSelector).val());\n }\n hide_modal();\n },\n \"Cancel\": function() {\n hide_modal();\n }\n }\n );\n return;\n }\n\n // TABLE DIALOG\n if ( dialogType == WYMeditor.DIALOG_TABLE ) {\n show_modal(\n \"Table\",\n \"
\"\n + \"
\"\n + \"\"\n + \"
\"\n + \"
\"\n + \"
\"\n + \"\"\n + \"
\"\n + \"
\"\n + \"\"\n + \"\"\n + \"
\"\n + \"
\"\n + \"\"\n + \"\"\n + \"
\",\n {\n \"Insert\": function() {\n var iRows = $(wym._options.rowsSelector).val();\n var iCols = $(wym._options.colsSelector).val();\n\n if(iRows > 0 && iCols > 0) {\n\n var table = wym._doc.createElement(WYMeditor.TABLE);\n var newRow = null;\n var newCol = null;\n\n var sCaption = $(wym._options.captionSelector).val();\n\n //we create the caption\n var newCaption = table.createCaption();\n newCaption.innerHTML = sCaption;\n\n //we create the rows and cells\n for(x=0; x\" +\n \"Make the selected \" + item_info.plural.toLowerCase() + \" accessible so that they can viewed by everyone.
\"\n ,\n {\n \"Insert\": function()\n {\n // Make selected items accessible (importable) ?\n var make_importable = false;\n if ( $('#make-importable:checked').val() !== null )\n make_importable = true;\n\n // Insert links to history for each checked item.\n var item_ids = new Array();\n $('input[name=id]:checked').each(function() {\n var item_id = $(this).val();\n\n // Make item importable?\n if (make_importable)\n make_item_importable(item_info.controller, item_id, item_info.singular);\n\n // Insert link(s) to item(s). This is done by getting item info and then manipulating wym.\n url_template = get_name_and_link_url + item_id;\n ajax_url = url_template.replace( \"ITEM_CONTROLLER\", item_info.controller);\n $.getJSON( ajax_url, function( returned_item_info ) {\n // Get link text.\n wym._exec(WYMeditor.CREATE_LINK, sStamp);\n var link_text = $(\"a[href=\" + sStamp + \"]\", wym._doc.body).text();\n\n // Insert link: need to do different actions depending on link text.\n if (\n link_text == \"\" // Firefox.\n ||\n link_text == sStamp // Safari\n )\n {\n // User selected no text; create link from scratch and use default text.\n wym.insert(\"\" + item_info.singular + \" '\" + returned_item_info.name + \"'\");\n }\n else\n {\n // Link created from selected text; add href and title.\n $(\"a[href=\" + sStamp + \"]\", wym._doc.body).attr(WYMeditor.HREF, returned_item_info.link).attr(WYMeditor.TITLE, item_info.singular + item_id);\n }\n });\n });\n\n hide_modal();\n },\n \"Cancel\": function()\n {\n hide_modal();\n }\n }\n );\n }\n });\n }\n // EMBED GALAXY OBJECT DIALOGS\n if ( dialogType == CONTROLS.DIALOG_EMBED_HISTORY || dialogType == CONTROLS.DIALOG_EMBED_DATASET || dialogType == CONTROLS.DIALOG_EMBED_WORKFLOW || dialogType == CONTROLS.DIALOG_EMBED_PAGE || dialogType == CONTROLS.DIALOG_EMBED_VISUALIZATION ) {\n // Based on item type, set useful vars.\n var item_info;\n switch(dialogType)\n {\n case(CONTROLS.DIALOG_EMBED_HISTORY):\n item_info = get_item_info(CONTROLS.ITEM_HISTORY);\n break;\n case(CONTROLS.DIALOG_EMBED_DATASET):\n item_info = get_item_info(CONTROLS.ITEM_DATASET);\n break;\n case(CONTROLS.DIALOG_EMBED_WORKFLOW):\n item_info = get_item_info(CONTROLS.ITEM_WORKFLOW);\n break;\n case(CONTROLS.DIALOG_EMBED_PAGE):\n item_info = get_item_info(CONTROLS.ITEM_PAGE);\n break;\n case(CONTROLS.DIALOG_EMBED_VISUALIZATION):\n item_info = get_item_info(CONTROLS.ITEM_VISUALIZATION);\n break;\n }\n\n $.ajax(\n {\n url: item_info.list_ajax_url,\n data: {},\n error: function() { alert( \"Failed to list \" + item_info.plural.toLowerCase() + \" for selection\"); },\n success: function(list_html)\n {\n // Can make histories, workflows importable; cannot make datasets importable.\n if (dialogType == CONTROLS.DIALOG_EMBED_HISTORY || dialogType == CONTROLS.DIALOG_EMBED_WORKFLOW\n || dialogType == CONTROLS.DIALOG_EMBED_VISUALIZATION)\n list_html = list_html + \"
\" +\n \"Make the selected \" + item_info.plural.toLowerCase() + \" accessible so that they can viewed by everyone.
\";\n show_modal(\n \"Embed \" + item_info.plural,\n list_html,\n {\n \"Embed\": function()\n {\n // Make selected items accessible (importable) ?\n var make_importable = false;\n if ( $('#make-importable:checked').val() != null )\n make_importable = true;\n\n $('input[name=id]:checked').each(function() {\n // Get item ID and name.\n var item_id = $(this).val();\n // Use ':first' because there are many labels in table; the first one is the item name.\n var item_name = $(\"label[for='\" + item_id + \"']:first\").text();\n\n if (make_importable)\n make_item_importable(item_info.controller, item_id, item_info.singular);\n\n // Embedded item HTML; item class is embedded in div container classes; this is necessary because the editor strips\n // all non-standard attributes when it returns its content (e.g. it will not return an element attribute of the form\n // item_class='History').\n var item_elt_id = item_info.iclass + \"-\" + item_id;\n var item_embed_html = [\n \"
\",\n \"

\",\n \"Embedded Galaxy \", item_info.singular, \" '\", item_name, \"'\",\n \"

\",\n \"

\",\n \"[Do not edit this block; Galaxy will fill it in with the annotated \",\n item_info.singular.toLowerCase(), \" when it is displayed.]\",\n \"

\",\n \"
\" ].join( '' );\n\n // Insert embedded item into document.\n wym.insert(item_embed_html);\n\n });\n hide_modal();\n },\n \"Cancel\": function()\n {\n hide_modal();\n }\n }\n );\n }\n });\n }\n};\n\n$(function(){\n // Generic error handling\n $(document).ajaxError( function ( e, x ) {\n // console.log( e, x );\n var message = x.responseText || x.statusText || \"Could not connect to server\";\n show_modal( \"Server error\", message, { \"Ignore error\" : hide_modal } );\n return false;\n });\n // Create editor\n $(\"[name=page_content]\").wymeditor( {\n skin: 'galaxy',\n basePath: editor_base_path,\n iframeBasePath: iframe_base_path,\n boxHtml: \"\"\n + \"\"\n + \"
\"\n + WYMeditor.TOOLS\n + \"
\"\n + \"
\"\n // + WYMeditor.HTML\n + WYMeditor.IFRAME\n + WYMeditor.STATUS\n + \"
\"\n + \"\"\n + \"
\",\n toolsItems: [\n {'name': 'Bold', 'title': 'Strong', 'css': 'wym_tools_strong'},\n {'name': 'Italic', 'title': 'Emphasis', 'css': 'wym_tools_emphasis'},\n {'name': 'Superscript', 'title': 'Superscript', 'css': 'wym_tools_superscript'},\n {'name': 'Subscript', 'title': 'Subscript', 'css': 'wym_tools_subscript'},\n {'name': 'InsertOrderedList', 'title': 'Ordered_List', 'css': 'wym_tools_ordered_list'},\n {'name': 'InsertUnorderedList', 'title': 'Unordered_List', 'css': 'wym_tools_unordered_list'},\n {'name': 'Indent', 'title': 'Indent', 'css': 'wym_tools_indent'},\n {'name': 'Outdent', 'title': 'Outdent', 'css': 'wym_tools_outdent'},\n {'name': 'Undo', 'title': 'Undo', 'css': 'wym_tools_undo'},\n {'name': 'Redo', 'title': 'Redo', 'css': 'wym_tools_redo'},\n {'name': 'CreateLink', 'title': 'Link', 'css': 'wym_tools_link'},\n {'name': 'Unlink', 'title': 'Unlink', 'css': 'wym_tools_unlink'},\n {'name': 'InsertImage', 'title': 'Image', 'css': 'wym_tools_image'},\n {'name': 'InsertTable', 'title': 'Table', 'css': 'wym_tools_table'},\n ]\n });\n // Get the editor object\n var editor = $.wymeditors(0);\n var save = function ( callback ) {\n show_modal( \"Saving page\", \"progress\" );\n\n // Do save.\n $.ajax( {\n url: save_url,\n type: \"POST\",\n data: {\n id: page_id,\n content: editor.xhtml(),\n annotations: JSON.stringify(new Object()),\n // annotations: JSON.stringify(annotations),\n \"_\": \"true\"\n },\n success: function() {\n callback();\n }\n });\n }\n // Save button\n $(\"#save-button\").click( function() {\n save( function() { hide_modal(); } )\n });\n // Close button\n $(\"#close-button\").click(function() {\n // var new_content = editor.xhtml();\n // var changed = ( initial_content != new_content );\n var changed = false;\n if ( changed ) {\n var do_close = function() {\n window.onbeforeunload = undefined;\n window.document.location = page_list_url;\n };\n show_modal( \"Close editor\",\n \"There are unsaved changes to your page which will be lost.\",\n {\n \"Cancel\" : hide_modal,\n \"Save Changes\" : function() {\n save( do_close );\n }\n }, {\n \"Don't Save\": do_close\n } );\n } else {\n window.document.location = page_list_url;\n }\n });\n\n // Initialize galaxy elements.\n //init_galaxy_elts(editor);\n\n //\n // Containers, Galaxy style\n //\n var containers_menu = $(\"
Paragraph type
\");\n $(\".wym_area_top\").append( containers_menu );\n\n // Add menu options.\n var items = {}\n $.each( editor._options.containersItems, function( k, v ) {\n var tagname = v.name;\n items[ v.title.replace( '_', ' ' ) ] = function() { editor.container( tagname ) }\n });\n make_popupmenu( containers_menu, items);\n\n //\n // Create 'Insert Link to Galaxy Object' menu.\n //\n\n // Add menu button.\n var insert_link_menu_button = $(\"
Insert Link to Galaxy Object
\").addClass('galaxy-page-editor-button');\n $(\".wym_area_top\").append(insert_link_menu_button);\n\n // Add menu options.\n make_popupmenu( insert_link_menu_button, {\n \"Insert History Link\": function() {\n editor.dialog(CONTROLS.DIALOG_HISTORY_LINK);\n },\n \"Insert Dataset Link\": function() {\n editor.dialog(CONTROLS.DIALOG_DATASET_LINK);\n },\n \"Insert Workflow Link\": function() {\n editor.dialog(CONTROLS.DIALOG_WORKFLOW_LINK);\n },\n \"Insert Page Link\": function() {\n editor.dialog(CONTROLS.DIALOG_PAGE_LINK);\n },\n \"Insert Visualization Link\": function() {\n editor.dialog(CONTROLS.DIALOG_VISUALIZATION_LINK);\n },\n });\n\n //\n // Create 'Embed Galaxy Object' menu.\n //\n\n // Add menu button.\n var embed_object_button = $(\"
Embed Galaxy Object
\").addClass('galaxy-page-editor-button');\n $(\".wym_area_top\").append(embed_object_button);\n\n // Add menu options.\n make_popupmenu( embed_object_button, {\n \"Embed History\": function() {\n editor.dialog(CONTROLS.DIALOG_EMBED_HISTORY);\n },\n \"Embed Dataset\": function() {\n editor.dialog(CONTROLS.DIALOG_EMBED_DATASET);\n },\n \"Embed Workflow\": function() {\n editor.dialog(CONTROLS.DIALOG_EMBED_WORKFLOW);\n },\n \"Embed Visualization\": function() {\n editor.dialog(CONTROLS.DIALOG_EMBED_VISUALIZATION);\n },\n //\"Embed Page\": function() {\n // editor.dialog(CONTROLS.DIALOG_EMBED_PAGE);\n //}\n });\n});\n"]} \ No newline at end of file diff --git a/static/maps/i18n.js.map b/static/maps/i18n.js.map index ca459515ada..9c39193bfc4 100644 --- a/static/maps/i18n.js.map +++ b/static/maps/i18n.js.map @@ -1 +1 @@ -{"version":3,"file":"i18n.js","sources":["../src/i18n.js"],"names":["addPart","locale","master","needed","toLoad","prefix","suffix","push","addIfExists","req","fullName","require","_fileExists","toUrl","mixin","target","source","force","prop","hasOwnProperty","nlsRegExp","define","module","masterConfig","config","version","load","name","onLoad","masterName","i","part","match","exec","parts","split","value","current","navigator","language","userLanguage","toLowerCase","isBuild","length","partBundle"],"mappings":"CAoCC,WACG,YAaA,SAASA,GAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,GACjDJ,EAAOD,KACPE,EAAOI,KAAKN,IACRC,EAAOD,MAAY,GAA2B,IAAnBC,EAAOD,KAClCG,EAAOG,KAAKF,EAASJ,EAAS,IAAMK,IAKhD,QAASE,GAAYC,EAAKR,EAAQG,EAAQC,EAAQC,GAC9C,GAAII,GAAWL,EAASJ,EAAS,IAAMK,CACnCK,SAAQC,YAAYH,EAAII,MAAMH,EAAW,SACzCN,EAAOG,KAAKG,GAWpB,QAASI,GAAMC,EAAQC,EAAQC,GAC3B,GAAIC,EACJ,KAAKA,IAAQF,IACLA,EAAOG,eAAeD,IAAWH,EAAOI,eAAeD,KAASD,EAEjC,gBAAjBD,GAAOE,MAChBH,EAAOG,IAASF,EAAOE,KACxBH,EAAOG,OAEXJ,EAAMC,EAAOG,GAAOF,EAAOE,GAAOD,IALlCF,EAAOG,GAAQF,EAAOE,GAhClC,GAAIE,GAAY,yCA0ChBC,SAAQ,UAAW,SAAUC,GACzB,GAAIC,GAAeD,EAAOE,OAASF,EAAOE,WAE1C,QACIC,QAAS,QAITC,KAAM,SAAUC,EAAMlB,EAAKmB,EAAQJ,GAC/BA,EAASA,MAELA,EAAOvB,SACPsB,EAAatB,OAASuB,EAAOvB,OAGjC,IAAI4B,GAQAC,EAAGC,EAPHC,EAAQZ,EAAUa,KAAKN,GACvBtB,EAAS2B,EAAM,GACf/B,EAAS+B,EAAM,GACf1B,EAAS0B,EAAM,GACfE,EAAQjC,EAAOkC,MAAM,KACrB/B,KACAgC,KACSC,EAAU,EAuBvB,IAlBIL,EAAM,IAEN3B,EAAS2B,EAAM,GACfH,EAAaxB,EAASC,IAGtBuB,EAAaF,EACbrB,EAAS0B,EAAM,GACf/B,EAASsB,EAAatB,OACjBA,IACDA,EAASsB,EAAatB,OACG,mBAAdqC,WAA4B,QAClCA,UAAUC,UACVD,UAAUE,cAAgB,QAAQC,eAE3CP,EAAQjC,EAAOkC,MAAM,MAGrBX,EAAOkB,QAAS,CAKhB,IAFAtC,EAAOG,KAAKsB,GACZrB,EAAYC,EAAK,OAAQL,EAAQC,EAAQC,GACpCwB,EAAI,EAAGA,EAAII,EAAMS,OAAQb,IAC1BC,EAAOG,EAAMJ,GACbO,IAAYA,EAAU,IAAM,IAAMN,EAClCvB,EAAYC,EAAK4B,EAASjC,EAAQC,EAAQC,EAG9CG,GAAIL,EAAQ,WACRwB,UAIJnB,IAAKoB,GAAa,SAAU3B,GAExB,GACI6B,GADA5B,IAKJ,KADAH,EAAQ,OAAQE,EAAQC,EAAQC,EAAQC,EAAQC,GAC3CwB,EAAI,EAAGA,EAAII,EAAMS,OAAQb,IAC1BC,EAAOG,EAAMJ,GACbO,IAAYA,EAAU,IAAM,IAAMN,EAClC/B,EAAQqC,EAASnC,EAAQC,EAAQC,EAAQC,EAAQC,EAIrDG,GAAIL,EAAQ,WACR,GAAI0B,GAAGc,EAAYb,CACnB,KAAKD,EAAI3B,EAAOwC,OAAS,EAAGb,EAAI,IAAM3B,EAAO2B,GAAIA,IAC7CC,EAAO5B,EAAO2B,GACdc,EAAa1C,EAAO6B,IAChBa,KAAe,GAAuB,IAAfA,KACvBA,EAAanC,EAAIJ,EAAS0B,EAAO,IAAMzB,IAE3CQ,EAAMsB,EAAOQ,EAIjBhB,GAAOQ"} \ No newline at end of file +{"version":3,"sources":["i18n.js"],"names":["addPart","locale","master","needed","toLoad","prefix","suffix","push","addIfExists","req","fullName","require","_fileExists","toUrl","mixin","target","source","force","prop","hasOwnProperty","nlsRegExp","define","module","masterConfig","config","version","load","name","onLoad","masterName","i","part","match","exec","parts","split","value","current","navigator","language","userLanguage","toLowerCase","isBuild","length","partBundle"],"mappings":"CAoCC,WACG,YAaA,SAASA,GAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,GACjDJ,EAAOD,KACPE,EAAOI,KAAKN,IACW,IAAnBC,EAAOD,IAAuC,IAAnBC,EAAOD,IAClCG,EAAOG,KAAKF,EAASJ,EAAS,IAAMK,IAKhD,QAASE,GAAYC,EAAKR,EAAQG,EAAQC,EAAQC,GAC9C,GAAII,GAAWL,EAASJ,EAAS,IAAMK,CACnCK,SAAQC,YAAYH,EAAII,MAAMH,EAAW,SACzCN,EAAOG,KAAKG,GAWpB,QAASI,GAAMC,EAAQC,EAAQC,GAC3B,GAAIC,EACJ,KAAKA,IAAQF,IACLA,EAAOG,eAAeD,IAAWH,EAAOI,eAAeD,KAASD,EAEjC,gBAAjBD,GAAOE,MAChBH,EAAOG,IAASF,EAAOE,KACxBH,EAAOG,OAEXJ,EAAMC,EAAOG,GAAOF,EAAOE,GAAOD,IALlCF,EAAOG,GAAQF,EAAOE,GAhClC,GAAIE,GAAY,yCA0ChBC,SAAQ,UAAW,SAAUC,GACzB,GAAIC,GAAeD,EAAOE,OAASF,EAAOE,WAE1C,QACIC,QAAS,QAITC,KAAM,SAAUC,EAAMlB,EAAKmB,EAAQJ,GAC/BA,EAASA,MAELA,EAAOvB,SACPsB,EAAatB,OAASuB,EAAOvB,OAGjC,IAAI4B,GAQAC,EAAGC,EAPHC,EAAQZ,EAAUa,KAAKN,GACvBtB,EAAS2B,EAAM,GACf/B,EAAS+B,EAAM,GACf1B,EAAS0B,EAAM,GACfE,EAAQjC,EAAOkC,MAAM,KACrB/B,KACAgC,KACSC,EAAU,EAuBvB,IAlBIL,EAAM,IAEN3B,EAAS2B,EAAM,GACfH,EAAaxB,EAASC,IAGtBuB,EAAaF,EACbrB,EAAS0B,EAAM,GACf/B,EAASsB,EAAatB,OACjBA,IACDA,EAASsB,EAAatB,OACG,mBAAdqC,WAA4B,QAClCA,UAAUC,UACVD,UAAUE,cAAgB,QAAQC,eAE3CP,EAAQjC,EAAOkC,MAAM,MAGrBX,EAAOkB,QAAS,CAKhB,IAFAtC,EAAOG,KAAKsB,GACZrB,EAAYC,EAAK,OAAQL,EAAQC,EAAQC,GACpCwB,EAAI,EAAGA,EAAII,EAAMS,OAAQb,IAC1BC,EAAOG,EAAMJ,GACbO,IAAYA,EAAU,IAAM,IAAMN,EAClCvB,EAAYC,EAAK4B,EAASjC,EAAQC,EAAQC,EAG9CG,GAAIL,EAAQ,WACRwB,UAIJnB,IAAKoB,GAAa,SAAU3B,GAExB,GACI6B,GADA5B,IAKJ,KADAH,EAAQ,OAAQE,EAAQC,EAAQC,EAAQC,EAAQC,GAC3CwB,EAAI,EAAGA,EAAII,EAAMS,OAAQb,IAC1BC,EAAOG,EAAMJ,GACbO,IAAYA,EAAU,IAAM,IAAMN,EAClC/B,EAAQqC,EAASnC,EAAQC,EAAQC,EAAQC,EAAQC,EAIrDG,GAAIL,EAAQ,WACR,GAAI0B,GAAGc,EAAYb,CACnB,KAAKD,EAAI3B,EAAOwC,OAAS,EAAGb,GAAK,GAAK3B,EAAO2B,GAAIA,IAC7CC,EAAO5B,EAAO2B,GACdc,EAAa1C,EAAO6B,IACD,IAAfa,GAAsC,IAAfA,IACvBA,EAAanC,EAAIJ,EAAS0B,EAAO,IAAMzB,IAE3CQ,EAAMsB,EAAOQ,EAIjBhB,GAAOQ","file":"../scripts/i18n.js","sourcesContent":["/**\n * @license RequireJS i18n 2.0.4 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/requirejs/i18n for details\n */\n/*jslint regexp: true */\n/*global require: false, navigator: false, define: false */\n\n/**\n * This plugin handles i18n! prefixed modules. It does the following:\n *\n * 1) A regular module can have a dependency on an i18n bundle, but the regular\n * module does not want to specify what locale to load. So it just specifies\n * the top-level bundle, like \"i18n!nls/colors\".\n *\n * This plugin will load the i18n bundle at nls/colors, see that it is a root/master\n * bundle since it does not have a locale in its name. It will then try to find\n * the best match locale available in that master bundle, then request all the\n * locale pieces for that best match locale. For instance, if the locale is \"en-us\",\n * then the plugin will ask for the \"en-us\", \"en\" and \"root\" bundles to be loaded\n * (but only if they are specified on the master bundle).\n *\n * Once all the bundles for the locale pieces load, then it mixes in all those\n * locale pieces into each other, then finally sets the context.defined value\n * for the nls/colors bundle to be that mixed in locale.\n *\n * 2) A regular module specifies a specific locale to load. For instance,\n * i18n!nls/fr-fr/colors. In this case, the plugin needs to load the master bundle\n * first, at nls/colors, then figure out what the best match locale is for fr-fr,\n * since maybe only fr or just root is defined for that locale. Once that best\n * fit is found, all of its locale pieces need to have their bundles loaded.\n *\n * Once all the bundles for the locale pieces load, then it mixes in all those\n * locale pieces into each other, then finally sets the context.defined value\n * for the nls/fr-fr/colors bundle to be that mixed in locale.\n */\n(function () {\n 'use strict';\n\n //regexp for reconstructing the master bundle name from parts of the regexp match\n //nlsRegExp.exec(\"foo/bar/baz/nls/en-ca/foo\") gives:\n //[\"foo/bar/baz/nls/en-ca/foo\", \"foo/bar/baz/nls/\", \"/\", \"/\", \"en-ca\", \"foo\"]\n //nlsRegExp.exec(\"foo/bar/baz/nls/foo\") gives:\n //[\"foo/bar/baz/nls/foo\", \"foo/bar/baz/nls/\", \"/\", \"/\", \"foo\", \"\"]\n //so, if match[5] is blank, it means this is the top bundle definition.\n var nlsRegExp = /(^.*(^|\\/)nls(\\/|$))([^\\/]*)\\/?([^\\/]*)/;\n\n //Helper function to avoid repeating code. Lots of arguments in the\n //desire to stay functional and support RequireJS contexts without having\n //to know about the RequireJS contexts.\n function addPart(locale, master, needed, toLoad, prefix, suffix) {\n if (master[locale]) {\n needed.push(locale);\n if (master[locale] === true || master[locale] === 1) {\n toLoad.push(prefix + locale + '/' + suffix);\n }\n }\n }\n\n function addIfExists(req, locale, toLoad, prefix, suffix) {\n var fullName = prefix + locale + '/' + suffix;\n if (require._fileExists(req.toUrl(fullName + '.js'))) {\n toLoad.push(fullName);\n }\n }\n\n /**\n * Simple function to mix in properties from source into target,\n * but only if target does not already have a property of the same name.\n * This is not robust in IE for transferring methods that match\n * Object.prototype names, but the uses of mixin here seem unlikely to\n * trigger a problem related to that.\n */\n function mixin(target, source, force) {\n var prop;\n for (prop in source) {\n if (source.hasOwnProperty(prop) && (!target.hasOwnProperty(prop) || force)) {\n target[prop] = source[prop];\n } else if (typeof source[prop] === 'object') {\n if (!target[prop] && source[prop]) {\n target[prop] = {};\n }\n mixin(target[prop], source[prop], force);\n }\n }\n }\n\n define(['module'], function (module) {\n var masterConfig = module.config ? module.config() : {};\n\n return {\n version: '2.0.4',\n /**\n * Called when a dependency needs to be loaded.\n */\n load: function (name, req, onLoad, config) {\n config = config || {};\n\n if (config.locale) {\n masterConfig.locale = config.locale;\n }\n\n var masterName,\n match = nlsRegExp.exec(name),\n prefix = match[1],\n locale = match[4],\n suffix = match[5],\n parts = locale.split(\"-\"),\n toLoad = [],\n value = {},\n i, part, current = \"\";\n\n //If match[5] is blank, it means this is the top bundle definition,\n //so it does not have to be handled. Locale-specific requests\n //will have a match[4] value but no match[5]\n if (match[5]) {\n //locale-specific bundle\n prefix = match[1];\n masterName = prefix + suffix;\n } else {\n //Top-level bundle.\n masterName = name;\n suffix = match[4];\n locale = masterConfig.locale;\n if (!locale) {\n locale = masterConfig.locale =\n typeof navigator === \"undefined\" ? \"root\" :\n (navigator.language ||\n navigator.userLanguage || \"root\").toLowerCase();\n }\n parts = locale.split(\"-\");\n }\n\n if (config.isBuild) {\n //Check for existence of all locale possible files and\n //require them if exist.\n toLoad.push(masterName);\n addIfExists(req, \"root\", toLoad, prefix, suffix);\n for (i = 0; i < parts.length; i++) {\n part = parts[i];\n current += (current ? \"-\" : \"\") + part;\n addIfExists(req, current, toLoad, prefix, suffix);\n }\n\n req(toLoad, function () {\n onLoad();\n });\n } else {\n //First, fetch the master bundle, it knows what locales are available.\n req([masterName], function (master) {\n //Figure out the best fit\n var needed = [],\n part;\n\n //Always allow for root, then do the rest of the locale parts.\n addPart(\"root\", master, needed, toLoad, prefix, suffix);\n for (i = 0; i < parts.length; i++) {\n part = parts[i];\n current += (current ? \"-\" : \"\") + part;\n addPart(current, master, needed, toLoad, prefix, suffix);\n }\n\n //Load all the parts missing.\n req(toLoad, function () {\n var i, partBundle, part;\n for (i = needed.length - 1; i > -1 && needed[i]; i--) {\n part = needed[i];\n partBundle = master[part];\n if (partBundle === true || partBundle === 1) {\n partBundle = req(prefix + part + '/' + suffix);\n }\n mixin(value, partBundle);\n }\n\n //All done, notify the loader.\n onLoad(value);\n });\n });\n }\n }\n };\n });\n}());\n"]} \ No newline at end of file diff --git a/static/maps/layout/generic-nav-view.js.map b/static/maps/layout/generic-nav-view.js.map index 9a0e237b58e..79e80ffe35f 100644 --- a/static/maps/layout/generic-nav-view.js.map +++ b/static/maps/layout/generic-nav-view.js.map @@ -1 +1 @@ -{"version":3,"file":"generic-nav-view.js","sources":["../../src/layout/generic-nav-view.js"],"names":["define","Modal","GenericNavView","Backbone","View","extend","initialize","this","modal","makeModalIframe","host","window","Galaxy","config","communication_server_host","port","communication_server_port","username","escape","user","attributes","persistent_communication_rooms","query_string","src","$el_chat_modal_header","$el_chat_modal_body","iframe_template","header_template","frame_height","frame_width","class_names","$","length","remove","body","height","width","closing_events","title_separator","cls","show","addClass","find","removeAttr","append","click","css","hasClass","removeClass","attr","render","self","navItem","id","icon","tooltip","visible","onclick"],"mappings":"AACAA,QAAQ,mBAAoB,SAAUC,GAEtC,GAAIC,GAAiBC,SAASC,KAAKC,QAE/BC,WAAY,WACRC,KAAKC,MAAQ,MAIjBC,gBAAiB,WAEpB,GAAIC,GAAQC,OAAOC,OAAOC,OAAOC,0BAC7BC,EAAOJ,OAAOC,OAAOC,OAAOG,0BAC5BC,EAAWC,OAAQP,OAAOC,OAAOO,KAAKC,WAAWH,UACjDI,EAAiCH,OAAQP,OAAOC,OAAOC,OAAOQ,gCAC9DC,EAAe,aAAeL,EAAW,mCAAqCI,EAC9EE,EAAMb,EAAO,IAAMK,EAAOO,EAC1BE,EAAwB,KACxBC,EAAsB,KACfC,EAAkB,8DAAgEH,EAAM,eACxFI,EAAkB,sPAGlBC,EAAe,IACfC,EAAc,IACdC,EAAc,qBAgDlB,OA7CIC,GAAG,eAAgBC,OAAS,GAC5BD,EAAG,eAAgBE,SAG9B/B,EAAeM,MAAQ,GAAIP,GAAMG,MAC7B8B,KAAkBR,EAClBS,OAAkBP,EAClBQ,MAAkBP,EAClBQ,gBAAkB,EAClBC,iBAAkB,EACXC,IAAkBT,IAI7B5B,EAAeM,MAAMgC,OACdhB,EAAwBO,EAAG,6BAC3BN,EAAsBM,EAAG,2BAEzBP,EAAsBiB,SAAS,qBAC/BhB,EAAoBgB,SAAS,qBACpCjB,EAAsBkB,KAAM,MAAOT,SAC5BT,EAAsBmB,WAAY,6BACzCnB,EAAsBoB,OAAQjB,GAE9BI,EAAG,gBAAiBc,MAAM,WACtBd,EAAG,eAAgBe,IAAK,UAAW,UAGhCf,EAAG,0BAA2Bc,MAAM,WAC5Bd,EAAG,0BAA2BgB,SAAU,cACxChB,EAAG,6BAA8BK,MAAO,UACxCL,EAAG,2BAA4BI,OAAQ,SACvCJ,EAAG,0BAA2BiB,YAAa,aAAcP,SAAU,eACnEV,EAAG,0BAA2BkB,KAAK,QAAS,YAC5ClB,EAAG,0BAA2Be,IAAI,cAAe,WAGjDf,EAAG,6BAA8BK,MAAOP,EAAc,MACtDE,EAAG,2BAA4BI,OAAQP,EAAe,MACtDG,EAAG,0BAA2BiB,YAAa,eAAgBP,SAAU,aACrEV,EAAG,0BAA2BkB,KAAK,QAAS,YAC5ClB,EAAG,0BAA2Be,IAAI,cAAe,YAIlDvC,MAIX2C,OAAQ,WACJ,GAAIC,GAAO5C,KACP6C,IAQJ,OAPAA,IACIC,GAAkB,mBAClBC,KAAkB,eAClBC,QAAkB,cAClBC,SAAkB,EAClBC,QAAkBN,EAAK1C,mBAMnC,QACIP,eAAkBA"} \ No newline at end of file +{"version":3,"sources":["layout/generic-nav-view.js"],"names":["define","Modal","GenericNavView","Backbone","View","extend","initialize","this","modal","makeModalIframe","e","host","window","Galaxy","config","communication_server_host","port","communication_server_port","username","escape","user","attributes","persistent_communication_rooms","query_string","src","$el_chat_modal_header","$el_chat_modal_body","iframe_template","$","length","remove","body","height","width","closing_events","title_separator","cls","show","addClass","find","removeAttr","append","click","css","hasClass","removeClass","attr","frame_width","frame_height","render","self","id","icon","tooltip","visible","onclick"],"mappings":"AACAA,QAAQ,mBAAoB,SAAUC,GAEtC,GAAIC,GAAiBC,SAASC,KAAKC,QAE/BC,WAAY,WACRC,KAAKC,MAAQ,MAIjBC,gBAAiB,SAAUC,GAE9B,GAAIC,GAAQC,OAAOC,OAAOC,OAAOC,0BAC7BC,EAAOJ,OAAOC,OAAOC,OAAOG,0BAC5BC,EAAWC,OAAQP,OAAOC,OAAOO,KAAKC,WAAWH,UACjDI,EAAiCH,OAAQP,OAAOC,OAAOC,OAAOQ,gCAC9DC,EAAe,aAAeL,EAAW,mCAAqCI,EAC9EE,EAAMb,EAAO,IAAMK,EAAOO,EAC1BE,EAAwB,KACxBC,EAAsB,KACfC,EAAkB,8DAAgEH,EAAM,cAsD5F,OA7CII,GAAG,eAAgBC,OAAS,GAC5BD,EAAG,eAAgBE,SAG9B5B,EAAeM,MAAQ,GAAIP,GAAMG,MAC7B2B,KAAkBJ,EAClBK,OAXsB,IAYtBC,MAXqB,IAYrBC,gBAAkB,EAClBC,iBAAkB,EACXC,IAbc,wBAiBzBlC,EAAeM,MAAM6B,OACdZ,EAAwBG,EAAG,6BAC3BF,EAAsBE,EAAG,2BAEzBH,EAAsBa,SAAS,qBAC/BZ,EAAoBY,SAAS,qBACpCb,EAAsBc,KAAM,MAAOT,SAC5BL,EAAsBe,WAAY,6BACzCf,EAAsBgB,OA9BO,uPAgC7Bb,EAAG,gBAAiBc,MAAM,SAAUhC,GAChCkB,EAAG,eAAgBe,IAAK,UAAW,UAGhCf,EAAG,0BAA2Bc,MAAM,SAAUhC,GACtCkB,EAAG,0BAA2BgB,SAAU,cACxChB,EAAG,6BAA8BK,MAAO,UACxCL,EAAG,2BAA4BI,OAAQ,SACvCJ,EAAG,0BAA2BiB,YAAa,aAAcP,SAAU,eACnEV,EAAG,0BAA2BkB,KAAK,QAAS,YAC5ClB,EAAG,0BAA2Be,IAAI,cAAe,WAGjDf,EAAG,6BAA8BK,MAAOc,SACxCnB,EAAG,2BAA4BI,OAAQgB,SACvCpB,EAAG,0BAA2BiB,YAAa,eAAgBP,SAAU,aACrEV,EAAG,0BAA2BkB,KAAK,QAAS,YAC5ClB,EAAG,0BAA2Be,IAAI,cAAe,YAIlDpC,MAIX0C,OAAQ,WACJ,GAAIC,GAAO3C,IASX,QANI4C,GAAkB,mBAClBC,KAAkB,eAClBC,QAAkB,cAClBC,SAAkB,EAClBC,QAAkBL,EAAKzC,mBAMnC,QACIP,eAAkBA","file":"../../scripts/layout/generic-nav-view.js","sourcesContent":["/** Real-time Communication feature **/\ndefine(['mvc/ui/ui-modal'], function( Modal ) {\n\nvar GenericNavView = Backbone.View.extend({\n\n initialize: function ( ) {\n this.modal = null;\n },\n\n /** makes bootstrap modal and iframe inside it */\n makeModalIframe: function( e ) {\n\t// make modal\n\tvar host = window.Galaxy.config.communication_server_host,\n\t port = window.Galaxy.config.communication_server_port,\n\t username = escape( window.Galaxy.user.attributes.username ),\n\t persistent_communication_rooms = escape( window.Galaxy.config.persistent_communication_rooms ),\n\t query_string = \"?username=\" + username + \"&persistent_communication_rooms=\" + persistent_communication_rooms,\n\t src = host + \":\" + port + query_string,\n\t $el_chat_modal_header = null,\n\t $el_chat_modal_body = null,\n iframe_template = '',\n header_template = '' +\n '' + \n\t '',\n frame_height = 350,\n frame_width = 600,\n class_names = 'ui-modal chat-modal';\n \n\t// deletes the chat modal if already present and create one\n if( $( '.chat-modal' ).length > 0 ) {\n $( '.chat-modal' ).remove();\n\t}\n // creates a modal\n\tGenericNavView.modal = new Modal.View({\n\t body : iframe_template,\n\t height : frame_height,\n\t width : frame_width,\n\t closing_events : true,\n\t title_separator : false,\n cls : class_names\n\t});\n\n\t// shows modal\n\tGenericNavView.modal.show();\n $el_chat_modal_header = $( '.chat-modal .modal-header' );\n $el_chat_modal_body = $( '.chat-modal .modal-body' );\n\t// adjusts the css of bootstrap modal for chat\n $el_chat_modal_header.addClass('modal-header-body');\n $el_chat_modal_body.addClass('modal-header-body');\n\t$el_chat_modal_header.find( 'h4' ).remove();\n $el_chat_modal_header.removeAttr( 'min-height padding border' );\n\t$el_chat_modal_header.append( header_template );\n\t// click event of the close button for chat\n\t$( '.close-modal' ).click(function( e ) {\n\t $( '.chat-modal' ).css( 'display', 'none' );\n\t});\n // click event of expand and compress icon\n $( '.expand-compress-modal' ).click(function( e ) {\n if( $( '.expand-compress-modal' ).hasClass( 'fa-expand' ) ) {\n $( '.chat-modal .modal-dialog' ).width( '1000px' );\n $( '.chat-modal .modal-body' ).height( '575px' );\n $( '.expand-compress-modal' ).removeClass( 'fa-expand' ).addClass( 'fa-compress' );\n $( '.expand-compress-modal' ).attr('title', 'Minimize');\n $( '.expand-compress-modal' ).css('margin-left', '96.2%');\n }\n else {\n $( '.chat-modal .modal-dialog' ).width( frame_width + 'px' );\n $( '.chat-modal .modal-body' ).height( frame_height + 'px' );\n $( '.expand-compress-modal' ).removeClass( 'fa-compress' ).addClass( 'fa-expand' );\n $( '.expand-compress-modal' ).attr('title', 'Maximize');\n $( '.expand-compress-modal' ).css('margin-left', '93.2%');\n }\n\t \n\t});\n return this;\n },\n\n /**renders the chat icon as a nav item*/\n render: function() {\n var self = this,\n navItem = {};\n navItem = {\n id : 'show-chat-online',\n icon : 'fa-comment-o',\n tooltip : 'Chat online',\n visible : false,\n onclick : self.makeModalIframe\n }\n return navItem;\n }\n});\n\nreturn {\n GenericNavView : GenericNavView\n};\n\n});\n\n"]} \ No newline at end of file diff --git a/static/maps/layout/masthead.js.map b/static/maps/layout/masthead.js.map index 8da424b3465..13323415d4a 100644 --- a/static/maps/layout/masthead.js.map +++ b/static/maps/layout/masthead.js.map @@ -1 +1 @@ -{"version":3,"file":"masthead.js","sources":["../../src/layout/masthead.js"],"names":["define","Utils","Menu","Scratchbook","QuotaMeter","View","Backbone","extend","initialize","options","self","this","setElement","_template","$navbarBrandLink","$","$navbarBrandImage","$navbarBrandTitle","$navbarTabs","$quoteMeter","collection","Collection","on","model","append","Tab","render","$el","empty","callback","each","m","fetch","Galaxy","frame","quotaMeter","UserQuotaMeter","user","el","window","e","$download_link","target","closest","length","attr","hide","preventDefault","text","q","get","html","brand","logo_url","logo_src"],"mappings":"AAAAA,QACI,cACA,cACA,qBACA,4BACD,SAAUC,EAAOC,EAAMC,EAAaC,GAGvC,GAAIC,GAAOC,SAASD,KAAKE,QACrBC,WAAa,SAAUC,GACnB,GAAIC,GAAOC,IACXA,MAAKF,QAAUA,EACfE,KAAKC,WAAYD,KAAKE,aACtBF,KAAKG,iBAAqBH,KAAKI,EAAG,sBAClCJ,KAAKK,kBAAqBL,KAAKI,EAAG,uBAClCJ,KAAKM,kBAAqBN,KAAKI,EAAG,uBAClCJ,KAAKO,YAAqBP,KAAKI,EAAG,gBAClCJ,KAAKQ,YAAqBR,KAAKI,EAAG,0BAGlCJ,KAAKS,WAAa,GAAIlB,GAAKmB,WAC3BV,KAAKS,WAAWE,GAAI,MAAO,SAAUC,GACjCb,EAAKQ,YAAYM,OAAQ,GAAItB,GAAKuB,KAAOF,MAAQA,IAAUG,SAASC,OACrEL,GAAI,QAAS,WACZZ,EAAKQ,YAAYU,UAClBN,GAAI,WAAY,SAAUO,GACzBnB,EAAKU,WAAWU,KAAM,SAAWC,GAAMF,EAAUE,OAClDC,MAAOrB,KAAKF,SAGfwB,OAAOC,MAAQvB,KAAKuB,MAAQ,GAAI/B,IAAeiB,WAAYT,KAAKS,aAIhEa,OAAOE,WAAaxB,KAAKwB,WAAa,GAAI/B,GAAWgC,gBACjDb,MAAUU,OAAOI,KACjBC,GAAU3B,KAAKQ,cAInBJ,EAAGwB,QAASjB,GAAI,QAAS,SAAUkB,GAC/B,GAAIC,GAAiB1B,EAAGyB,EAAEE,QAASC,QAAS,cACd,IAAzBF,EAAeG,SAC0B,IAAtC7B,EAAG,uBAAwB6B,QAC3B7B,EAAG,QAASS,OAAQT,EAAG,aAAc8B,KAAM,KAAM,YAAaC,QAElE/B,EAAG,uBAAwB8B,KAAM,MAAOJ,EAAeI,KAAM,SAC7DL,EAAEO,oBAEPzB,GAAI,eAAgB,WACnB,GAAI0B,GAAO,EAKX,OAJAtC,GAAKU,WAAWU,KAAM,SAAUP,GAC5B,GAAI0B,GAAI1B,EAAM2B,IAAK,mBAAsB3B,EAAM2B,IAAK,mBACpDD,KAAOD,GAAQC,EAAI,OAET,KAATD,EACMA,EADX,UAMRtB,OAAQ,WAKJ,MAJAf,MAAKM,kBAAkBkC,KAAM,WAAcxC,KAAKF,QAAQ2C,OAAS,KAAOzC,KAAKF,QAAQ2C,OAAS,KAC9FzC,KAAKG,iBAAiB+B,KAAM,OAAQlC,KAAKF,QAAQ4C,UACjD1C,KAAKK,kBAAkB6B,KAAM,MAAOlC,KAAKF,QAAQ6C,UACjD3C,KAAKwB,WAAWT,SACTf,MAIXE,UAAW,WACP,MAAQ,2UAgBhB,QACIR,KAAMA"} \ No newline at end of file +{"version":3,"sources":["layout/masthead.js"],"names":["define","Utils","Menu","Scratchbook","QuotaMeter","View","Backbone","extend","initialize","options","self","this","setElement","_template","$navbarBrandLink","$","$navbarBrandImage","$navbarBrandTitle","$navbarTabs","$quoteMeter","collection","Collection","on","model","append","Tab","render","$el","empty","callback","each","m","fetch","Galaxy","frame","quotaMeter","UserQuotaMeter","user","el","window","e","$download_link","target","closest","length","attr","hide","preventDefault","text","q","get","html","brand","logo_url","logo_src"],"mappings":"AAAAA,QACI,cACA,cACA,qBACA,4BACD,SAAUC,EAAOC,EAAMC,EAAaC,GAkFvC,OACIC,KAhFOC,SAASD,KAAKE,QACrBC,WAAa,SAAUC,GACnB,GAAIC,GAAOC,IACXA,MAAKF,QAAUA,EACfE,KAAKC,WAAYD,KAAKE,aACtBF,KAAKG,iBAAqBH,KAAKI,EAAG,sBAClCJ,KAAKK,kBAAqBL,KAAKI,EAAG,uBAClCJ,KAAKM,kBAAqBN,KAAKI,EAAG,uBAClCJ,KAAKO,YAAqBP,KAAKI,EAAG,gBAClCJ,KAAKQ,YAAqBR,KAAKI,EAAG,0BAGlCJ,KAAKS,WAAa,GAAIlB,GAAKmB,WAC3BV,KAAKS,WAAWE,GAAI,MAAO,SAAUC,GACjCb,EAAKQ,YAAYM,OAAQ,GAAItB,GAAKuB,KAAOF,MAAQA,IAAUG,SAASC,OACrEL,GAAI,QAAS,WACZZ,EAAKQ,YAAYU,UAClBN,GAAI,WAAY,SAAUO,GACzBnB,EAAKU,WAAWU,KAAM,SAAWC,GAAMF,EAAUE,OAClDC,MAAOrB,KAAKF,SAGfwB,OAAOC,MAAQvB,KAAKuB,MAAQ,GAAI/B,IAAeiB,WAAYT,KAAKS,aAIhEa,OAAOE,WAAaxB,KAAKwB,WAAa,GAAI/B,GAAWgC,gBACjDb,MAAUU,OAAOI,KACjBC,GAAU3B,KAAKQ,cAInBJ,EAAGwB,QAASjB,GAAI,QAAS,SAAUkB,GAC/B,GAAIC,GAAiB1B,EAAGyB,EAAEE,QAASC,QAAS,cACd,IAAzBF,EAAeG,SAC0B,IAAtC7B,EAAG,uBAAwB6B,QAC3B7B,EAAG,QAASS,OAAQT,EAAG,aAAc8B,KAAM,KAAM,YAAaC,QAElE/B,EAAG,uBAAwB8B,KAAM,MAAOJ,EAAeI,KAAM,SAC7DL,EAAEO,oBAEPzB,GAAI,eAAgB,WACnB,GAAI0B,GAAO,EAKX,IAJAtC,EAAKU,WAAWU,KAAM,SAAUP,GAC5B,GAAI0B,GAAI1B,EAAM2B,IAAK,mBAAsB3B,EAAM2B,IAAK,mBACpDD,KAAOD,GAAQC,EAAI,OAET,KAATD,EACD,MAAOA,MAKnBtB,OAAQ,WAKJ,MAJAf,MAAKM,kBAAkBkC,KAAM,WAAcxC,KAAKF,QAAQ2C,OAAS,KAAOzC,KAAKF,QAAQ2C,OAAS,KAC9FzC,KAAKG,iBAAiB+B,KAAM,OAAQlC,KAAKF,QAAQ4C,UACjD1C,KAAKK,kBAAkB6B,KAAM,MAAOlC,KAAKF,QAAQ6C,UACjD3C,KAAKwB,WAAWT,SACTf,MAIXE,UAAW,WACP,MAAQ","file":"../../scripts/layout/masthead.js","sourcesContent":["define([\n 'utils/utils',\n 'layout/menu',\n 'layout/scratchbook',\n 'mvc/user/user-quotameter',\n], function( Utils, Menu, Scratchbook, QuotaMeter ) {\n\n/** Masthead **/\nvar View = Backbone.View.extend({\n initialize : function( options ) {\n var self = this;\n this.options = options;\n this.setElement( this._template() );\n this.$navbarBrandLink = this.$( '.navbar-brand-link' );\n this.$navbarBrandImage = this.$( '.navbar-brand-image' );\n this.$navbarBrandTitle = this.$( '.navbar-brand-title' );\n this.$navbarTabs = this.$( '.navbar-tabs' );\n this.$quoteMeter = this.$( '.quota-meter-container' );\n\n // build tabs\n this.collection = new Menu.Collection();\n this.collection.on( 'add', function( model ) {\n self.$navbarTabs.append( new Menu.Tab( { model : model } ).render().$el );\n }).on( 'reset', function() {\n self.$navbarTabs.empty();\n }).on( 'dispatch', function( callback ) {\n self.collection.each( function ( m ) { callback( m ) });\n }).fetch( this.options );\n\n // scratchbook\n Galaxy.frame = this.frame = new Scratchbook( { collection: this.collection } );\n\n // set up the quota meter (And fetch the current user data from trans)\n // add quota meter to masthead\n Galaxy.quotaMeter = this.quotaMeter = new QuotaMeter.UserQuotaMeter({\n model : Galaxy.user,\n el : this.$quoteMeter\n });\n\n // loop through beforeunload functions if the user attempts to unload the page\n $( window ).on( 'click', function( e ) {\n var $download_link = $( e.target ).closest( 'a[download]' );\n if ( $download_link.length == 1 ) {\n if( $( 'iframe[id=download]' ).length === 0 ) {\n $( 'body' ).append( $( '
\"\n )\n });\n modal.show( { backdrop: true } );\n}\n\n\n// ============================================================================\n return {\n Modal : Modal,\n hide_modal : hide_modal,\n show_modal : show_modal,\n show_message : show_message,\n show_in_overlay : show_in_overlay,\n };\n});\n"]} \ No newline at end of file diff --git a/static/maps/layout/page.js.map b/static/maps/layout/page.js.map index 4bd0b157f88..01a7b7eebee 100644 --- a/static/maps/layout/page.js.map +++ b/static/maps/layout/page.js.map @@ -1 +1 @@ -{"version":3,"file":"page.js","sources":["../../src/layout/page.js"],"names":["define","Masthead","Panel","Modal","BaseMVC","PageLayoutView","Backbone","View","extend","LoggableMixin","_logNamespace","el","className","_panelIds","defaultOptions","message_box_visible","message_box_content","message_box_class","show_inactivity_warning","inactivity_box_content","initialize","options","this","log","_","pick","defaults","omit","config","Galaxy","modal","masthead","$el","attr","html","_template","append","frame","$","replaceWith","$messagebox","$inactivebox","render","remove","renderMessageBox","renderInactivityBox","renderPanels","_checkCommunicationServerOnline","content","level","addClass","toggle","show","removeClass","hide","verificationLink","root","text","page","forEach","panelId","has","setElement","left","center","css","right","join","hideSidePanels","toString","host","window","communication_server_host","port","communication_server_port","preferences","user","attributes","$chat_icon_element","indexOf","communication_server","ajax","url","success","id","error"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["layout/page.js"],"names":["define","Masthead","Panel","Modal","BaseMVC","PageLayoutView","Backbone","View","extend","LoggableMixin","_logNamespace","el","className","_panelIds","defaultOptions","message_box_visible","message_box_content","message_box_class","show_inactivity_warning","inactivity_box_content","initialize","options","this","log","_","pick","defaults","omit","config","Galaxy","modal","masthead","$el","attr","html","_template","append","frame","$","replaceWith","$messagebox","$inactivebox","render","remove","renderMessageBox","renderInactivityBox","renderPanels","_checkCommunicationServerOnline","content","level","addClass","toggle","show","removeClass","hide","verificationLink","root","text","page","forEach","panelId","has","setElement","left","center","css","right","join","hideSidePanels","toString","host","window","communication_server_host","port","communication_server_port","preferences","user","attributes","$chat_icon_element","indexOf","communication_server","ajax","url","success","data","id","error"],"mappings":"AAAAA,QACI,kBACA,eACA,kBACA,gBACD,SAAUC,EAAUC,EAAOC,EAAOC,GAkKjC,OACIC,eAhKaC,SAASC,KAAKC,OAAQJ,EAAQK,eAAgBD,QAC/DE,cAAgB,SAEhBC,GAAK,OACLC,UAAY,eAEZC,WACI,OAAQ,SAAU,SAGtBC,gBACIC,qBAA0B,EAC1BC,oBAA0B,GAC1BC,kBAA0B,OAC1BC,yBAA0B,EAC1BC,uBAA0B,IAG9BC,WAAa,SAAUC,GAEnBC,KAAKC,IAAKD,KAAO,eAAgBD,GACjCG,EAAEhB,OAAQc,KAAME,EAAEC,KAAMJ,EAASC,KAAKT,YACtCS,KAAKD,QAAUG,EAAEE,SAAUF,EAAEG,KAAMN,EAAQO,OAAQN,KAAKT,WAAaS,KAAKR,gBAC1Ee,OAAOC,MAAQR,KAAKQ,MAAQ,GAAI3B,GAAMI,KACtCe,KAAKS,SAAW,GAAI9B,GAASM,KAAMe,KAAKD,SACxCC,KAAKU,IAAIC,KAAM,SAAU,MACzBX,KAAKU,IAAIE,KAAMZ,KAAKa,aACpBb,KAAKU,IAAII,OAAQd,KAAKS,SAASM,MAAML,KACrCV,KAAKgB,EAAG,aAAcC,YAAajB,KAAKS,SAASC,KACjDV,KAAKU,IAAII,OAAQd,KAAKQ,MAAME,KAC5BV,KAAKkB,YAAclB,KAAKgB,EAAG,eAC3BhB,KAAKmB,aAAenB,KAAKgB,EAAG,iBAGhCI,OAAS,WASL,MAPAJ,GAAG,8BAA+BK,SAClCrB,KAAKC,IAAKD,KAAO,YACjBA,KAAKS,SAASW,SACdpB,KAAKsB,mBACLtB,KAAKuB,sBACLvB,KAAKwB,eACLxB,KAAKyB,kCACEzB,MAIXsB,iBAAmB,WACf,GAAKtB,KAAKD,QAAQN,oBAAqB,CACnC,GAAIiC,GAAU1B,KAAKD,QAAQL,qBAAuB,GAC9CiC,EAAQ3B,KAAKD,QAAQJ,mBAAqB,MAC9CK,MAAKU,IAAIkB,SAAU,mBACnB5B,KAAKkB,YACAP,KAAM,QAAS,SAAWgB,EAAQ,YAClCf,KAAMc,GACNG,SAAUH,GACVI,WAEL9B,MAAKU,IAAIqB,YAAa,mBACtB/B,KAAKkB,YAAYc,MAErB,OAAOhC,OAIXuB,oBAAsB,WAClB,GAAIvB,KAAKD,QAAQH,wBAAyB,CACtC,GAAI8B,GAAU1B,KAAKD,QAAQF,wBAA0B,GACjDoC,EAAmBjB,EAAG,QAASL,KAAM,OAAQJ,OAAO2B,KAAO,4BAA6BC,KAAM,sBAClGnC,MAAKU,IAAIkB,SAAU,sBACnB5B,KAAKmB,aACAP,KAAMc,EAAU,KAChBZ,OAAQmB,GACRJ,SAAUH,GACVI,WAEL9B,MAAKU,IAAIqB,YAAa,sBACtB/B,KAAKmB,aAAaa,MAEtB,OAAOhC,OAIXwB,aAAe,WACX,GAAIY,GAAOpC,IAaX,OAZAA,MAAKT,UAAU8C,QAAS,SAAUC,GAC1BpC,EAAEqC,IAAKH,EAAME,KACbF,EAAME,GAAUE,WAAY,IAAMF,GAClCF,EAAME,GAAUlB,YAGnBpB,KAAKyC,MACNzC,KAAK0C,OAAOhC,IAAIiC,IAAK,OAAQ,GAE5B3C,KAAK4C,OACN5C,KAAK0C,OAAOhC,IAAIiC,IAAK,QAAS,GAE3B3C,MAIXa,UAAW,WACP,OACI,wBACI,yBACA,uBACA,yBACA,yDACAb,KAAKyC,KAAQ,oBAAsB,GACnCzC,KAAK0C,OAAQ,sCAAwC,GACrD1C,KAAK4C,MAAQ,qBAAuB,GACxC,SACA,0BACFC,KAAK,KAIXC,eAAiB,WACT9C,KAAKyC,MACLzC,KAAKyC,KAAKT,OAEVhC,KAAK4C,OACL5C,KAAK4C,MAAMZ,QAInBe,SAAW,WAAa,MAAO,kBAG/BtB,gCAAiC,WAC7B,GAAIuB,GAAOC,OAAO1C,OAAOD,OAAO4C,0BAC5BC,EAAOF,OAAO1C,OAAOD,OAAO8C,0BAC5BC,EAAcJ,OAAO1C,OAAO+C,KAAKC,WAAWF,YAC5CG,EAAqBxC,EAAG,oBAEvBqC,KAA+E,IAA9D,IAAK,QAASI,QAASJ,EAAYK,sBAErD1C,EAAE2C,MACEC,IAAKZ,EAAO,IAAMG,IAErBU,QAAS,SAAUC,GAEkB,OAA1Bb,OAAO1C,OAAO+C,KAAKS,IAC4B,WAA3CP,EAAmBb,IAAK,eACxBa,EAAmBb,IAAK,aAAc,aAIrDqB,MAAO,SAAUF,GAEdN,EAAmBb,IAAK,aAAc,YAG1Ca,EAAmBb,IAAK,aAAc","file":"../../scripts/layout/page.js","sourcesContent":["define([\n 'layout/masthead',\n 'layout/panel',\n 'mvc/ui/ui-modal',\n 'mvc/base-mvc'\n], function( Masthead, Panel, Modal, BaseMVC ) {\n\n// ============================================================================\nvar PageLayoutView = Backbone.View.extend( BaseMVC.LoggableMixin ).extend({\n _logNamespace : 'layout',\n\n el : 'body',\n className : 'full-content',\n\n _panelIds : [\n 'left', 'center', 'right'\n ],\n\n defaultOptions : {\n message_box_visible : false,\n message_box_content : '',\n message_box_class : 'info',\n show_inactivity_warning : false,\n inactivity_box_content : ''\n },\n\n initialize : function( options ) {\n // TODO: remove globals\n this.log( this + '.initialize:', options );\n _.extend( this, _.pick( options, this._panelIds ) );\n this.options = _.defaults( _.omit( options.config, this._panelIds ), this.defaultOptions );\n Galaxy.modal = this.modal = new Modal.View();\n this.masthead = new Masthead.View( this.options );\n this.$el.attr( 'scroll', 'no' );\n this.$el.html( this._template() );\n this.$el.append( this.masthead.frame.$el );\n this.$( '#masthead' ).replaceWith( this.masthead.$el );\n this.$el.append( this.modal.$el );\n this.$messagebox = this.$( '#messagebox' );\n this.$inactivebox = this.$( '#inactivebox' );\n },\n\n render : function() {\n // TODO: Remove this line after select2 update\n $( '.select2-hidden-accessible' ).remove();\n this.log( this + '.render:' );\n this.masthead.render();\n this.renderMessageBox();\n this.renderInactivityBox();\n this.renderPanels();\n this._checkCommunicationServerOnline();\n return this;\n },\n\n /** Render message box */\n renderMessageBox : function() {\n if ( this.options.message_box_visible ){\n var content = this.options.message_box_content || '';\n var level = this.options.message_box_class || 'info';\n this.$el.addClass( 'has-message-box' );\n this.$messagebox\n .attr( 'class', 'panel-' + level + '-message' )\n .html( content )\n .toggle( !!content )\n .show();\n } else {\n this.$el.removeClass( 'has-message-box' );\n this.$messagebox.hide();\n }\n return this;\n },\n\n /** Render inactivity warning */\n renderInactivityBox : function() {\n if( this.options.show_inactivity_warning ){\n var content = this.options.inactivity_box_content || '';\n var verificationLink = $( '' ).attr( 'href', Galaxy.root + 'user/resend_verification' ).text( 'Resend verification' );\n this.$el.addClass( 'has-inactivity-box' );\n this.$inactivebox\n .html( content + ' ' )\n .append( verificationLink )\n .toggle( !!content )\n .show();\n } else {\n this.$el.removeClass( 'has-inactivity-box' );\n this.$inactivebox.hide();\n }\n return this;\n },\n\n /** Render panels */\n renderPanels : function() {\n var page = this;\n this._panelIds.forEach( function( panelId ){\n if( _.has( page, panelId ) ){\n page[ panelId ].setElement( '#' + panelId );\n page[ panelId ].render();\n }\n });\n if( !this.left ){\n this.center.$el.css( 'left', 0 );\n }\n if( !this.right ){\n this.center.$el.css( 'right', 0 );\n }\n return this;\n },\n\n /** body template */\n _template: function() {\n return [\n '
',\n '
',\n '
',\n '
',\n '
',\n this.left? '
' : '',\n this.center? '
' : '',\n this.right? '
' : '',\n '
',\n '
',\n ].join('');\n },\n\n /** hide both side panels if previously shown */\n hideSidePanels : function(){\n if( this.left ){\n this.left.hide();\n }\n if( this.right ){\n this.right.hide();\n }\n },\n\n toString : function() { return 'PageLayoutView'; },\n\n /** Check if the communication server is online and show the icon otherwise hide the icon */\n _checkCommunicationServerOnline: function(){\n var host = window.Galaxy.config.communication_server_host,\n port = window.Galaxy.config.communication_server_port,\n preferences = window.Galaxy.user.attributes.preferences,\n $chat_icon_element = $( \"#show-chat-online\" );\n /** Check if the user has deactivated the communication in it's personal settings */\n if ( preferences && [ '1', 'true' ].indexOf( preferences.communication_server ) != -1 ) {\n // See if the configured communication server is available\n $.ajax({\n url: host + \":\" + port,\n })\n .success( function( data ) {\n // enable communication only when a user is logged in\n if( window.Galaxy.user.id !== null ) {\n if( $chat_icon_element.css( \"visibility\") === \"hidden\" ) {\n $chat_icon_element.css( \"visibility\", \"visible\" ); \n }\n }\n })\n .error( function( data ) { \n // hide the communication icon if the communication server is not available\n $chat_icon_element.css( \"visibility\", \"hidden\" ); \n });\n } else {\n $chat_icon_element.css( \"visibility\", \"hidden\" ); \n }\n },\n});\n\n// ============================================================================\n return {\n PageLayoutView: PageLayoutView\n };\n});\n"]} \ No newline at end of file diff --git a/static/maps/layout/panel.js.map b/static/maps/layout/panel.js.map index f6b297f20eb..e2df59bf53e 100644 --- a/static/maps/layout/panel.js.map +++ b/static/maps/layout/panel.js.map @@ -1 +1 @@ -{"version":3,"file":"panel.js","sources":["../../src/layout/panel.js"],"names":["define","jQuery","_","Backbone","BASE_MVC","$","MIN_PANEL_WIDTH","MAX_PANEL_WIDTH","SidePanel","View","extend","LoggableMixin","_logNamespace","initialize","attributes","this","log","title","hidden","savedSize","hiddenByTool","$center","$el","siblings","$toggleButton","render","html","template","id","_templateHeader","_templateBody","_templateFooter","join","escape","events","mousedown .unified-panel-footer > .drag","click .unified-panel-footer > .panel-collapse","_mousedownDragHandler","ev","move","e","delta","pageX","prevX","oldWidth","self","width","newWidth","draggingLeft","Math","min","max","resize","show","on","one","hide","off","newSize","css","animation","whichSide","animate","removeClass","addClass","toggle","handle_minwidth_hint","hint","space","force_panel","op","toString","LeftPanel","RightPanel","CenterPanel","options","prev","bind","_iframeChangeHandler","iframe","currentTarget","location","contentWindow","host","remove","Galaxy","trigger","fullpath","pathname","search","hash","display","view","message","onbeforeunload","confirm","undefined","attr","scrollTop","append"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["layout/panel.js"],"names":["define","jQuery","_","Backbone","BASE_MVC","$","MIN_PANEL_WIDTH","MAX_PANEL_WIDTH","SidePanel","View","extend","LoggableMixin","_logNamespace","initialize","attributes","this","log","title","hidden","savedSize","hiddenByTool","$center","$el","siblings","$toggleButton","render","html","template","id","_templateHeader","_templateBody","_templateFooter","join","data","escape","events","mousedown .unified-panel-footer > .drag","click .unified-panel-footer > .panel-collapse","_mousedownDragHandler","ev","move","e","delta","pageX","prevX","oldWidth","self","width","newWidth","draggingLeft","Math","min","max","resize","show","on","one","hide","off","newSize","css","animation","whichSide","animate","removeClass","addClass","toggle","handle_minwidth_hint","hint","force_panel","op","toString","LeftPanel","RightPanel","CenterPanel","options","prev","bind","_iframeChangeHandler","iframe","currentTarget","location","contentWindow","host","remove","Galaxy","trigger","fullpath","pathname","search","hash","display","view","message","onbeforeunload","confirm","undefined","attr","scrollTop","append"],"mappings":"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","file":"../../scripts/layout/panel.js","sourcesContent":["define([\n 'jquery',\n 'libs/underscore',\n 'libs/backbone',\n 'mvc/base-mvc',\n], function( jQuery, _, Backbone, BASE_MVC ){\n\n\"use strict\";\n// ============================================================================\nvar $ = jQuery;\n\nvar MIN_PANEL_WIDTH = 160,\n MAX_PANEL_WIDTH = 800;\n\n// ----------------------------------------------------------------------------\n/**\n *\n */\nvar SidePanel = Backbone.View.extend( BASE_MVC.LoggableMixin ).extend({\n _logNamespace : 'layout',\n\n initialize: function( attributes ){\n this.log( this + '.initialize:', attributes );\n this.title = attributes.title || this.title || '';\n\n this.hidden = false;\n this.savedSize = null;\n this.hiddenByTool = false;\n },\n\n $center : function(){\n return this.$el.siblings( '#center' );\n },\n\n $toggleButton : function(){\n return this.$( '.unified-panel-footer > .panel-collapse' );\n },\n\n render: function(){\n this.log( this + '.render:' );\n this.$el.html( this.template( this.id ) );\n },\n\n /** panel dom template. id is 'right' or 'left' */\n template: function(){\n return [\n this._templateHeader(),\n this._templateBody(),\n this._templateFooter(),\n ].join('');\n },\n\n /** panel dom template. id is 'right' or 'left' */\n _templateHeader: function( data ){\n return [\n '
',\n '
',\n '
',\n '
', _.escape( this.title ), '
',\n '
',\n '
',\n ].join('');\n },\n\n /** panel dom template. id is 'right' or 'left' */\n _templateBody: function( data ){\n return '
';\n },\n\n /** panel dom template. id is 'right' or 'left' */\n _templateFooter: function( data ){\n return [\n '
',\n '
',\n '
',\n '
',\n ].join('');\n },\n\n // ..............................................................\n events : {\n 'mousedown .unified-panel-footer > .drag' : '_mousedownDragHandler',\n 'click .unified-panel-footer > .panel-collapse' : 'toggle'\n },\n\n _mousedownDragHandler : function( ev ){\n var self = this,\n draggingLeft = this.id === 'left',\n prevX = ev.pageX;\n\n function move( e ){\n var delta = e.pageX - prevX;\n prevX = e.pageX;\n\n var oldWidth = self.$el.width(),\n newWidth = draggingLeft?( oldWidth + delta ):( oldWidth - delta );\n // Limit range\n newWidth = Math.min( MAX_PANEL_WIDTH, Math.max( MIN_PANEL_WIDTH, newWidth ) );\n self.resize( newWidth );\n }\n\n // this is a page wide overlay that assists in capturing the move and release of the mouse\n // if not provided, progress and end wouldn't fire if the mouse moved out of the drag button area\n $( '#dd-helper' )\n .show()\n .on( 'mousemove', move )\n .one( 'mouseup', function( e ){\n $( this ).hide().off( 'mousemove', move );\n });\n },\n\n //TODO: the following three could be simplified I think\n resize : function( newSize ){\n this.$el.css( 'width', newSize );\n // if panel is 'right' (this.id), move center right newSize number of pixels\n this.$center().css( this.id, newSize );\n return self;\n },\n\n show : function(){\n if( !this.hidden ){ return; }\n var self = this,\n animation = {},\n whichSide = this.id;\n\n animation[ whichSide ] = 0;\n self.$el\n .css( whichSide, -this.savedSize )\n .show()\n .animate( animation, \"fast\", function(){\n self.resize( self.savedSize );\n });\n\n self.hidden = false;\n self.$toggleButton().removeClass( \"hidden\" );\n return self;\n },\n\n hide : function(){\n if( this.hidden ){ return; }\n var self = this,\n animation = {},\n whichSide = this.id;\n\n self.savedSize = this.$el.width();\n animation[ whichSide ] = -this.savedSize;\n this.$el.animate( animation, \"fast\" );\n this.$center().css( whichSide, 0 );\n\n self.hidden = true;\n self.$toggleButton().addClass( \"hidden\" );\n return self;\n },\n\n toggle: function( ev ){\n var self = this;\n if( self.hidden ){\n self.show();\n } else {\n self.hide();\n }\n self.hiddenByTool = false;\n return self;\n },\n\n // ..............................................................\n //TODO: only used in message.mako?\n /** */\n handle_minwidth_hint: function( hint ){\n var space = this.$center().width() - ( this.hidden ? this.savedSize : 0 );\n if( space < hint ){\n if( !this.hidden ){\n this.toggle();\n this.hiddenByTool = true;\n }\n } else {\n if( this.hiddenByTool ){\n this.toggle();\n this.hiddenByTool = false;\n }\n }\n return self;\n },\n\n /** */\n force_panel : function( op ){\n if( op == 'show' ){ return this.show(); }\n if( op == 'hide' ){ return this.hide(); }\n return self;\n },\n\n toString : function(){ return 'SidePanel(' + this.id + ')'; }\n});\n\n// ----------------------------------------------------------------------------\n// TODO: side should be defined by page - not here\nvar LeftPanel = SidePanel.extend({\n id : 'left',\n});\n\nvar RightPanel = SidePanel.extend({\n id : 'right',\n});\n\n\n// ----------------------------------------------------------------------------\n/**\n *\n */\nvar CenterPanel = Backbone.View.extend( BASE_MVC.LoggableMixin ).extend({\n _logNamespace : 'layout',\n\n initialize : function( options ){\n this.log( this + '.initialize:', options );\n /** previous view contained in the center panel - cached for removal later */\n this.prev = null;\n },\n\n render : function(){\n this.log( this + '.render:' );\n this.$el.html( this.template() );\n // ?: doesn't work/listen in events map\n this.$( '#galaxy_main' ).on( 'load', _.bind( this._iframeChangeHandler, this ) );\n },\n\n /** */\n _iframeChangeHandler : function( ev ){\n var iframe = ev.currentTarget;\n var location = iframe.contentWindow && iframe.contentWindow.location;\n if( location && location.host ){\n // show the iframe and hide MVCview div, remove any views in the MVCview div\n $( iframe ).show();\n if( this.prev ){\n this.prev.remove();\n }\n this.$( '#center-panel' ).hide();\n // TODO: move to Galaxy\n Galaxy.trigger( 'galaxy_main:load', {\n fullpath: location.pathname + location.search + location.hash,\n pathname: location.pathname,\n search : location.search,\n hash : location.hash\n });\n }\n },\n\n /** */\n display: function( view ){\n // we need to display an MVC view: hide the iframe and show the other center panel\n // first checking for any onbeforeunload handlers on the iframe\n var contentWindow = this.$( '#galaxy_main' )[ 0 ].contentWindow || {};\n var message = contentWindow.onbeforeunload && contentWindow.onbeforeunload();\n if ( !message || confirm( message ) ) {\n contentWindow.onbeforeunload = undefined;\n // remove any previous views\n if( this.prev ){\n this.prev.remove();\n }\n this.prev = view;\n this.$( '#galaxy_main' ).attr( 'src', 'about:blank' ).hide();\n this.$( '#center-panel' ).scrollTop( 0 ).append( view.$el ).show();\n Galaxy.trigger( 'center-panel:load', view );\n\n } else {\n if( view ){\n view.remove();\n }\n }\n },\n\n template: function(){\n return [\n //TODO: remove inline styling\n '
',\n '\"\n + \"
\",\n \n editorStyles: [],\n\n toolsHtml: \"
\"\n + \"

{Tools}

\"\n + \"
    \"\n + WYMeditor.TOOLS_ITEMS\n + \"
\"\n + \"
\",\n \n toolsItemHtml: \"
  • \"\n + WYMeditor.TOOL_TITLE\n + \"
  • \",\n\n toolsItems: [\n {'name': 'Bold', 'title': 'Strong', 'css': 'wym_tools_strong'}, \n {'name': 'Italic', 'title': 'Emphasis', 'css': 'wym_tools_emphasis'},\n {'name': 'Superscript', 'title': 'Superscript',\n 'css': 'wym_tools_superscript'},\n {'name': 'Subscript', 'title': 'Subscript',\n 'css': 'wym_tools_subscript'},\n {'name': 'InsertOrderedList', 'title': 'Ordered_List',\n 'css': 'wym_tools_ordered_list'},\n {'name': 'InsertUnorderedList', 'title': 'Unordered_List',\n 'css': 'wym_tools_unordered_list'},\n {'name': 'Indent', 'title': 'Indent', 'css': 'wym_tools_indent'},\n {'name': 'Outdent', 'title': 'Outdent', 'css': 'wym_tools_outdent'},\n {'name': 'Undo', 'title': 'Undo', 'css': 'wym_tools_undo'},\n {'name': 'Redo', 'title': 'Redo', 'css': 'wym_tools_redo'},\n {'name': 'CreateLink', 'title': 'Link', 'css': 'wym_tools_link'},\n {'name': 'Unlink', 'title': 'Unlink', 'css': 'wym_tools_unlink'},\n {'name': 'InsertImage', 'title': 'Image', 'css': 'wym_tools_image'},\n {'name': 'InsertTable', 'title': 'Table', 'css': 'wym_tools_table'},\n {'name': 'Paste', 'title': 'Paste_From_Word',\n 'css': 'wym_tools_paste'},\n {'name': 'ToggleHtml', 'title': 'HTML', 'css': 'wym_tools_html'},\n {'name': 'Preview', 'title': 'Preview', 'css': 'wym_tools_preview'}\n ],\n\n containersHtml: \"
    \"\n + \"

    {Containers}

    \"\n + \"
      \"\n + WYMeditor.CONTAINERS_ITEMS\n + \"
    \"\n + \"
    \",\n \n containersItemHtml:\"
  • \"\n + \"\"\n + WYMeditor.CONTAINER_TITLE\n + \"
  • \",\n \n containersItems: [\n {'name': 'P', 'title': 'Paragraph', 'css': 'wym_containers_p'},\n {'name': 'H1', 'title': 'Heading_1', 'css': 'wym_containers_h1'},\n {'name': 'H2', 'title': 'Heading_2', 'css': 'wym_containers_h2'},\n {'name': 'H3', 'title': 'Heading_3', 'css': 'wym_containers_h3'},\n {'name': 'H4', 'title': 'Heading_4', 'css': 'wym_containers_h4'},\n {'name': 'H5', 'title': 'Heading_5', 'css': 'wym_containers_h5'},\n {'name': 'H6', 'title': 'Heading_6', 'css': 'wym_containers_h6'},\n {'name': 'PRE', 'title': 'Preformatted', 'css': 'wym_containers_pre'},\n {'name': 'BLOCKQUOTE', 'title': 'Blockquote',\n 'css': 'wym_containers_blockquote'},\n {'name': 'TH', 'title': 'Table_Header', 'css': 'wym_containers_th'}\n ],\n\n classesHtml: \"
    \"\n + \"

    {Classes}

      \"\n + WYMeditor.CLASSES_ITEMS\n + \"
    \",\n\n classesItemHtml: \"
  • \"\n + WYMeditor.CLASS_TITLE\n + \"
  • \",\n\n classesItems: [],\n\n statusHtml: \"
    \"\n + \"

    {Status}

    \"\n + \"
    \",\n\n htmlHtml: \"
    \"\n + \"

    {Source_Code}

    \"\n + \"\"\n + \"
    \",\n\n boxSelector: \".wym_box\",\n toolsSelector: \".wym_tools\",\n toolsListSelector: \" ul\",\n containersSelector:\".wym_containers\",\n classesSelector: \".wym_classes\",\n htmlSelector: \".wym_html\",\n iframeSelector: \".wym_iframe iframe\",\n iframeBodySelector:\".wym_iframe\",\n statusSelector: \".wym_status\",\n toolSelector: \".wym_tools a\",\n containerSelector: \".wym_containers a\",\n classSelector: \".wym_classes a\",\n htmlValSelector: \".wym_html_val\",\n \n hrefSelector: \".wym_href\",\n srcSelector: \".wym_src\",\n titleSelector: \".wym_title\",\n altSelector: \".wym_alt\",\n textSelector: \".wym_text\",\n \n rowsSelector: \".wym_rows\",\n colsSelector: \".wym_cols\",\n captionSelector: \".wym_caption\",\n summarySelector: \".wym_summary\",\n \n submitSelector: \".wym_submit\",\n cancelSelector: \".wym_cancel\",\n previewSelector: \"\",\n \n dialogTypeSelector: \".wym_dialog_type\",\n dialogLinkSelector: \".wym_dialog_link\",\n dialogImageSelector: \".wym_dialog_image\",\n dialogTableSelector: \".wym_dialog_table\",\n dialogPasteSelector: \".wym_dialog_paste\",\n dialogPreviewSelector: \".wym_dialog_preview\",\n \n updateSelector: \".wymupdate\",\n updateEvent: \"click\",\n \n dialogFeatures: \"menubar=no,titlebar=no,toolbar=no,resizable=no\"\n + \",width=560,height=300,top=0,left=0\",\n dialogFeaturesPreview: \"menubar=no,titlebar=no,toolbar=no,resizable=no\"\n + \",scrollbars=yes,width=560,height=300,top=0,left=0\",\n\n dialogHtml: \"\"\n + \"\"\n + \"\"\n + \"\"\n + WYMeditor.DIALOG_TITLE\n + \"\"\n + \"\"\n + \"\"\n + \"\"\n + WYMeditor.DIALOG_BODY\n + \"\",\n \n dialogLinkHtml: \"\"\n + \"
    \"\n + \"
    \"\n + \"\"\n + \"{Link}\"\n + \"
    \"\n + \"\"\n + \"\"\n + \"
    \"\n + \"
    \"\n + \"\"\n + \"\"\n + \"
    \"\n + \"
    \"\n + \"\"\n + \"\"\n + \"
    \"\n + \"
    \"\n + \"
    \"\n + \"\",\n \n dialogImageHtml: \"\"\n + \"
    \"\n + \"
    \"\n + \"\"\n + \"{Image}\"\n + \"
    \"\n + \"\"\n + \"\"\n + \"
    \"\n + \"
    \"\n + \"\"\n + \"\"\n + \"
    \"\n + \"
    \"\n + \"\"\n + \"\"\n + \"
    \"\n + \"
    \"\n + \"\"\n + \"\"\n + \"
    \"\n + \"
    \"\n + \"
    \"\n + \"\",\n \n dialogTableHtml: \"\"\n + \"
    \"\n + \"
    \"\n + \"\"\n + \"{Table}\"\n + \"
    \"\n + \"\"\n + \"\"\n + \"
    \"\n + \"
    \"\n + \"\"\n + \"\"\n + \"
    \"\n + \"
    \"\n + \"\"\n + \"\"\n + \"
    \"\n + \"
    \"\n + \"\"\n + \"\"\n + \"
    \"\n + \"
    \"\n + \"\"\n + \"\"\n + \"
    \"\n + \"
    \"\n + \"
    \"\n + \"\",\n\n dialogPasteHtml: \"\"\n + \"
    \"\n + \"\"\n + \"
    \"\n + \"{Paste_From_Word}\"\n + \"
    \"\n + \"\"\n + \"
    \"\n + \"
    \"\n + \"\"\n + \"\"\n + \"
    \"\n + \"
    \"\n + \"
    \"\n + \"\",\n\n dialogPreviewHtml: \"\",\n \n dialogStyles: [],\n\n stringDelimiterLeft: \"{\",\n stringDelimiterRight:\"}\",\n \n preInit: null,\n preBind: null,\n postInit: null,\n \n preInitDialog: null,\n postInitDialog: null\n\n }, options);\n\n return this.each(function() {\n\n new WYMeditor.editor(jQuery(this),options);\n });\n};\n\n/* @name extend\n * @description Returns the WYMeditor instance based on its index\n */\njQuery.extend({\n wymeditors: function(i) {\n return (WYMeditor.INSTANCES[i]);\n }\n});\n\n\n/********** WYMeditor **********/\n\n/* @name Wymeditor\n * @description WYMeditor class\n */\n\n/* @name init\n * @description Initializes a WYMeditor instance\n */\nWYMeditor.editor.prototype.init = function() {\n\n //load subclass - browser specific\n //unsupported browsers: do nothing\n if (jQuery.browser.msie) {\n var WymClass = new WYMeditor.WymClassExplorer(this);\n }\n else if (jQuery.browser.mozilla) {\n var WymClass = new WYMeditor.WymClassMozilla(this);\n }\n else if (jQuery.browser.opera) {\n var WymClass = new WYMeditor.WymClassOpera(this);\n }\n // Galaxy HACK: add Chrome to browser detection; this is fixed in later versions of WYMEditor.\n else if (jQuery.browser.safari || jQuery.browser.chrome) {\n var WymClass = new WYMeditor.WymClassSafari(this);\n }\n \n if(WymClass) {\n \n if(jQuery.isFunction(this._options.preInit)) this._options.preInit(this);\n\n var SaxListener = new WYMeditor.XhtmlSaxListener();\n jQuery.extend(SaxListener, WymClass);\n this.parser = new WYMeditor.XhtmlParser(SaxListener);\n \n if(this._options.styles || this._options.stylesheet){\n this.configureEditorUsingRawCss();\n }\n \n this.helper = new WYMeditor.XmlHelper();\n \n //extend the Wymeditor object\n //don't use jQuery.extend since 1.1.4\n //jQuery.extend(this, WymClass);\n for (var prop in WymClass) { this[prop] = WymClass[prop]; }\n\n //load wymbox\n this._box = jQuery(this._element).hide().after(this._options.boxHtml).next().addClass('wym_box_' + this._index);\n\n //store the instance index in wymbox and element replaced by editor instance\n //but keep it compatible with jQuery < 1.2.3, see #122\n if( jQuery.isFunction( jQuery.fn.data ) ) {\n jQuery.data(this._box.get(0), WYMeditor.WYM_INDEX, this._index);\n jQuery.data(this._element.get(0), WYMeditor.WYM_INDEX, this._index);\n }\n \n var h = WYMeditor.Helper;\n\n //construct the iframe\n var iframeHtml = this._options.iframeHtml;\n iframeHtml = h.replaceAll(iframeHtml, WYMeditor.INDEX, this._index);\n iframeHtml = h.replaceAll(iframeHtml, WYMeditor.IFRAME_BASE_PATH, this._options.iframeBasePath);\n \n //construct wymbox\n var boxHtml = jQuery(this._box).html();\n \n boxHtml = h.replaceAll(boxHtml, WYMeditor.LOGO, this._options.logoHtml);\n boxHtml = h.replaceAll(boxHtml, WYMeditor.TOOLS, this._options.toolsHtml);\n boxHtml = h.replaceAll(boxHtml, WYMeditor.CONTAINERS,this._options.containersHtml);\n boxHtml = h.replaceAll(boxHtml, WYMeditor.CLASSES, this._options.classesHtml);\n boxHtml = h.replaceAll(boxHtml, WYMeditor.HTML, this._options.htmlHtml);\n boxHtml = h.replaceAll(boxHtml, WYMeditor.IFRAME, iframeHtml);\n boxHtml = h.replaceAll(boxHtml, WYMeditor.STATUS, this._options.statusHtml);\n \n //construct tools list\n var aTools = eval(this._options.toolsItems);\n var sTools = \"\";\n\n for(var i = 0; i < aTools.length; i++) {\n var oTool = aTools[i];\n if(oTool.name && oTool.title)\n var sTool = this._options.toolsItemHtml;\n var sTool = h.replaceAll(sTool, WYMeditor.TOOL_NAME, oTool.name);\n sTool = h.replaceAll(sTool, WYMeditor.TOOL_TITLE, this._options.stringDelimiterLeft\n + oTool.title\n + this._options.stringDelimiterRight);\n sTool = h.replaceAll(sTool, WYMeditor.TOOL_CLASS, oTool.css);\n sTools += sTool;\n }\n\n boxHtml = h.replaceAll(boxHtml, WYMeditor.TOOLS_ITEMS, sTools);\n \n //construct classes list\n var aClasses = eval(this._options.classesItems);\n var sClasses = \"\";\n\n for(var i = 0; i < aClasses.length; i++) {\n var oClass = aClasses[i];\n if(oClass.name && oClass.title)\n var sClass = this._options.classesItemHtml;\n sClass = h.replaceAll(sClass, WYMeditor.CLASS_NAME, oClass.name);\n sClass = h.replaceAll(sClass, WYMeditor.CLASS_TITLE, oClass.title);\n sClasses += sClass;\n }\n\n boxHtml = h.replaceAll(boxHtml, WYMeditor.CLASSES_ITEMS, sClasses);\n \n //construct containers list\n var aContainers = eval(this._options.containersItems);\n var sContainers = \"\";\n\n for(var i = 0; i < aContainers.length; i++) {\n var oContainer = aContainers[i];\n if(oContainer.name && oContainer.title)\n var sContainer = this._options.containersItemHtml;\n sContainer = h.replaceAll(sContainer, WYMeditor.CONTAINER_NAME, oContainer.name);\n sContainer = h.replaceAll(sContainer, WYMeditor.CONTAINER_TITLE,\n this._options.stringDelimiterLeft\n + oContainer.title\n + this._options.stringDelimiterRight);\n sContainer = h.replaceAll(sContainer, WYMeditor.CONTAINER_CLASS, oContainer.css);\n sContainers += sContainer;\n }\n\n boxHtml = h.replaceAll(boxHtml, WYMeditor.CONTAINERS_ITEMS, sContainers);\n\n //l10n\n boxHtml = this.replaceStrings(boxHtml);\n \n //load html in wymbox\n jQuery(this._box).html(boxHtml);\n \n //hide the html value\n jQuery(this._box).find(this._options.htmlSelector).hide();\n \n //enable the skin\n this.loadSkin();\n \n }\n};\n\nWYMeditor.editor.prototype.bindEvents = function() {\n\n //copy the instance\n var wym = this;\n \n //handle click event on tools buttons\n jQuery(this._box).find(this._options.toolSelector).click(function() {\n wym._iframe.contentWindow.focus(); //See #154\n wym.exec(jQuery(this).attr(WYMeditor.NAME)); \n return(false);\n });\n \n //handle click event on containers buttons\n jQuery(this._box).find(this._options.containerSelector).click(function() {\n wym.container(jQuery(this).attr(WYMeditor.NAME));\n return(false);\n });\n \n //handle keyup event on html value: set the editor value\n //handle focus/blur events to check if the element has focus, see #147\n jQuery(this._box).find(this._options.htmlValSelector)\n .keyup(function() { jQuery(wym._doc.body).html(jQuery(this).val());})\n .focus(function() { jQuery(this).toggleClass('hasfocus'); })\n .blur(function() { jQuery(this).toggleClass('hasfocus'); });\n\n //handle click event on classes buttons\n jQuery(this._box).find(this._options.classSelector).click(function() {\n \n var aClasses = eval(wym._options.classesItems);\n var sName = jQuery(this).attr(WYMeditor.NAME);\n \n var oClass = WYMeditor.Helper.findByName(aClasses, sName);\n \n if(oClass) {\n var jqexpr = oClass.expr;\n wym.toggleClass(sName, jqexpr);\n }\n wym._iframe.contentWindow.focus(); //See #154\n return(false);\n });\n \n //handle event on update element\n jQuery(this._options.updateSelector)\n .bind(this._options.updateEvent, function() {\n wym.update();\n });\n};\n\nWYMeditor.editor.prototype.ready = function() {\n return(this._doc != null);\n};\n\n\n/********** METHODS **********/\n\n/* @name box\n * @description Returns the WYMeditor container\n */\nWYMeditor.editor.prototype.box = function() {\n return(this._box);\n};\n\n/* @name html\n * @description Get/Set the html value\n */\nWYMeditor.editor.prototype.html = function(html) {\n\n if(typeof html === 'string') jQuery(this._doc.body).html(html);\n else return(jQuery(this._doc.body).html());\n};\n\n/* @name xhtml\n * @description Cleans up the HTML\n */\nWYMeditor.editor.prototype.xhtml = function() {\n return this.parser.parse(this.html());\n};\n\n/* @name exec\n * @description Executes a button command\n */\nWYMeditor.editor.prototype.exec = function(cmd) {\n \n //base function for execCommand\n //open a dialog or exec\n switch(cmd) {\n case WYMeditor.CREATE_LINK:\n var container = this.container();\n if(container || this._selected_image) this.dialog(WYMeditor.DIALOG_LINK);\n break;\n \n case WYMeditor.INSERT_IMAGE:\n this.dialog(WYMeditor.DIALOG_IMAGE);\n break;\n \n case WYMeditor.INSERT_TABLE:\n this.dialog(WYMeditor.DIALOG_TABLE);\n break;\n \n case WYMeditor.PASTE:\n this.dialog(WYMeditor.DIALOG_PASTE);\n break;\n \n case WYMeditor.TOGGLE_HTML:\n this.update();\n this.toggleHtml();\n\n //partially fixes #121 when the user manually inserts an image\n if(!jQuery(this._box).find(this._options.htmlSelector).is(':visible'))\n this.listen();\n break;\n \n case WYMeditor.PREVIEW:\n this.dialog(WYMeditor.PREVIEW, this._options.dialogFeaturesPreview);\n break;\n \n default:\n this._exec(cmd);\n break;\n }\n};\n\n/* @name container\n * @description Get/Set the selected container\n */\nWYMeditor.editor.prototype.container = function(sType) {\n\n if(sType) {\n \n var container = null;\n \n if(sType.toLowerCase() == WYMeditor.TH) {\n \n container = this.container();\n \n //find the TD or TH container\n switch(container.tagName.toLowerCase()) {\n \n case WYMeditor.TD: case WYMeditor.TH:\n break;\n default:\n var aTypes = new Array(WYMeditor.TD,WYMeditor.TH);\n container = this.findUp(this.container(), aTypes);\n break;\n }\n \n //if it exists, switch\n if(container!=null) {\n \n sType = (container.tagName.toLowerCase() == WYMeditor.TD)? WYMeditor.TH: WYMeditor.TD;\n this.switchTo(container,sType);\n this.update();\n }\n } else {\n \n //set the container type\n var aTypes=new Array(WYMeditor.P,WYMeditor.H1,WYMeditor.H2,WYMeditor.H3,WYMeditor.H4,WYMeditor.H5,\n WYMeditor.H6,WYMeditor.PRE,WYMeditor.BLOCKQUOTE);\n container = this.findUp(this.container(), aTypes);\n \n if(container) {\n \n var newNode = null;\n \n //blockquotes must contain a block level element\n if(sType.toLowerCase() == WYMeditor.BLOCKQUOTE) {\n \n var blockquote = this.findUp(this.container(), WYMeditor.BLOCKQUOTE);\n \n if(blockquote == null) {\n \n newNode = this._doc.createElement(sType);\n container.parentNode.insertBefore(newNode,container);\n newNode.appendChild(container);\n this.setFocusToNode(newNode.firstChild);\n \n } else {\n \n var nodes = blockquote.childNodes;\n var lgt = nodes.length;\n var firstNode = null;\n \n if(lgt > 0) firstNode = nodes.item(0);\n for(var x=0; x= 0; x--) {\n sTmp = aP[x];\n //simple newlines are replaced by a break\n sTmp = sTmp.replace(rExp, \"
    \");\n jQuery(container).after(\"

    \" + sTmp + \"

    \");\n }\n } else {\n for(x = 0; x < aP.length; x++) {\n sTmp = aP[x];\n //simple newlines are replaced by a break\n sTmp = sTmp.replace(rExp, \"
    \");\n jQuery(this._doc.body).append(\"

    \" + sTmp + \"

    \");\n }\n \n }\n};\n\nWYMeditor.editor.prototype.insert = function(html) {\n // Do we have a selection?\n if (this._iframe.contentWindow.getSelection().focusNode != null) {\n // Overwrite selection with provided html\n this._exec( WYMeditor.INSERT_HTML, html);\n } else {\n // Fall back to the internal paste function if there's no selection\n this.paste(html)\n }\n};\n\nWYMeditor.editor.prototype.wrap = function(left, right) {\n // Do we have a selection?\n if (this._iframe.contentWindow.getSelection().focusNode != null) {\n // Wrap selection with provided html\n this._exec( WYMeditor.INSERT_HTML, left + this._iframe.contentWindow.getSelection().toString() + right);\n }\n};\n\nWYMeditor.editor.prototype.unwrap = function() {\n // Do we have a selection?\n if (this._iframe.contentWindow.getSelection().focusNode != null) {\n // Unwrap selection\n this._exec( WYMeditor.INSERT_HTML, this._iframe.contentWindow.getSelection().toString() );\n }\n};\n\nWYMeditor.editor.prototype.addCssRules = function(doc, aCss) {\n var styles = doc.styleSheets[0];\n if(styles) {\n for(var i = 0; i < aCss.length; i++) {\n var oCss = aCss[i];\n if(oCss.name && oCss.css) this.addCssRule(styles, oCss);\n }\n }\n};\n\n/********** CONFIGURATION **********/\n\nWYMeditor.editor.prototype.computeBasePath = function() {\n return jQuery(jQuery.grep(jQuery('script'), function(s){\n return (s.src && s.src.match(/jquery\\.wymeditor(\\.pack|\\.min|\\.packed)?\\.js(\\?.*)?$/ ))\n })).attr('src').replace(/jquery\\.wymeditor(\\.pack|\\.min|\\.packed)?\\.js(\\?.*)?$/, '');\n};\n\nWYMeditor.editor.prototype.computeWymPath = function() {\n return jQuery(jQuery.grep(jQuery('script'), function(s){\n return (s.src && s.src.match(/jquery\\.wymeditor(\\.pack|\\.min|\\.packed)?\\.js(\\?.*)?$/ ))\n })).attr('src');\n};\n\nWYMeditor.editor.prototype.computeJqueryPath = function() {\n return jQuery(jQuery.grep(jQuery('script'), function(s){\n return (s.src && s.src.match(/jquery(-(.*)){0,1}(\\.pack|\\.min|\\.packed)?\\.js(\\?.*)?$/ ))\n })).attr('src');\n};\n\nWYMeditor.editor.prototype.computeCssPath = function() {\n return jQuery(jQuery.grep(jQuery('link'), function(s){\n return (s.href && s.href.match(/wymeditor\\/skins\\/(.*)screen\\.css(\\?.*)?$/ ))\n })).attr('href');\n};\n\nWYMeditor.editor.prototype.configureEditorUsingRawCss = function() {\n\n var CssParser = new WYMeditor.WymCssParser();\n if(this._options.stylesheet){\n CssParser.parse(jQuery.ajax({url: this._options.stylesheet,async:false}).responseText);\n }else{\n CssParser.parse(this._options.styles, false);\n }\n\n if(this._options.classesItems.length == 0) {\n this._options.classesItems = CssParser.css_settings.classesItems;\n }\n if(this._options.editorStyles.length == 0) {\n this._options.editorStyles = CssParser.css_settings.editorStyles;\n }\n if(this._options.dialogStyles.length == 0) {\n this._options.dialogStyles = CssParser.css_settings.dialogStyles;\n }\n};\n\n/********** EVENTS **********/\n\nWYMeditor.editor.prototype.listen = function() {\n\n //don't use jQuery.find() on the iframe body\n //because of MSIE + jQuery + expando issue (#JQ1143)\n //jQuery(this._doc.body).find(\"*\").bind(\"mouseup\", this.mouseup);\n \n jQuery(this._doc.body).bind(\"mousedown\", this.mousedown);\n var images = this._doc.body.getElementsByTagName(\"img\");\n for(var i=0; i < images.length; i++) {\n jQuery(images[i]).bind(\"mousedown\", this.mousedown);\n }\n};\n\nWYMeditor.editor.prototype.mousedown = function(evt) {\n \n var wym = WYMeditor.INSTANCES[this.ownerDocument.title];\n wym._selected_image = (this.tagName.toLowerCase() == WYMeditor.IMG) ? this : null;\n evt.stopPropagation();\n};\n\n/********** SKINS **********/\n\n/*\n * Function: WYMeditor.loadCss\n * Loads a stylesheet in the document.\n *\n * Parameters:\n * href - The CSS path.\n */\nWYMeditor.loadCss = function(href) {\n \n var link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n\n var head = jQuery('head').get(0);\n head.appendChild(link);\n};\n\n/*\n * Function: WYMeditor.editor.loadSkin\n * Loads the skin CSS and initialization script (if needed).\n */\nWYMeditor.editor.prototype.loadSkin = function() {\n\n //does the user want to automatically load the CSS (default: yes)?\n //we also test if it hasn't been already loaded by another instance\n //see below for a better (second) test\n if(this._options.loadSkin && !WYMeditor.SKINS[this._options.skin]) {\n\n //check if it hasn't been already loaded\n //so we don't load it more than once\n //(we check the existing elements)\n\n var found = false;\n var rExp = new RegExp(this._options.skin\n + '\\/' + WYMeditor.SKINS_DEFAULT_CSS + '$');\n\n jQuery('link').each( function() {\n if(this.href.match(rExp)) found = true;\n });\n\n //load it, using the skin path\n if(!found) WYMeditor.loadCss( this._options.skinPath\n + WYMeditor.SKINS_DEFAULT_CSS );\n }\n\n //put the classname (ex. wym_skin_default) on wym_box\n jQuery(this._box).addClass( \"wym_skin_\" + this._options.skin );\n\n //does the user want to use some JS to initialize the skin (default: yes)?\n //also check if it hasn't already been loaded by another instance\n if(this._options.initSkin && !WYMeditor.SKINS[this._options.skin]) {\n\n eval(jQuery.ajax({url:this._options.skinPath\n + WYMeditor.SKINS_DEFAULT_JS, async:false}).responseText);\n }\n\n //init the skin, if needed\n if(WYMeditor.SKINS[this._options.skin]\n && WYMeditor.SKINS[this._options.skin].init)\n WYMeditor.SKINS[this._options.skin].init(this);\n\n};\n\n\n/********** DIALOGS **********/\n\nWYMeditor.INIT_DIALOG = function(index) {\n\n var wym = window.opener.WYMeditor.INSTANCES[index];\n var doc = window.document;\n var selected = wym.selected();\n var dialogType = jQuery(wym._options.dialogTypeSelector).val();\n var sStamp = wym.uniqueStamp();\n\n switch(dialogType) {\n\n case WYMeditor.DIALOG_LINK:\n //ensure that we select the link to populate the fields\n if(selected && selected.tagName && selected.tagName.toLowerCase != WYMeditor.A)\n selected = jQuery(selected).parentsOrSelf(WYMeditor.A);\n\n //fix MSIE selection if link image has been clicked\n if(!selected && wym._selected_image)\n selected = jQuery(wym._selected_image).parentsOrSelf(WYMeditor.A);\n break;\n\n }\n\n //pre-init functions\n if(jQuery.isFunction(wym._options.preInitDialog))\n wym._options.preInitDialog(wym,window);\n\n //add css rules from options\n var styles = doc.styleSheets[0];\n var aCss = eval(wym._options.dialogStyles);\n\n wym.addCssRules(doc, aCss);\n\n //auto populate fields if selected container (e.g. A)\n if(selected) {\n jQuery(wym._options.hrefSelector).val(jQuery(selected).attr(WYMeditor.HREF));\n jQuery(wym._options.srcSelector).val(jQuery(selected).attr(WYMeditor.SRC));\n jQuery(wym._options.titleSelector).val(jQuery(selected).attr(WYMeditor.TITLE));\n jQuery(wym._options.altSelector).val(jQuery(selected).attr(WYMeditor.ALT));\n }\n\n //auto populate image fields if selected image\n if(wym._selected_image) {\n jQuery(wym._options.dialogImageSelector + \" \" + wym._options.srcSelector)\n .val(jQuery(wym._selected_image).attr(WYMeditor.SRC));\n jQuery(wym._options.dialogImageSelector + \" \" + wym._options.titleSelector)\n .val(jQuery(wym._selected_image).attr(WYMeditor.TITLE));\n jQuery(wym._options.dialogImageSelector + \" \" + wym._options.altSelector)\n .val(jQuery(wym._selected_image).attr(WYMeditor.ALT));\n }\n\n jQuery(wym._options.dialogLinkSelector + \" \"\n + wym._options.submitSelector).click(function() {\n\n var sUrl = jQuery(wym._options.hrefSelector).val();\n if(sUrl.length > 0) {\n\n wym._exec(WYMeditor.CREATE_LINK, sStamp);\n\n jQuery(\"a[href=\" + sStamp + \"]\", wym._doc.body)\n .attr(WYMeditor.HREF, sUrl)\n .attr(WYMeditor.TITLE, jQuery(wym._options.titleSelector).val());\n\n }\n window.close();\n });\n\n jQuery(wym._options.dialogImageSelector + \" \"\n + wym._options.submitSelector).click(function() {\n\n var sUrl = jQuery(wym._options.srcSelector).val();\n if(sUrl.length > 0) {\n\n wym._exec(WYMeditor.INSERT_IMAGE, sStamp);\n\n jQuery(\"img[src$=\" + sStamp + \"]\", wym._doc.body)\n .attr(WYMeditor.SRC, sUrl)\n .attr(WYMeditor.TITLE, jQuery(wym._options.titleSelector).val())\n .attr(WYMeditor.ALT, jQuery(wym._options.altSelector).val());\n }\n window.close();\n });\n\n jQuery(wym._options.dialogTableSelector + \" \"\n + wym._options.submitSelector).click(function() {\n\n var iRows = jQuery(wym._options.rowsSelector).val();\n var iCols = jQuery(wym._options.colsSelector).val();\n\n if(iRows > 0 && iCols > 0) {\n\n var table = wym._doc.createElement(WYMeditor.TABLE);\n var newRow = null;\n\t\tvar newCol = null;\n\n\t\tvar sCaption = jQuery(wym._options.captionSelector).val();\n\n\t\t//we create the caption\n\t\tvar newCaption = table.createCaption();\n\t\tnewCaption.innerHTML = sCaption;\n\n\t\t//we create the rows and cells\n\t\tfor(x=0; x
    \n* this.tag ('br', false, true)\n* # =>
    \n* this.tag ('input', jQuery({type:'text',disabled:true }) )\n* # => \n*/\nWYMeditor.XmlHelper.prototype.tag = function(name, options, open)\n{\n options = options || false;\n open = open || false;\n return '<'+name+(options ? this.tagOptions(options) : '')+(open ? '>' : ' />');\n};\n\n/*\n* @name contentTag\n* @description\n* Returns a XML block tag of type *name* surrounding the *content*. Add\n* XML attributes by passing an attributes array to *options*. For attributes\n* with no value like (disabled and readonly), give it a value of true in\n* the *options* array. You can use symbols or strings for the attribute names.\n*\n* this.contentTag ('p', 'Hello world!' )\n* # =>

    Hello world!

    \n* this.contentTag('div', this.contentTag('p', \"Hello world!\"), jQuery({class : \"strong\"}))\n* # =>

    Hello world!

    \n* this.contentTag(\"select\", options, jQuery({multiple : true}))\n* # => \n*/\nWYMeditor.XmlHelper.prototype.contentTag = function(name, content, options)\n{\n options = options || false;\n return '<'+name+(options ? this.tagOptions(options) : '')+'>'+content+'';\n};\n\n/*\n* @name cdataSection\n* @description\n* Returns a CDATA section for the given +content+. CDATA sections\n* are used to escape blocks of text containing characters which would\n* otherwise be recognized as markup. CDATA sections begin with the string\n* <![CDATA[ and } with (and may not contain) the string\n* ]]>.\n*/\nWYMeditor.XmlHelper.prototype.cdataSection = function(content)\n{\n return '';\n};\n\n\n/*\n* @name escapeOnce\n* @description\n* Returns the escaped +xml+ without affecting existing escaped entities.\n*\n* this.escapeOnce( \"1 > 2 & 3\")\n* # => \"1 > 2 & 3\"\n*/\nWYMeditor.XmlHelper.prototype.escapeOnce = function(xml)\n{\n return this._fixDoubleEscape(this.escapeEntities(xml));\n};\n\n/*\n* @name _fixDoubleEscape\n* @description\n* Fix double-escaped entities, such as &amp;, &#123;, etc.\n*/\nWYMeditor.XmlHelper.prototype._fixDoubleEscape = function(escaped)\n{\n return escaped.replace(/&([a-z]+|(#\\d+));/ig, \"&$1;\");\n};\n\n/*\n* @name tagOptions\n* @description\n* Takes an array like the one generated by Tag.parseAttributes\n* [[\"src\", \"http://www.editam.com/?a=b&c=d&f=g\"], [\"title\", \"Editam, CMS\"]]\n* or an object like {src:\"http://www.editam.com/?a=b&c=d&f=g\", title:\"Editam, CMS\"}\n* and returns a string properly escaped like\n* ' src = \"http://www.editam.com/?a=b&c=d&f=g\" title = \"Editam, <Simplified> CMS\"'\n* which is valid for strict XHTML\n*/\nWYMeditor.XmlHelper.prototype.tagOptions = function(options)\n{\n var xml = this;\n xml._formated_options = '';\n\n for (var key in options) {\n var formated_options = '';\n var value = options[key];\n if(typeof value != 'function' && value.length > 0) {\n\n if(parseInt(key) == key && typeof value == 'object'){\n key = value.shift();\n value = value.pop();\n }\n if(key != '' && value != ''){\n xml._formated_options += ' '+key+'=\"'+xml.escapeOnce(value)+'\"';\n }\n }\n }\n return xml._formated_options;\n};\n\n/*\n* @name escapeEntities\n* @description\n* Escapes XML/HTML entities <, >, & and \". If seccond parameter is set to false it\n* will not escape \". If set to true it will also escape '\n*/\nWYMeditor.XmlHelper.prototype.escapeEntities = function(string, escape_quotes)\n{\n this._entitiesDiv.innerHTML = string;\n this._entitiesDiv.textContent = string;\n var result = this._entitiesDiv.innerHTML;\n if(typeof escape_quotes == 'undefined'){\n if(escape_quotes != false) result = result.replace('\"', '"');\n if(escape_quotes == true) result = result.replace('\"', ''');\n }\n return result;\n};\n\n/*\n* Parses a string conatining tag attributes and values an returns an array formated like\n* [[\"src\", \"http://www.editam.com\"], [\"title\", \"Editam, Simplified CMS\"]]\n*/\nWYMeditor.XmlHelper.prototype.parseAttributes = function(tag_attributes)\n{\n // Use a compounded regex to match single quoted, double quoted and unquoted attribute pairs\n var result = [];\n var matches = tag_attributes.split(/((=\\s*\")(\")(\"))|((=\\s*\\')(\\')(\\'))|((=\\s*[^>\\s]*))/g);\n if(matches.toString() != tag_attributes){\n for (var k in matches) {\n var v = matches[k];\n if(typeof v != 'function' && v.length != 0){\n var re = new RegExp('(\\\\w+)\\\\s*'+v);\n if(match = tag_attributes.match(re) ){\n var value = v.replace(/^[\\s=]+/, \"\");\n var delimiter = value.charAt(0);\n delimiter = delimiter == '\"' ? '\"' : (delimiter==\"'\"?\"'\":'');\n if(delimiter != ''){\n value = delimiter == '\"' ? value.replace(/^\"|\"+$/g, '') : value.replace(/^'|'+$/g, '');\n }\n tag_attributes = tag_attributes.replace(match[0],'');\n result.push([match[1] , value]);\n }\n }\n }\n }\n return result;\n};\n\n/**\n* XhtmlValidator for validating tag attributes\n*\n* @author Bermi Ferrer - http://bermi.org\n*/\nWYMeditor.XhtmlValidator = {\n \"_attributes\":\n {\n \"core\":\n {\n \"except\":[\n \"base\",\n \"head\",\n \"html\",\n \"meta\",\n \"param\",\n \"script\",\n \"style\",\n \"title\"\n ],\n \"attributes\":[\n \"class\",\n \"id\",\n \"style\",\n \"title\",\n \"accesskey\",\n \"tabindex\"\n ]\n },\n \"language\":\n {\n \"except\":[\n \"base\",\n \"br\",\n \"hr\",\n \"iframe\",\n \"param\",\n \"script\"\n ],\n \"attributes\":\n {\n \"dir\":[\n \"ltr\",\n \"rtl\"\n ],\n \"0\":\"lang\",\n \"1\":\"xml:lang\"\n }\n },\n \"keyboard\":\n {\n \"attributes\":\n {\n \"accesskey\":/^(\\w){1}$/,\n \"tabindex\":/^(\\d)+$/\n }\n }\n },\n \"_events\":\n {\n \"window\":\n {\n \"only\":[\n \"body\"\n ],\n \"attributes\":[\n \"onload\",\n \"onunload\"\n ]\n },\n \"form\":\n {\n \"only\":[\n \"form\",\n \"input\",\n \"textarea\",\n \"select\",\n \"a\",\n \"label\",\n \"button\"\n ],\n \"attributes\":[\n \"onchange\",\n \"onsubmit\",\n \"onreset\",\n \"onselect\",\n \"onblur\",\n \"onfocus\"\n ]\n },\n \"keyboard\":\n {\n \"except\":[\n \"base\",\n \"bdo\",\n \"br\",\n \"frame\",\n \"frameset\",\n \"head\",\n \"html\",\n \"iframe\",\n \"meta\",\n \"param\",\n \"script\",\n \"style\",\n \"title\"\n ],\n \"attributes\":[\n \"onkeydown\",\n \"onkeypress\",\n \"onkeyup\"\n ]\n },\n \"mouse\":\n {\n \"except\":[\n \"base\",\n \"bdo\",\n \"br\",\n \"head\",\n \"html\",\n \"meta\",\n \"param\",\n \"script\",\n \"style\",\n \"title\"\n ],\n \"attributes\":[\n \"onclick\",\n \"ondblclick\",\n \"onmousedown\",\n \"onmousemove\",\n \"onmouseover\",\n \"onmouseout\",\n \"onmouseup\"\n ]\n }\n },\n \"_tags\":\n {\n \"a\":\n {\n \"attributes\":\n {\n \"0\":\"charset\",\n \"1\":\"coords\",\n \"2\":\"href\",\n \"3\":\"hreflang\",\n \"4\":\"name\",\n \"rel\":/^(alternate|designates|stylesheet|start|next|prev|contents|index|glossary|copyright|chapter|section|subsection|appendix|help|bookmark| |shortcut|icon)+$/,\n \"rev\":/^(alternate|designates|stylesheet|start|next|prev|contents|index|glossary|copyright|chapter|section|subsection|appendix|help|bookmark| |shortcut|icon)+$/,\n \"shape\":/^(rect|rectangle|circ|circle|poly|polygon)$/,\n \"5\":\"type\"\n }\n },\n \"0\":\"abbr\",\n \"1\":\"acronym\",\n \"2\":\"address\",\n \"area\":\n {\n \"attributes\":\n {\n \"0\":\"alt\",\n \"1\":\"coords\",\n \"2\":\"href\",\n \"nohref\":/^(true|false)$/,\n \"shape\":/^(rect|rectangle|circ|circle|poly|polygon)$/\n },\n \"required\":[\n \"alt\"\n ]\n },\n \"3\":\"b\",\n \"base\":\n {\n \"attributes\":[\n \"href\"\n ],\n \"required\":[\n \"href\"\n ]\n },\n \"bdo\":\n {\n \"attributes\":\n {\n \"dir\":/^(ltr|rtl)$/\n },\n \"required\":[\n \"dir\"\n ]\n },\n \"4\":\"big\",\n \"blockquote\":\n {\n \"attributes\":[\n \"cite\"\n ]\n },\n \"5\":\"body\",\n \"6\":\"br\",\n \"button\":\n {\n \"attributes\":\n {\n \"disabled\":/^(disabled)$/,\n \"type\":/^(button|reset|submit)$/,\n \"0\":\"value\"\n },\n \"inside\":\"form\"\n },\n \"7\":\"caption\",\n \"8\":\"cite\",\n \"9\":\"code\",\n \"col\":\n {\n \"attributes\":\n {\n \"align\":/^(right|left|center|justify)$/,\n \"0\":\"char\",\n \"1\":\"charoff\",\n \"span\":/^(\\d)+$/,\n \"valign\":/^(top|middle|bottom|baseline)$/,\n \"2\":\"width\"\n },\n \"inside\":\"colgroup\"\n },\n \"colgroup\":\n {\n \"attributes\":\n {\n \"align\":/^(right|left|center|justify)$/,\n \"0\":\"char\",\n \"1\":\"charoff\",\n \"span\":/^(\\d)+$/,\n \"valign\":/^(top|middle|bottom|baseline)$/,\n \"2\":\"width\"\n }\n },\n \"10\":\"dd\",\n \"del\":\n {\n \"attributes\":\n {\n \"0\":\"cite\",\n \"datetime\":/^([0-9]){8}/\n }\n },\n \"11\":\"div\",\n \"12\":\"dfn\",\n \"13\":\"dl\",\n \"14\":\"dt\",\n \"15\":\"em\",\n \"fieldset\":\n {\n \"inside\":\"form\"\n },\n \"form\":\n {\n \"attributes\":\n {\n \"0\":\"action\",\n \"1\":\"accept\",\n \"2\":\"accept-charset\",\n \"3\":\"enctype\",\n \"method\":/^(get|post)$/\n },\n \"required\":[\n \"action\"\n ]\n },\n \"head\":\n {\n \"attributes\":[\n \"profile\"\n ]\n },\n \"16\":\"h1\",\n \"17\":\"h2\",\n \"18\":\"h3\",\n \"19\":\"h4\",\n \"20\":\"h5\",\n \"21\":\"h6\",\n \"22\":\"hr\",\n \"html\":\n {\n \"attributes\":[\n \"xmlns\"\n ]\n },\n \"23\":\"i\",\n \"img\":\n {\n \"attributes\":[\n \"alt\",\n \"src\",\n \"height\",\n \"ismap\",\n \"longdesc\",\n \"usemap\",\n \"width\"\n ],\n \"required\":[\n \"alt\",\n \"src\"\n ]\n },\n \"input\":\n {\n \"attributes\":\n {\n \"0\":\"accept\",\n \"1\":\"alt\",\n \"checked\":/^(checked)$/,\n \"disabled\":/^(disabled)$/,\n \"maxlength\":/^(\\d)+$/,\n \"2\":\"name\",\n \"readonly\":/^(readonly)$/,\n \"size\":/^(\\d)+$/,\n \"3\":\"src\",\n \"type\":/^(button|checkbox|file|hidden|image|password|radio|reset|submit|text)$/,\n \"4\":\"value\"\n },\n \"inside\":\"form\"\n },\n \"ins\":\n {\n \"attributes\":\n {\n \"0\":\"cite\",\n \"datetime\":/^([0-9]){8}/\n }\n },\n \"24\":\"kbd\",\n \"label\":\n {\n \"attributes\":[\n \"for\"\n ],\n \"inside\":\"form\"\n },\n \"25\":\"legend\",\n \"26\":\"li\",\n \"link\":\n {\n \"attributes\":\n {\n \"0\":\"charset\",\n \"1\":\"href\",\n \"2\":\"hreflang\",\n \"media\":/^(all|braille|print|projection|screen|speech|,|;| )+$/i,\n //next comment line required by Opera!\n /*\"rel\":/^(alternate|appendix|bookmark|chapter|contents|copyright|glossary|help|home|index|next|prev|section|start|stylesheet|subsection| |shortcut|icon)+$/i,*/\n \"rel\":/^(alternate|appendix|bookmark|chapter|contents|copyright|glossary|help|home|index|next|prev|section|start|stylesheet|subsection| |shortcut|icon)+$/i,\n \"rev\":/^(alternate|appendix|bookmark|chapter|contents|copyright|glossary|help|home|index|next|prev|section|start|stylesheet|subsection| |shortcut|icon)+$/i,\n \"3\":\"type\"\n },\n \"inside\":\"head\"\n },\n \"map\":\n {\n \"attributes\":[\n \"id\",\n \"name\"\n ],\n \"required\":[\n \"id\"\n ]\n },\n \"meta\":\n {\n \"attributes\":\n {\n \"0\":\"content\",\n \"http-equiv\":/^(content\\-type|expires|refresh|set\\-cookie)$/i,\n \"1\":\"name\",\n \"2\":\"scheme\"\n },\n \"required\":[\n \"content\"\n ]\n },\n \"27\":\"noscript\",\n \"object\":\n {\n \"attributes\":[\n \"archive\",\n \"classid\",\n \"codebase\",\n \"codetype\",\n \"data\",\n \"declare\",\n \"height\",\n \"name\",\n \"standby\",\n \"type\",\n \"usemap\",\n \"width\"\n ]\n },\n \"28\":\"ol\",\n \"optgroup\":\n {\n \"attributes\":\n {\n \"0\":\"label\",\n \"disabled\": /^(disabled)$/\n },\n \"required\":[\n \"label\"\n ]\n },\n \"option\":\n {\n \"attributes\":\n {\n \"0\":\"label\",\n \"disabled\":/^(disabled)$/,\n \"selected\":/^(selected)$/,\n \"1\":\"value\"\n },\n \"inside\":\"select\"\n },\n \"29\":\"p\",\n \"param\":\n {\n \"attributes\":\n {\n \"0\":\"type\",\n \"valuetype\":/^(data|ref|object)$/,\n \"1\":\"valuetype\",\n \"2\":\"value\"\n },\n \"required\":[\n \"name\"\n ]\n },\n \"30\":\"pre\",\n \"q\":\n {\n \"attributes\":[\n \"cite\"\n ]\n },\n \"31\":\"samp\",\n \"script\":\n {\n \"attributes\":\n {\n \"type\":/^(text\\/ecmascript|text\\/javascript|text\\/jscript|text\\/vbscript|text\\/vbs|text\\/xml)$/,\n \"0\":\"charset\",\n \"defer\":/^(defer)$/,\n \"1\":\"src\"\n },\n \"required\":[\n \"type\"\n ]\n },\n \"select\":\n {\n \"attributes\":\n {\n \"disabled\":/^(disabled)$/,\n \"multiple\":/^(multiple)$/,\n \"0\":\"name\",\n \"1\":\"size\"\n },\n \"inside\":\"form\"\n },\n \"32\":\"small\",\n \"33\":\"span\",\n \"34\":\"strong\",\n \"style\":\n {\n \"attributes\":\n {\n \"0\":\"type\",\n \"media\":/^(screen|tty|tv|projection|handheld|print|braille|aural|all)$/\n },\n \"required\":[\n \"type\"\n ]\n },\n \"35\":\"sub\",\n \"36\":\"sup\",\n \"table\":\n {\n \"attributes\":\n {\n \"0\":\"border\",\n \"1\":\"cellpadding\",\n \"2\":\"cellspacing\",\n \"frame\":/^(void|above|below|hsides|lhs|rhs|vsides|box|border)$/,\n \"rules\":/^(none|groups|rows|cols|all)$/,\n \"3\":\"summary\",\n \"4\":\"width\"\n }\n },\n \"tbody\":\n {\n \"attributes\":\n {\n \"align\":/^(right|left|center|justify)$/,\n \"0\":\"char\",\n \"1\":\"charoff\",\n \"valign\":/^(top|middle|bottom|baseline)$/\n }\n },\n \"td\":\n {\n \"attributes\":\n {\n \"0\":\"abbr\",\n \"align\":/^(left|right|center|justify|char)$/,\n \"1\":\"axis\",\n \"2\":\"char\",\n \"3\":\"charoff\",\n \"colspan\":/^(\\d)+$/,\n \"4\":\"headers\",\n \"rowspan\":/^(\\d)+$/,\n \"scope\":/^(col|colgroup|row|rowgroup)$/,\n \"valign\":/^(top|middle|bottom|baseline)$/\n }\n },\n \"textarea\":\n {\n \"attributes\":[\n \"cols\",\n \"rows\",\n \"disabled\",\n \"name\",\n \"readonly\"\n ],\n \"required\":[\n \"cols\",\n \"rows\"\n ],\n \"inside\":\"form\"\n },\n \"tfoot\":\n {\n \"attributes\":\n {\n \"align\":/^(right|left|center|justify)$/,\n \"0\":\"char\",\n \"1\":\"charoff\",\n \"valign\":/^(top|middle|bottom)$/,\n \"2\":\"baseline\"\n }\n },\n \"th\":\n {\n \"attributes\":\n {\n \"0\":\"abbr\",\n \"align\":/^(left|right|center|justify|char)$/,\n \"1\":\"axis\",\n \"2\":\"char\",\n \"3\":\"charoff\",\n \"colspan\":/^(\\d)+$/,\n \"4\":\"headers\",\n \"rowspan\":/^(\\d)+$/,\n \"scope\":/^(col|colgroup|row|rowgroup)$/,\n \"valign\":/^(top|middle|bottom|baseline)$/\n }\n },\n \"thead\":\n {\n \"attributes\":\n {\n \"align\":/^(right|left|center|justify)$/,\n \"0\":\"char\",\n \"1\":\"charoff\",\n \"valign\":/^(top|middle|bottom|baseline)$/\n }\n },\n \"37\":\"title\",\n \"tr\":\n {\n \"attributes\":\n {\n \"align\":/^(right|left|center|justify|char)$/,\n \"0\":\"char\",\n \"1\":\"charoff\",\n \"valign\":/^(top|middle|bottom|baseline)$/\n }\n },\n \"38\":\"tt\",\n \"39\":\"ul\",\n \"40\":\"var\"\n },\n\n // Temporary skiped attributes\n skiped_attributes : [],\n skiped_attribute_values : [],\n\n getValidTagAttributes: function(tag, attributes)\n {\n var valid_attributes = {};\n var possible_attributes = this.getPossibleTagAttributes(tag);\n for(var attribute in attributes) {\n var value = attributes[attribute];\n var h = WYMeditor.Helper;\n if(!h.contains(this.skiped_attributes, attribute) && !h.contains(this.skiped_attribute_values, value)){\n if (typeof value != 'function' && h.contains(possible_attributes, attribute)) {\n if (this.doesAttributeNeedsValidation(tag, attribute)) {\n if(this.validateAttribute(tag, attribute, value)){\n valid_attributes[attribute] = value;\n }\n }else{\n valid_attributes[attribute] = value;\n }\n }\n }\n }\n return valid_attributes;\n },\n getUniqueAttributesAndEventsForTag : function(tag)\n {\n var result = [];\n\n if (this._tags[tag] && this._tags[tag]['attributes']) {\n for (k in this._tags[tag]['attributes']) {\n result.push(parseInt(k) == k ? this._tags[tag]['attributes'][k] : k);\n }\n }\n return result;\n },\n getDefaultAttributesAndEventsForTags : function()\n {\n var result = [];\n for (var key in this._events){\n result.push(this._events[key]);\n }\n for (var key in this._attributes){\n result.push(this._attributes[key]);\n }\n return result;\n },\n isValidTag : function(tag)\n {\n if(this._tags[tag]){\n return true;\n }\n for(var key in this._tags){\n if(this._tags[key] == tag){\n return true;\n }\n }\n return false;\n },\n getDefaultAttributesAndEventsForTag : function(tag)\n {\n var default_attributes = [];\n if (this.isValidTag(tag)) {\n var default_attributes_and_events = this.getDefaultAttributesAndEventsForTags();\n\n for(var key in default_attributes_and_events) {\n var defaults = default_attributes_and_events[key];\n if(typeof defaults == 'object'){\n var h = WYMeditor.Helper;\n if ((defaults['except'] && h.contains(defaults['except'], tag)) || (defaults['only'] && !h.contains(defaults['only'], tag))) {\n continue;\n }\n\n var tag_defaults = defaults['attributes'] ? defaults['attributes'] : defaults['events'];\n for(var k in tag_defaults) {\n default_attributes.push(typeof tag_defaults[k] != 'string' ? k : tag_defaults[k]);\n }\n }\n }\n }\n return default_attributes;\n },\n doesAttributeNeedsValidation: function(tag, attribute)\n {\n return this._tags[tag] && ((this._tags[tag]['attributes'] && this._tags[tag]['attributes'][attribute]) || (this._tags[tag]['required'] &&\n WYMeditor.Helper.contains(this._tags[tag]['required'], attribute)));\n },\n validateAttribute : function(tag, attribute, value)\n {\n if ( this._tags[tag] &&\n (this._tags[tag]['attributes'] && this._tags[tag]['attributes'][attribute] && value.length > 0 && !value.match(this._tags[tag]['attributes'][attribute])) || // invalid format\n (this._tags[tag] && this._tags[tag]['required'] && WYMeditor.Helper.contains(this._tags[tag]['required'], attribute) && value.length == 0) // required attribute\n ) {\n return false;\n }\n return typeof this._tags[tag] != 'undefined';\n },\n getPossibleTagAttributes : function(tag)\n {\n if (!this._possible_tag_attributes) {\n this._possible_tag_attributes = {};\n }\n if (!this._possible_tag_attributes[tag]) {\n this._possible_tag_attributes[tag] = this.getUniqueAttributesAndEventsForTag(tag).concat(this.getDefaultAttributesAndEventsForTag(tag));\n }\n return this._possible_tag_attributes[tag];\n }\n};\n\n\n/**\n* Compounded regular expression. Any of\n* the contained patterns could match and\n* when one does, its label is returned.\n*\n* Constructor. Starts with no patterns.\n* @param boolean case True for case sensitive, false\n* for insensitive.\n* @access public\n* @author Marcus Baker (http://lastcraft.com)\n* @author Bermi Ferrer (http://bermi.org)\n*/\nWYMeditor.ParallelRegex = function(case_sensitive)\n{\n this._case = case_sensitive;\n this._patterns = [];\n this._labels = [];\n this._regex = null;\n return this;\n};\n\n\n/**\n* Adds a pattern with an optional label.\n* @param string pattern Perl style regex, but ( and )\n* lose the usual meaning.\n* @param string label Label of regex to be returned\n* on a match.\n* @access public\n*/\nWYMeditor.ParallelRegex.prototype.addPattern = function(pattern, label)\n{\n label = label || true;\n var count = this._patterns.length;\n this._patterns[count] = pattern;\n this._labels[count] = label;\n this._regex = null;\n};\n\n/**\n* Attempts to match all patterns at once against\n* a string.\n* @param string subject String to match against.\n*\n* @return boolean True on success.\n* @return string match First matched portion of\n* subject.\n* @access public\n*/\nWYMeditor.ParallelRegex.prototype.match = function(subject)\n{\n if (this._patterns.length == 0) {\n return [false, ''];\n }\n var matches = subject.match(this._getCompoundedRegex());\n\n if(!matches){\n return [false, ''];\n }\n var match = matches[0];\n for (var i = 1; i < matches.length; i++) {\n if (matches[i]) {\n return [this._labels[i-1], match];\n }\n }\n return [true, matches[0]];\n};\n\n/**\n* Compounds the patterns into a single\n* regular expression separated with the\n* \"or\" operator. Caches the regex.\n* Will automatically escape (, ) and / tokens.\n* @param array patterns List of patterns in order.\n* @access private\n*/\nWYMeditor.ParallelRegex.prototype._getCompoundedRegex = function()\n{\n if (this._regex == null) {\n for (var i = 0, count = this._patterns.length; i < count; i++) {\n this._patterns[i] = '(' + this._untokenizeRegex(this._tokenizeRegex(this._patterns[i]).replace(/([\\/\\(\\)])/g,'\\\\$1')) + ')';\n }\n this._regex = new RegExp(this._patterns.join(\"|\") ,this._getPerlMatchingFlags());\n }\n return this._regex;\n};\n\n/**\n* Escape lookahead/lookbehind blocks\n*/\nWYMeditor.ParallelRegex.prototype._tokenizeRegex = function(regex)\n{\n return regex.\n replace(/\\(\\?(i|m|s|x|U)\\)/, '~~~~~~Tk1\\$1~~~~~~').\n replace(/\\(\\?(\\-[i|m|s|x|U])\\)/, '~~~~~~Tk2\\$1~~~~~~').\n replace(/\\(\\?\\=(.*)\\)/, '~~~~~~Tk3\\$1~~~~~~').\n replace(/\\(\\?\\!(.*)\\)/, '~~~~~~Tk4\\$1~~~~~~').\n replace(/\\(\\?\\<\\=(.*)\\)/, '~~~~~~Tk5\\$1~~~~~~').\n replace(/\\(\\?\\<\\!(.*)\\)/, '~~~~~~Tk6\\$1~~~~~~').\n replace(/\\(\\?\\:(.*)\\)/, '~~~~~~Tk7\\$1~~~~~~');\n};\n\n/**\n* Unscape lookahead/lookbehind blocks\n*/\nWYMeditor.ParallelRegex.prototype._untokenizeRegex = function(regex)\n{\n return regex.\n replace(/~~~~~~Tk1(.{1})~~~~~~/, \"(?\\$1)\").\n replace(/~~~~~~Tk2(.{2})~~~~~~/, \"(?\\$1)\").\n replace(/~~~~~~Tk3(.*)~~~~~~/, \"(?=\\$1)\").\n replace(/~~~~~~Tk4(.*)~~~~~~/, \"(?!\\$1)\").\n replace(/~~~~~~Tk5(.*)~~~~~~/, \"(?<=\\$1)\").\n replace(/~~~~~~Tk6(.*)~~~~~~/, \"(?\", 'Comment');\n};\n\nWYMeditor.XhtmlLexer.prototype.addScriptTokens = function(scope)\n{\n this.addEntryPattern(\"\", 'Script');\n};\n\nWYMeditor.XhtmlLexer.prototype.addCssTokens = function(scope)\n{\n this.addEntryPattern(\"\", 'Css');\n};\n\nWYMeditor.XhtmlLexer.prototype.addTagTokens = function(scope)\n{\n this.addSpecialPattern(\"<\\\\s*[a-z0-9:\\-]+\\\\s*>\", scope, 'OpeningTag');\n this.addEntryPattern(\"<[a-z0-9:\\-]+\"+'[\\\\\\/ \\\\\\>]+', scope, 'OpeningTag');\n this.addInTagDeclarationTokens('OpeningTag');\n\n this.addSpecialPattern(\"\", scope, 'ClosingTag');\n\n};\n\nWYMeditor.XhtmlLexer.prototype.addInTagDeclarationTokens = function(scope)\n{\n this.addSpecialPattern('\\\\s+', scope, 'Ignore');\n\n this.addAttributeTokens(scope);\n\n this.addExitPattern('/>', scope);\n this.addExitPattern('>', scope);\n\n};\n\nWYMeditor.XhtmlLexer.prototype.addAttributeTokens = function(scope)\n{\n this.addSpecialPattern(\"\\\\s*[a-z-_0-9]*:?[a-z-_0-9]+\\\\s*(?=\\=)\\\\s*\", scope, 'TagAttributes');\n\n this.addEntryPattern('=\\\\s*\"', scope, 'DoubleQuotedAttribute');\n this.addPattern(\"\\\\\\\\\\\"\", 'DoubleQuotedAttribute');\n this.addExitPattern('\"', 'DoubleQuotedAttribute');\n\n this.addEntryPattern(\"=\\\\s*'\", scope, 'SingleQuotedAttribute');\n this.addPattern(\"\\\\\\\\'\", 'SingleQuotedAttribute');\n this.addExitPattern(\"'\", 'SingleQuotedAttribute');\n\n this.addSpecialPattern('=\\\\s*[^>\\\\s]*', scope, 'UnquotedAttribute');\n};\n\n\n\n/**\n* XHTML Parser.\n*\n* This XHTML parser will trigger the events available on on\n* current SaxListener\n*\n* @author Bermi Ferrer (http://bermi.org)\n*/\nWYMeditor.XhtmlParser = function(Listener, mode)\n{\n var mode = mode || 'Text';\n this._Lexer = new WYMeditor.XhtmlLexer(this);\n this._Listener = Listener;\n this._mode = mode;\n this._matches = [];\n this._last_match = '';\n this._current_match = '';\n\n return this;\n};\n\nWYMeditor.XhtmlParser.prototype.parse = function(raw)\n{\n this._Lexer.parse(this.beforeParsing(raw));\n return this.afterParsing(this._Listener.getResult());\n};\n\nWYMeditor.XhtmlParser.prototype.beforeParsing = function(raw)\n{\n if(raw.match(/class=\"MsoNormal\"/) || raw.match(/ns = \"urn:schemas-microsoft-com/)){\n // Usefull for cleaning up content pasted from other sources (MSWord)\n this._Listener.avoidStylingTagsAndAttributes();\n }\n return this._Listener.beforeParsing(raw);\n};\n\nWYMeditor.XhtmlParser.prototype.afterParsing = function(parsed)\n{\n if(this._Listener._avoiding_tags_implicitly){\n this._Listener.allowStylingTagsAndAttributes();\n }\n return this._Listener.afterParsing(parsed);\n};\n\n\nWYMeditor.XhtmlParser.prototype.Ignore = function(match, state)\n{\n return true;\n};\n\nWYMeditor.XhtmlParser.prototype.Text = function(text)\n{\n this._Listener.addContent(text);\n return true;\n};\n\nWYMeditor.XhtmlParser.prototype.Comment = function(match, status)\n{\n return this._addNonTagBlock(match, status, 'addComment');\n};\n\nWYMeditor.XhtmlParser.prototype.Script = function(match, status)\n{\n return this._addNonTagBlock(match, status, 'addScript');\n};\n\nWYMeditor.XhtmlParser.prototype.Css = function(match, status)\n{\n return this._addNonTagBlock(match, status, 'addCss');\n};\n\nWYMeditor.XhtmlParser.prototype._addNonTagBlock = function(match, state, type)\n{\n switch (state){\n case WYMeditor.LEXER_ENTER:\n this._non_tag = match;\n break;\n case WYMeditor.LEXER_UNMATCHED:\n this._non_tag += match;\n break;\n case WYMeditor.LEXER_EXIT:\n switch(type) {\n case 'addComment':\n this._Listener.addComment(this._non_tag+match);\n break;\n case 'addScript':\n this._Listener.addScript(this._non_tag+match);\n break;\n case 'addCss':\n this._Listener.addCss(this._non_tag+match);\n break;\n }\n }\n return true;\n};\n\nWYMeditor.XhtmlParser.prototype.OpeningTag = function(match, state)\n{\n switch (state){\n case WYMeditor.LEXER_ENTER:\n this._tag = this.normalizeTag(match);\n this._tag_attributes = {};\n break;\n case WYMeditor.LEXER_SPECIAL:\n this._callOpenTagListener(this.normalizeTag(match));\n break;\n case WYMeditor.LEXER_EXIT:\n this._callOpenTagListener(this._tag, this._tag_attributes);\n }\n return true;\n};\n\nWYMeditor.XhtmlParser.prototype.ClosingTag = function(match, state)\n{\n this._callCloseTagListener(this.normalizeTag(match));\n return true;\n};\n\nWYMeditor.XhtmlParser.prototype._callOpenTagListener = function(tag, attributes)\n{\n var attributes = attributes || {};\n this.autoCloseUnclosedBeforeNewOpening(tag);\n\n if(this._Listener.isBlockTag(tag)){\n this._Listener._tag_stack.push(tag);\n this._Listener.fixNestingBeforeOpeningBlockTag(tag, attributes);\n this._Listener.openBlockTag(tag, attributes);\n this._increaseOpenTagCounter(tag);\n }else if(this._Listener.isInlineTag(tag)){\n this._Listener.inlineTag(tag, attributes);\n }else{\n this._Listener.openUnknownTag(tag, attributes);\n this._increaseOpenTagCounter(tag);\n }\n this._Listener.last_tag = tag;\n this._Listener.last_tag_opened = true;\n this._Listener.last_tag_attributes = attributes;\n};\n\nWYMeditor.XhtmlParser.prototype._callCloseTagListener = function(tag)\n{\n if(this._decreaseOpenTagCounter(tag)){\n this.autoCloseUnclosedBeforeTagClosing(tag);\n\n if(this._Listener.isBlockTag(tag)){\n var expected_tag = this._Listener._tag_stack.pop();\n if(expected_tag == false){\n return;\n }else if(expected_tag != tag){\n tag = expected_tag;\n }\n this._Listener.closeBlockTag(tag);\n }else{\n this._Listener.closeUnknownTag(tag);\n }\n }else{\n this._Listener.closeUnopenedTag(tag);\n }\n this._Listener.last_tag = tag;\n this._Listener.last_tag_opened = false;\n};\n\nWYMeditor.XhtmlParser.prototype._increaseOpenTagCounter = function(tag)\n{\n this._Listener._open_tags[tag] = this._Listener._open_tags[tag] || 0;\n this._Listener._open_tags[tag]++;\n};\n\nWYMeditor.XhtmlParser.prototype._decreaseOpenTagCounter = function(tag)\n{\n if(this._Listener._open_tags[tag]){\n this._Listener._open_tags[tag]--;\n if(this._Listener._open_tags[tag] == 0){\n this._Listener._open_tags[tag] = undefined;\n }\n return true;\n }\n return false;\n};\n\nWYMeditor.XhtmlParser.prototype.autoCloseUnclosedBeforeNewOpening = function(new_tag)\n{\n this._autoCloseUnclosed(new_tag, false);\n};\n\nWYMeditor.XhtmlParser.prototype.autoCloseUnclosedBeforeTagClosing = function(tag)\n{\n this._autoCloseUnclosed(tag, true);\n};\n\nWYMeditor.XhtmlParser.prototype._autoCloseUnclosed = function(new_tag, closing)\n{\n var closing = closing || false;\n if(this._Listener._open_tags){\n for (var tag in this._Listener._open_tags) {\n var counter = this._Listener._open_tags[tag];\n if(counter > 0 && this._Listener.shouldCloseTagAutomatically(tag, new_tag, closing)){\n this._callCloseTagListener(tag, true);\n }\n }\n }\n};\n\nWYMeditor.XhtmlParser.prototype.getTagReplacements = function()\n{\n return this._Listener.getTagReplacements();\n};\n\nWYMeditor.XhtmlParser.prototype.normalizeTag = function(tag)\n{\n tag = tag.replace(/^([\\s<\\/>]*)|([\\s<\\/>]*)$/gm,'').toLowerCase();\n var tags = this._Listener.getTagReplacements();\n if(tags[tag]){\n return tags[tag];\n }\n return tag;\n};\n\nWYMeditor.XhtmlParser.prototype.TagAttributes = function(match, state)\n{\n if(WYMeditor.LEXER_SPECIAL == state){\n this._current_attribute = match;\n }\n return true;\n};\n\nWYMeditor.XhtmlParser.prototype.DoubleQuotedAttribute = function(match, state)\n{\n if(WYMeditor.LEXER_UNMATCHED == state){\n this._tag_attributes[this._current_attribute] = match;\n }\n return true;\n};\n\nWYMeditor.XhtmlParser.prototype.SingleQuotedAttribute = function(match, state)\n{\n if(WYMeditor.LEXER_UNMATCHED == state){\n this._tag_attributes[this._current_attribute] = match;\n }\n return true;\n};\n\nWYMeditor.XhtmlParser.prototype.UnquotedAttribute = function(match, state)\n{\n this._tag_attributes[this._current_attribute] = match.replace(/^=/,'');\n return true;\n};\n\n\n\n/**\n* XHTML Sax parser.\n*\n* @author Bermi Ferrer (http://bermi.org)\n*/\nWYMeditor.XhtmlSaxListener = function()\n{\n this.output = '';\n this.helper = new WYMeditor.XmlHelper();\n this._open_tags = {};\n this.validator = WYMeditor.XhtmlValidator;\n this._tag_stack = [];\n this.avoided_tags = [];\n\n this.entities = {\n ' ':' ','¡':'¡','¢':'¢',\n '£':'£','¤':'¤','¥':'¥',\n '¦':'¦','§':'§','¨':'¨',\n '©':'©','ª':'ª','«':'«',\n '¬':'¬','­':'­','®':'®',\n '¯':'¯','°':'°','±':'±',\n '²':'²','³':'³','´':'´',\n 'µ':'µ','¶':'¶','·':'·',\n '¸':'¸','¹':'¹','º':'º',\n '»':'»','¼':'¼','½':'½',\n '¾':'¾','¿':'¿','À':'À',\n 'Á':'Á','Â':'Â','Ã':'Ã',\n 'Ä':'Ä','Å':'Å','Æ':'Æ',\n 'Ç':'Ç','È':'È','É':'É',\n 'Ê':'Ê','Ë':'Ë','Ì':'Ì',\n 'Í':'Í','Î':'Î','Ï':'Ï',\n 'Ð':'Ð','Ñ':'Ñ','Ò':'Ò',\n 'Ó':'Ó','Ô':'Ô','Õ':'Õ',\n 'Ö':'Ö','×':'×','Ø':'Ø',\n 'Ù':'Ù','Ú':'Ú','Û':'Û',\n 'Ü':'Ü','Ý':'Ý','Þ':'Þ',\n 'ß':'ß','à':'à','á':'á',\n 'â':'â','ã':'ã','ä':'ä',\n 'å':'å','æ':'æ','ç':'ç',\n 'è':'è','é':'é','ê':'ê',\n 'ë':'ë','ì':'ì','í':'í',\n 'î':'î','ï':'ï','ð':'ð',\n 'ñ':'ñ','ò':'ò','ó':'ó',\n 'ô':'ô','õ':'õ','ö':'ö',\n '÷':'÷','ø':'ø','ù':'ù',\n 'ú':'ú','û':'û','ü':'ü',\n 'ý':'ý','þ':'þ','ÿ':'ÿ',\n 'Œ':'Œ','œ':'œ','Š':'Š',\n 'š':'š','Ÿ':'Ÿ','ƒ':'ƒ',\n 'ˆ':'ˆ','˜':'˜','Α':'Α',\n 'Β':'Β','Γ':'Γ','Δ':'Δ',\n 'Ε':'Ε','Ζ':'Ζ','Η':'Η',\n 'Θ':'Θ','Ι':'Ι','Κ':'Κ',\n 'Λ':'Λ','Μ':'Μ','Ν':'Ν',\n 'Ξ':'Ξ','Ο':'Ο','Π':'Π',\n 'Ρ':'Ρ','Σ':'Σ','Τ':'Τ',\n 'Υ':'Υ','Φ':'Φ','Χ':'Χ',\n 'Ψ':'Ψ','Ω':'Ω','α':'α',\n 'β':'β','γ':'γ','δ':'δ',\n 'ε':'ε','ζ':'ζ','η':'η',\n 'θ':'θ','ι':'ι','κ':'κ',\n 'λ':'λ','μ':'μ','ν':'ν',\n 'ξ':'ξ','ο':'ο','π':'π',\n 'ρ':'ρ','ς':'ς','σ':'σ',\n 'τ':'τ','υ':'υ','φ':'φ',\n 'χ':'χ','ψ':'ψ','ω':'ω',\n 'ϑ':'ϑ','ϒ':'ϒ','ϖ':'ϖ',\n ' ':' ',' ':' ',' ':' ',\n '‌':'‌','‍':'‍','‎':'‎',\n '‏':'‏','–':'–','—':'—',\n '‘':'‘','’':'’','‚':'‚',\n '“':'“','”':'”','„':'„',\n '†':'†','‡':'‡','•':'•',\n '…':'…','‰':'‰','′':'′',\n '″':'″','‹':'‹','›':'›',\n '‾':'‾','⁄':'⁄','€':'€',\n 'ℑ':'ℑ','℘':'℘','ℜ':'ℜ',\n '™':'™','ℵ':'ℵ','←':'←',\n '↑':'↑','→':'→','↓':'↓',\n '↔':'↔','↵':'↵','⇐':'⇐',\n '⇑':'⇑','⇒':'⇒','⇓':'⇓',\n '⇔':'⇔','∀':'∀','∂':'∂',\n '∃':'∃','∅':'∅','∇':'∇',\n '∈':'∈','∉':'∉','∋':'∋',\n '∏':'∏','∑':'∑','−':'−',\n '∗':'∗','√':'√','∝':'∝',\n '∞':'∞','∠':'∠','∧':'∧',\n '∨':'∨','∩':'∩','∪':'∪',\n '∫':'∫','∴':'∴','∼':'∼',\n '≅':'≅','≈':'≈','≠':'≠',\n '≡':'≡','≤':'≤','≥':'≥',\n '⊂':'⊂','⊃':'⊃','⊄':'⊄',\n '⊆':'⊆','⊇':'⊇','⊕':'⊕',\n '⊗':'⊗','⊥':'⊥','⋅':'⋅',\n '⌈':'⌈','⌉':'⌉','⌊':'⌊',\n '⌋':'⌋','⟨':'〈','⟩':'〉',\n '◊':'◊','♠':'♠','♣':'♣',\n '♥':'♥','♦':'♦'};\n\n this.block_tags = [\"a\", \"abbr\", \"acronym\", \"address\", \"area\", \"b\",\n \"base\", \"bdo\", \"big\", \"blockquote\", \"body\", \"button\",\n \"caption\", \"cite\", \"code\", \"col\", \"colgroup\", \"dd\", \"del\", \"div\",\n \"dfn\", \"dl\", \"dt\", \"em\", \"fieldset\", \"form\", \"head\", \"h1\", \"h2\",\n \"h3\", \"h4\", \"h5\", \"h6\", \"html\", \"i\", \"ins\",\n \"kbd\", \"label\", \"legend\", \"li\", \"map\", \"noscript\",\n \"object\", \"ol\", \"optgroup\", \"option\", \"p\", \"param\", \"pre\", \"q\",\n \"samp\", \"script\", \"select\", \"small\", \"span\", \"strong\", \"style\",\n \"sub\", \"sup\", \"table\", \"tbody\", \"td\", \"textarea\", \"tfoot\", \"th\",\n \"thead\", \"title\", \"tr\", \"tt\", \"ul\", \"var\", \"extends\"];\n\n\n this.inline_tags = [\"br\", \"hr\", \"img\", \"input\"];\n\n return this;\n};\n\nWYMeditor.XhtmlSaxListener.prototype.shouldCloseTagAutomatically = function(tag, now_on_tag, closing)\n{\n var closing = closing || false;\n if(tag == 'td'){\n if((closing && now_on_tag == 'tr') || (!closing && now_on_tag == 'td')){\n return true;\n }\n }\n if(tag == 'option'){\n if((closing && now_on_tag == 'select') || (!closing && now_on_tag == 'option')){\n return true;\n }\n }\n return false;\n};\n\nWYMeditor.XhtmlSaxListener.prototype.beforeParsing = function(raw)\n{\n this.output = '';\n return raw;\n};\n\nWYMeditor.XhtmlSaxListener.prototype.afterParsing = function(xhtml)\n{\n xhtml = this.replaceNamedEntities(xhtml);\n xhtml = this.joinRepeatedEntities(xhtml);\n xhtml = this.removeEmptyTags(xhtml);\n xhtml = this.removeBrInPre(xhtml);\n return xhtml;\n};\n\nWYMeditor.XhtmlSaxListener.prototype.replaceNamedEntities = function(xhtml)\n{\n for (var entity in this.entities) {\n xhtml = xhtml.replace(new RegExp(entity, 'g'), this.entities[entity]);\n }\n return xhtml;\n};\n\nWYMeditor.XhtmlSaxListener.prototype.joinRepeatedEntities = function(xhtml)\n{\n var tags = 'em|strong|sub|sup|acronym|pre|del|address';\n return xhtml.replace(new RegExp('<\\/('+tags+')><\\\\1>' ,''),'').\n replace(new RegExp('(\\s*<('+tags+')>\\s*){2}(.*)(\\s*<\\/\\\\2>\\s*){2}' ,''),'<\\$2>\\$3<\\$2>');\n};\n\n// keep empty paragraphs\n// from: http://forum.wymeditor.org/forum/viewtopic.php?f=2&t=711#p2430\n//WYMeditor.XhtmlSaxListener.prototype.removeEmptyTags = function(xhtml)\n//{\n// return xhtml.replace(new RegExp('<('+this.block_tags.join(\"|\").replace(/\\|td/,'')\n//\t.replace(/\\|th/, '')+')>(
    | | |\\\\s)*<\\/\\\\1>' ,'g'),'');\n//};\nWYMeditor.XhtmlSaxListener.prototype.removeEmptyTags = function(xhtml)\n{\n return xhtml.replace(new RegExp('<('+this.block_tags.join(\"|\").replace(/\\|td/,'').replace(/\\|p/,'')\n\t.replace(/\\|th/, '')+')>(
    | | |\\\\s)*<\\/\\\\1>' ,'g'),'');\n};\n\nWYMeditor.XhtmlSaxListener.prototype.removeBrInPre = function(xhtml)\n{\n var matches = xhtml.match(new RegExp(']*>(.*?)<\\/pre>','gmi'));\n if(matches) {\n for(var i=0; i', 'g'), String.fromCharCode(13,10)));\n }\n }\n return xhtml;\n};\n\nWYMeditor.XhtmlSaxListener.prototype.getResult = function()\n{\n return this.output;\n};\n\nWYMeditor.XhtmlSaxListener.prototype.getTagReplacements = function()\n{\n return {'b':'strong', 'i':'em'};\n};\n\nWYMeditor.XhtmlSaxListener.prototype.addContent = function(text)\n{\n this.output += text;\n};\n\nWYMeditor.XhtmlSaxListener.prototype.addComment = function(text)\n{\n if(this.remove_comments){\n this.output += text;\n }\n};\n\nWYMeditor.XhtmlSaxListener.prototype.addScript = function(text)\n{\n if(!this.remove_scripts){\n this.output += text;\n }\n};\n\nWYMeditor.XhtmlSaxListener.prototype.addCss = function(text)\n{\n if(!this.remove_embeded_styles){\n this.output += text;\n }\n};\n\nWYMeditor.XhtmlSaxListener.prototype.openBlockTag = function(tag, attributes)\n{\n this.output += this.helper.tag(tag, this.validator.getValidTagAttributes(tag, attributes), true);\n};\n\nWYMeditor.XhtmlSaxListener.prototype.inlineTag = function(tag, attributes)\n{\n this.output += this.helper.tag(tag, this.validator.getValidTagAttributes(tag, attributes));\n};\n\nWYMeditor.XhtmlSaxListener.prototype.openUnknownTag = function(tag, attributes)\n{\n //this.output += this.helper.tag(tag, attributes, true);\n};\n\nWYMeditor.XhtmlSaxListener.prototype.closeBlockTag = function(tag)\n{\n this.output = this.output.replace(/
    $/, '')+this._getClosingTagContent('before', tag)+\"\"+this._getClosingTagContent('after', tag);\n};\n\nWYMeditor.XhtmlSaxListener.prototype.closeUnknownTag = function(tag)\n{\n //this.output += \"\";\n};\n\nWYMeditor.XhtmlSaxListener.prototype.closeUnopenedTag = function(tag)\n{\n this.output += \"\";\n};\n\nWYMeditor.XhtmlSaxListener.prototype.avoidStylingTagsAndAttributes = function()\n{\n this.avoided_tags = ['div','span'];\n this.validator.skiped_attributes = ['style'];\n this.validator.skiped_attribute_values = ['MsoNormal','main1']; // MS Word attributes for class\n this._avoiding_tags_implicitly = true;\n};\n\nWYMeditor.XhtmlSaxListener.prototype.allowStylingTagsAndAttributes = function()\n{\n this.avoided_tags = [];\n this.validator.skiped_attributes = [];\n this.validator.skiped_attribute_values = [];\n this._avoiding_tags_implicitly = false;\n};\n\nWYMeditor.XhtmlSaxListener.prototype.isBlockTag = function(tag)\n{\n return !WYMeditor.Helper.contains(this.avoided_tags, tag) && WYMeditor.Helper.contains(this.block_tags, tag);\n};\n\nWYMeditor.XhtmlSaxListener.prototype.isInlineTag = function(tag)\n{\n return !WYMeditor.Helper.contains(this.avoided_tags, tag) && WYMeditor.Helper.contains(this.inline_tags, tag);\n};\n\nWYMeditor.XhtmlSaxListener.prototype.insertContentAfterClosingTag = function(tag, content)\n{\n this._insertContentWhenClosingTag('after', tag, content);\n};\n\nWYMeditor.XhtmlSaxListener.prototype.insertContentBeforeClosingTag = function(tag, content)\n{\n this._insertContentWhenClosingTag('before', tag, content);\n};\n\nWYMeditor.XhtmlSaxListener.prototype.fixNestingBeforeOpeningBlockTag = function(tag, attributes)\n{\n if(tag != 'li' && (tag == 'ul' || tag == 'ol') && this.last_tag && !this.last_tag_opened && this.last_tag == 'li'){\n this.output = this.output.replace(/<\\/li>$/, '');\n this.insertContentAfterClosingTag(tag, '');\n }\n};\n\nWYMeditor.XhtmlSaxListener.prototype._insertContentWhenClosingTag = function(position, tag, content)\n{\n if(!this['_insert_'+position+'_closing']){\n this['_insert_'+position+'_closing'] = [];\n }\n if(!this['_insert_'+position+'_closing'][tag]){\n this['_insert_'+position+'_closing'][tag] = [];\n }\n this['_insert_'+position+'_closing'][tag].push(content);\n};\n\nWYMeditor.XhtmlSaxListener.prototype._getClosingTagContent = function(position, tag)\n{\n if( this['_insert_'+position+'_closing'] &&\n this['_insert_'+position+'_closing'][tag] &&\n this['_insert_'+position+'_closing'][tag].length > 0){\n return this['_insert_'+position+'_closing'][tag].pop();\n }\n return '';\n};\n\n\n/********** CSS PARSER **********/\n\n\nWYMeditor.WymCssLexer = function(parser, only_wym_blocks)\n{\n var only_wym_blocks = (typeof only_wym_blocks == 'undefined' ? true : only_wym_blocks);\n\n jQuery.extend(this, new WYMeditor.Lexer(parser, (only_wym_blocks?'Ignore':'WymCss')));\n\n this.mapHandler('WymCss', 'Ignore');\n\n if(only_wym_blocks == true){\n this.addEntryPattern(\"/\\\\\\x2a[<\\\\s]*WYMeditor[>\\\\s]*\\\\\\x2a/\", 'Ignore', 'WymCss');\n this.addExitPattern(\"/\\\\\\x2a[<\\/\\\\s]*WYMeditor[>\\\\s]*\\\\\\x2a/\", 'WymCss');\n }\n\n this.addSpecialPattern(\"[\\\\sa-z1-6]*\\\\\\x2e[a-z-_0-9]+\", 'WymCss', 'WymCssStyleDeclaration');\n\n this.addEntryPattern(\"/\\\\\\x2a\", 'WymCss', 'WymCssComment');\n this.addExitPattern(\"\\\\\\x2a/\", 'WymCssComment');\n\n this.addEntryPattern(\"\\x7b\", 'WymCss', 'WymCssStyle');\n this.addExitPattern(\"\\x7d\", 'WymCssStyle');\n\n this.addEntryPattern(\"/\\\\\\x2a\", 'WymCssStyle', 'WymCssFeedbackStyle');\n this.addExitPattern(\"\\\\\\x2a/\", 'WymCssFeedbackStyle');\n\n return this;\n};\n\nWYMeditor.WymCssParser = function()\n{\n this._in_style = false;\n this._has_title = false;\n this.only_wym_blocks = true;\n this.css_settings = {'classesItems':[], 'editorStyles':[], 'dialogStyles':[]};\n return this;\n};\n\nWYMeditor.WymCssParser.prototype.parse = function(raw, only_wym_blocks)\n{\n var only_wym_blocks = (typeof only_wym_blocks == 'undefined' ? this.only_wym_blocks : only_wym_blocks);\n this._Lexer = new WYMeditor.WymCssLexer(this, only_wym_blocks);\n this._Lexer.parse(raw);\n};\n\nWYMeditor.WymCssParser.prototype.Ignore = function(match, state)\n{\n return true;\n};\n\nWYMeditor.WymCssParser.prototype.WymCssComment = function(text, status)\n{\n if(text.match(/end[a-z0-9\\s]*wym[a-z0-9\\s]*/mi)){\n return false;\n }\n if(status == WYMeditor.LEXER_UNMATCHED){\n if(!this._in_style){\n this._has_title = true;\n this._current_item = {'title':WYMeditor.Helper.trim(text)};\n }else{\n if(this._current_item[this._current_element]){\n if(!this._current_item[this._current_element].expressions){\n this._current_item[this._current_element].expressions = [text];\n }else{\n this._current_item[this._current_element].expressions.push(text);\n }\n }\n }\n this._in_style = true;\n }\n return true;\n};\n\nWYMeditor.WymCssParser.prototype.WymCssStyle = function(match, status)\n{\n if(status == WYMeditor.LEXER_UNMATCHED){\n match = WYMeditor.Helper.trim(match);\n if(match != ''){\n this._current_item[this._current_element].style = match;\n }\n }else if (status == WYMeditor.LEXER_EXIT){\n this._in_style = false;\n this._has_title = false;\n this.addStyleSetting(this._current_item);\n }\n return true;\n};\n\nWYMeditor.WymCssParser.prototype.WymCssFeedbackStyle = function(match, status)\n{\n if(status == WYMeditor.LEXER_UNMATCHED){\n this._current_item[this._current_element].feedback_style = match.replace(/^([\\s\\/\\*]*)|([\\s\\/\\*]*)$/gm,'');\n }\n return true;\n};\n\nWYMeditor.WymCssParser.prototype.WymCssStyleDeclaration = function(match)\n{\n match = match.replace(/^([\\s\\.]*)|([\\s\\.*]*)$/gm, '');\n\n var tag = '';\n if(match.indexOf('.') > 0){\n var parts = match.split('.');\n this._current_element = parts[1];\n var tag = parts[0];\n }else{\n this._current_element = match;\n }\n\n if(!this._has_title){\n this._current_item = {'title':(!tag?'':tag.toUpperCase()+': ')+this._current_element};\n this._has_title = true;\n }\n\n if(!this._current_item[this._current_element]){\n this._current_item[this._current_element] = {'name':this._current_element};\n }\n if(tag){\n if(!this._current_item[this._current_element].tags){\n this._current_item[this._current_element].tags = [tag];\n }else{\n this._current_item[this._current_element].tags.push(tag);\n }\n }\n return true;\n};\n\nWYMeditor.WymCssParser.prototype.addStyleSetting = function(style_details)\n{\n for (var name in style_details){\n var details = style_details[name];\n if(typeof details == 'object' && name != 'title'){\n\n this.css_settings.classesItems.push({\n 'name': WYMeditor.Helper.trim(details.name),\n 'title': style_details.title,\n 'expr' : WYMeditor.Helper.trim((details.expressions||details.tags).join(', '))\n });\n if(details.feedback_style){\n this.css_settings.editorStyles.push({\n 'name': '.'+ WYMeditor.Helper.trim(details.name),\n 'css': details.feedback_style\n });\n }\n if(details.style){\n this.css_settings.dialogStyles.push({\n 'name': '.'+ WYMeditor.Helper.trim(details.name),\n 'css': details.style\n });\n }\n }\n }\n};\n\n/********** HELPERS **********/\n\n// Returns true if it is a text node with whitespaces only\njQuery.fn.isPhantomNode = function() {\n if (this[0].nodeType == 3)\n return !(/[^\\t\\n\\r ]/.test(this[0].data));\n\n return false;\n};\n\nWYMeditor.isPhantomNode = function(n) {\n if (n.nodeType == 3)\n return !(/[^\\t\\n\\r ]/.test(n.data));\n\n return false;\n};\n\nWYMeditor.isPhantomString = function(str) {\n return !(/[^\\t\\n\\r ]/.test(str));\n};\n\n// Returns the Parents or the node itself\n// jqexpr = a jQuery expression\njQuery.fn.parentsOrSelf = function(jqexpr) {\n var n = this;\n\n if (n[0].nodeType == 3)\n n = n.parents().slice(0,1);\n\n// if (n.is(jqexpr)) // XXX should work, but doesn't (probably a jQuery bug)\n if (n.filter(jqexpr).size() == 1)\n return n;\n else\n return n.parents(jqexpr).slice(0,1);\n};\n\n// String & array helpers\n\nWYMeditor.Helper = {\n\n //replace all instances of 'old' by 'rep' in 'str' string\n replaceAll: function(str, old, rep) {\n var rExp = new RegExp(old, \"g\");\n return(str.replace(rExp, rep));\n },\n\n //insert 'inserted' at position 'pos' in 'str' string\n insertAt: function(str, inserted, pos) {\n return(str.substr(0,pos) + inserted + str.substring(pos));\n },\n\n //trim 'str' string\n trim: function(str) {\n return str.replace(/^(\\s*)|(\\s*)$/gm,'');\n },\n\n //return true if 'arr' array contains 'elem', or false\n contains: function(arr, elem) {\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === elem) return true;\n }\n return false;\n },\n\n //return 'item' position in 'arr' array, or -1\n indexOf: function(arr, item) {\n var ret=-1;\n for(var i = 0; i < arr.length; i++) {\n if (arr[i] == item) {\n ret = i;\n break;\n }\n }\n\t return(ret);\n },\n\n //return 'item' object in 'arr' array, checking its 'name' property, or null\n findByName: function(arr, name) {\n for(var i = 0; i < arr.length; i++) {\n var item = arr[i];\n if(item.name == name) return(item);\n }\n return(null);\n }\n};\n\n\n/*\n * WYMeditor : what you see is What You Mean web-based editor\n * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/\n * Dual licensed under the MIT (MIT-license.txt)\n * and GPL (GPL-license.txt) licenses.\n *\n * For further information visit:\n * http://www.wymeditor.org/\n *\n * File Name:\n * jquery.wymeditor.explorer.js\n * MSIE specific class and functions.\n * See the documentation for more info.\n *\n * File Authors:\n * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)\n * Bermi Ferrer (wymeditor a-t bermi dotorg)\n * Frédéric Palluel-Lafleur (fpalluel a-t gmail dotcom)\n * Jonatan Lundin (jonatan.lundin _at_ gmail.com)\n */\n\nWYMeditor.WymClassExplorer = function(wym) {\n\n this._wym = wym;\n this._class = \"className\";\n this._newLine = \"\\r\\n\";\n\n};\n\nWYMeditor.WymClassExplorer.prototype.initIframe = function(iframe) {\n\n //This function is executed twice, though it is called once!\n //But MSIE needs that, otherwise designMode won't work.\n //Weird.\n \n this._iframe = iframe;\n this._doc = iframe.contentWindow.document;\n \n //add css rules from options\n var styles = this._doc.styleSheets[0];\n var aCss = eval(this._options.editorStyles);\n\n this.addCssRules(this._doc, aCss);\n\n this._doc.title = this._wym._index;\n\n //set the text direction\n jQuery('html', this._doc).attr('dir', this._options.direction);\n \n //init html value\n jQuery(this._doc.body).html(this._wym._html);\n \n //handle events\n var wym = this;\n \n this._doc.body.onfocus = function()\n {wym._doc.designMode = \"on\"; wym._doc = iframe.contentWindow.document;};\n this._doc.onbeforedeactivate = function() {wym.saveCaret();};\n this._doc.onkeyup = function() {\n wym.saveCaret();\n wym.keyup();\n };\n this._doc.onclick = function() {wym.saveCaret();};\n \n this._doc.body.onbeforepaste = function() {\n wym._iframe.contentWindow.event.returnValue = false;\n };\n \n this._doc.body.onpaste = function() {\n wym._iframe.contentWindow.event.returnValue = false;\n wym.paste(window.clipboardData.getData(\"Text\"));\n };\n \n //callback can't be executed twice, so we check\n if(this._initialized) {\n \n //pre-bind functions\n if(jQuery.isFunction(this._options.preBind)) this._options.preBind(this);\n \n //bind external events\n this._wym.bindEvents();\n \n //post-init functions\n if(jQuery.isFunction(this._options.postInit)) this._options.postInit(this);\n \n //add event listeners to doc elements, e.g. images\n this.listen();\n }\n \n this._initialized = true;\n \n //init designMode\n this._doc.designMode=\"on\";\n try{\n // (bermi's note) noticed when running unit tests on IE6\n // Is this really needed, it trigger an unexisting property on IE6\n this._doc = iframe.contentWindow.document; \n }catch(e){}\n};\n\nWYMeditor.WymClassExplorer.prototype._exec = function(cmd,param) {\n\n switch(cmd) {\n \n case WYMeditor.INDENT: case WYMeditor.OUTDENT:\n \n var container = this.findUp(this.container(), WYMeditor.LI);\n if(container) {\n var ancestor = container.parentNode.parentNode;\n if(container.parentNode.childNodes.length>1\n || ancestor.tagName.toLowerCase() == WYMeditor.OL\n || ancestor.tagName.toLowerCase() == WYMeditor.UL)\n this._doc.execCommand(cmd);\n }\n break;\n default:\n if(param) this._doc.execCommand(cmd,false,param);\n else this._doc.execCommand(cmd);\n break;\n\t}\n \n this.listen();\n};\n\nWYMeditor.WymClassExplorer.prototype.selected = function() {\n\n var caretPos = this._iframe.contentWindow.document.caretPos;\n if(caretPos!=null) {\n if(caretPos.parentElement!=undefined)\n return(caretPos.parentElement());\n }\n};\n\nWYMeditor.WymClassExplorer.prototype.saveCaret = function() {\n\n this._doc.caretPos = this._doc.selection.createRange();\n};\n\nWYMeditor.WymClassExplorer.prototype.addCssRule = function(styles, oCss) {\n\n styles.addRule(oCss.name, oCss.css);\n};\n\nWYMeditor.WymClassExplorer.prototype.insert = function(html) {\n\n // Get the current selection\n var range = this._doc.selection.createRange();\n\n // Check if the current selection is inside the editor\n if ( jQuery(range.parentElement()).parents( this._options.iframeBodySelector ).is('*') ) {\n try {\n // Overwrite selection with provided html\n range.pasteHTML(html);\n } catch (e) { }\n } else {\n // Fall back to the internal paste function if there's no selection\n this.paste(html);\n }\n};\n\nWYMeditor.WymClassExplorer.prototype.wrap = function(left, right) {\n\n // Get the current selection\n var range = this._doc.selection.createRange();\n\n // Check if the current selection is inside the editor\n if ( jQuery(range.parentElement()).parents( this._options.iframeBodySelector ).is('*') ) {\n try {\n // Overwrite selection with provided html\n range.pasteHTML(left + range.text + right);\n } catch (e) { }\n }\n};\n\nWYMeditor.WymClassExplorer.prototype.unwrap = function() {\n\n // Get the current selection\n var range = this._doc.selection.createRange();\n\n // Check if the current selection is inside the editor\n if ( jQuery(range.parentElement()).parents( this._options.iframeBodySelector ).is('*') ) {\n try {\n // Unwrap selection\n var text = range.text;\n this._exec( 'Cut' );\n range.pasteHTML( text );\n } catch (e) { }\n }\n};\n\n//keyup handler\nWYMeditor.WymClassExplorer.prototype.keyup = function() {\n this._selected_image = null;\n};\n\nWYMeditor.WymClassExplorer.prototype.setFocusToNode = function(node) {\n var range = this._doc.selection.createRange();\n range.moveToElementText(node);\n range.collapse(false);\n range.move('character',-1);\n range.select();\n node.focus();\n};\n\n/*\n * WYMeditor : what you see is What You Mean web-based editor\n * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/\n * Dual licensed under the MIT (MIT-license.txt)\n * and GPL (GPL-license.txt) licenses.\n *\n * For further information visit:\n * http://www.wymeditor.org/\n *\n * File Name:\n * jquery.wymeditor.mozilla.js\n * Gecko specific class and functions.\n * See the documentation for more info.\n *\n * File Authors:\n * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)\n * Volker Mische (vmx a-t gmx dotde)\n * Bermi Ferrer (wymeditor a-t bermi dotorg)\n * Frédéric Palluel-Lafleur (fpalluel a-t gmail dotcom)\n */\n\nWYMeditor.WymClassMozilla = function(wym) {\n\n this._wym = wym;\n this._class = \"class\";\n this._newLine = \"\\n\";\n};\n\nWYMeditor.WymClassMozilla.prototype.initIframe = function(iframe) {\n\n this._iframe = iframe;\n this._doc = iframe.contentDocument;\n \n //add css rules from options\n \n var styles = this._doc.styleSheets[0]; \n var aCss = eval(this._options.editorStyles);\n \n this.addCssRules(this._doc, aCss);\n\n this._doc.title = this._wym._index;\n\n //set the text direction\n jQuery('html', this._doc).attr('dir', this._options.direction);\n \n //init html value\n this.html(this._wym._html);\n \n //init designMode\n this.enableDesignMode();\n \n //pre-bind functions\n if(jQuery.isFunction(this._options.preBind)) this._options.preBind(this);\n \n //bind external events\n this._wym.bindEvents();\n \n //bind editor keydown events\n jQuery(this._doc).bind(\"keydown\", this.keydown);\n \n //bind editor keyup events\n jQuery(this._doc).bind(\"keyup\", this.keyup);\n \n //bind editor focus events (used to reset designmode - Gecko bug)\n jQuery(this._doc).bind(\"focus\", this.enableDesignMode);\n \n //post-init functions\n if(jQuery.isFunction(this._options.postInit)) this._options.postInit(this);\n \n //add event listeners to doc elements, e.g. images\n this.listen();\n};\n\n/* @name html\n * @description Get/Set the html value\n */\nWYMeditor.WymClassMozilla.prototype.html = function(html) {\n\n if(typeof html === 'string') {\n \n //disable designMode\n try { this._doc.designMode = \"off\"; } catch(e) { };\n \n //replace em by i and strong by bold\n //(designMode issue)\n html = html.replace(/]*)>/gi, \"\")\n .replace(/<\\/em>/gi, \"\")\n .replace(/]*)>/gi, \"\")\n .replace(/<\\/strong>/gi, \"\");\n\n //update the html body\n jQuery(this._doc.body).html(html);\n \n //re-init designMode\n this.enableDesignMode();\n }\n else return(jQuery(this._doc.body).html());\n};\n\nWYMeditor.WymClassMozilla.prototype._exec = function(cmd,param) {\n\n if(!this.selected()) return(false);\n\n switch(cmd) {\n \n case WYMeditor.INDENT: case WYMeditor.OUTDENT:\n \n var focusNode = this.selected(); \n var sel = this._iframe.contentWindow.getSelection();\n var anchorNode = sel.anchorNode;\n if(anchorNode.nodeName == \"#text\") anchorNode = anchorNode.parentNode;\n \n focusNode = this.findUp(focusNode, WYMeditor.BLOCKS);\n anchorNode = this.findUp(anchorNode, WYMeditor.BLOCKS);\n \n if(focusNode && focusNode == anchorNode\n && focusNode.tagName.toLowerCase() == WYMeditor.LI) {\n\n var ancestor = focusNode.parentNode.parentNode;\n\n if(focusNode.parentNode.childNodes.length>1\n || ancestor.tagName.toLowerCase() == WYMeditor.OL\n || ancestor.tagName.toLowerCase() == WYMeditor.UL)\n this._doc.execCommand(cmd,'',null);\n }\n\n break;\n \n default:\n\n if(param) this._doc.execCommand(cmd,'',param);\n else this._doc.execCommand(cmd,'',null);\n }\n \n //set to P if parent = BODY\n var container = this.selected();\n if(container.tagName.toLowerCase() == WYMeditor.BODY)\n this._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P);\n \n //add event handlers on doc elements\n\n this.listen();\n};\n\n/* @name selected\n * @description Returns the selected container\n */\nWYMeditor.WymClassMozilla.prototype.selected = function() {\n\n var sel = this._iframe.contentWindow.getSelection();\n var node = sel.focusNode;\n if(node) {\n if(node.nodeName == \"#text\") return(node.parentNode);\n else return(node);\n } else return(null);\n};\n\nWYMeditor.WymClassMozilla.prototype.addCssRule = function(styles, oCss) {\n\n styles.insertRule(oCss.name + \" {\" + oCss.css + \"}\",\n styles.cssRules.length);\n};\n\n\n//keydown handler, mainly used for keyboard shortcuts\nWYMeditor.WymClassMozilla.prototype.keydown = function(evt) {\n \n //'this' is the doc\n var wym = WYMeditor.INSTANCES[this.title];\n var container = null; \n\n if( evt.keyCode === WYMeditor.KEY.ENTER ){\n\tcontainer = wym.selected();\n\tif( container ){\n\t\tvar $container = $( container ),\n\t\t\t$parent = $container.parent(),\n\t\t\t$embedded = $container.parents( '.embedded-item' );\n\t\tif( $embedded.size() ){\n\t\t\t// if the cursor is in the title, add a para before\n\t\t\tvar $newNode = $( '

    ' );\n\t\t\tif( $container.hasClass( 'title' ) ){\n\t\t\t\t$embedded.before( $newNode );\n\t\t\t// if the cursor is in the content, add after\n\t\t\t} else if( $container.hasClass( 'content' ) ){\n\t\t\t\t$embedded.after( $newNode );\n\t\t\t}\n\t\t\twym.setFocusToNode( $newNode.get(0) );\n\t\t\t// prevent the default - wym's chop the text and split it up into paras\n\t\t\treturn false;\n\t\t}\n\t}\n }\n\n if(evt.ctrlKey){\n if(evt.keyCode == 66){\n //CTRL+b => STRONG\n wym._exec(WYMeditor.BOLD);\n return false;\n }\n if(evt.keyCode == 73){\n //CTRL+i => EMPHASIS\n wym._exec(WYMeditor.ITALIC);\n return false;\n }\n }\n\n else if(evt.keyCode == 13) {\n if(!evt.shiftKey){\n //fix PRE bug #73\n container = wym.selected();\n if(container && container.tagName.toLowerCase() == WYMeditor.PRE) {\n evt.preventDefault();\n wym.insert('

    ');\n }\n }\n }\n};\n\n//keyup handler, mainly used for cleanups\nWYMeditor.WymClassMozilla.prototype.keyup = function(evt) {\n\n //'this' is the doc\n var wym = WYMeditor.INSTANCES[this.title];\n\n wym._selected_image = null;\n var container = null;\n\n if(evt.keyCode == 13 && !evt.shiftKey) {\n\n //RETURN key\n //cleanup

    between paragraphs\n jQuery(wym._doc.body).children(WYMeditor.BR).remove();\n }\n\n else if(evt.keyCode != 8\n && evt.keyCode != 17\n && evt.keyCode != 46\n && evt.keyCode != 224\n && !evt.metaKey\n && !evt.ctrlKey) {\n\n //NOT BACKSPACE, NOT DELETE, NOT CTRL, NOT COMMAND\n //text nodes replaced by P\n\n container = wym.selected();\n var name = container.tagName.toLowerCase();\n\n //fix forbidden main containers\n if(\n name == \"strong\" ||\n name == \"b\" ||\n name == \"em\" ||\n name == \"i\" ||\n name == \"sub\" ||\n name == \"sup\" ||\n name == \"a\"\n\n ) name = container.parentNode.tagName.toLowerCase();\n\n if(name == WYMeditor.BODY) wym._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P);\n }\n};\n\nWYMeditor.WymClassMozilla.prototype.enableDesignMode = function() {\n if(this.designMode == \"off\") {\n try {\n this.designMode = \"on\";\n this.execCommand(\"styleWithCSS\", '', false);\n } catch(e) { }\n }\n};\n\nWYMeditor.WymClassMozilla.prototype.setFocusToNode = function(node) {\n var range = document.createRange();\n range.selectNode(node);\n var selected = this._iframe.contentWindow.getSelection();\n selected.addRange(range);\n selected.collapse(node, node.childNodes.length);\n this._iframe.contentWindow.focus();\n};\n\nWYMeditor.WymClassMozilla.prototype.openBlockTag = function(tag, attributes)\n{\n var attributes = this.validator.getValidTagAttributes(tag, attributes);\n\n // Handle Mozilla styled spans\n if(tag == 'span' && attributes.style){\n var new_tag = this.getTagForStyle(attributes.style);\n if(new_tag){\n this._tag_stack.pop();\n var tag = new_tag;\n this._tag_stack.push(new_tag);\n attributes.style = '';\n }else{\n return;\n }\n }\n\n this.output += this.helper.tag(tag, attributes, true);\n};\n\nWYMeditor.WymClassMozilla.prototype.getTagForStyle = function(style) {\n\n if(/bold/.test(style)) return 'strong';\n if(/italic/.test(style)) return 'em';\n if(/sub/.test(style)) return 'sub';\n if(/sub/.test(style)) return 'super';\n return false;\n};\n\n/*\n * WYMeditor : what you see is What You Mean web-based editor\n * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/\n * Dual licensed under the MIT (MIT-license.txt)\n * and GPL (GPL-license.txt) licenses.\n *\n * For further information visit:\n * http://www.wymeditor.org/\n *\n * File Name:\n * jquery.wymeditor.opera.js\n * Opera specific class and functions.\n * See the documentation for more info.\n *\n * File Authors:\n * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)\n */\n\nWYMeditor.WymClassOpera = function(wym) {\n\n this._wym = wym;\n this._class = \"class\";\n this._newLine = \"\\r\\n\";\n};\n\nWYMeditor.WymClassOpera.prototype.initIframe = function(iframe) {\n\n this._iframe = iframe;\n this._doc = iframe.contentWindow.document;\n\n //add css rules from options\n var styles = this._doc.styleSheets[0];\n var aCss = eval(this._options.editorStyles);\n\n this.addCssRules(this._doc, aCss);\n\n this._doc.title = this._wym._index;\n\n //set the text direction\n jQuery('html', this._doc).attr('dir', this._options.direction);\n\n //init designMode\n this._doc.designMode = \"on\";\n\n //init html value\n this.html(this._wym._html);\n\n //pre-bind functions\n if(jQuery.isFunction(this._options.preBind)) this._options.preBind(this);\n\n //bind external events\n this._wym.bindEvents();\n\n //bind editor keydown events\n jQuery(this._doc).bind(\"keydown\", this.keydown);\n\n //bind editor events\n jQuery(this._doc).bind(\"keyup\", this.keyup);\n\n //post-init functions\n if(jQuery.isFunction(this._options.postInit)) this._options.postInit(this);\n\n //add event listeners to doc elements, e.g. images\n this.listen();\n};\n\nWYMeditor.WymClassOpera.prototype._exec = function(cmd,param) {\n\n if(param) this._doc.execCommand(cmd,false,param);\n else this._doc.execCommand(cmd);\n\n this.listen();\n};\n\nWYMeditor.WymClassOpera.prototype.selected = function() {\n\n var sel=this._iframe.contentWindow.getSelection();\n var node=sel.focusNode;\n if(node) {\n if(node.nodeName==\"#text\")return(node.parentNode);\n else return(node);\n } else return(null);\n};\n\nWYMeditor.WymClassOpera.prototype.addCssRule = function(styles, oCss) {\n\n styles.insertRule(oCss.name + \" {\" + oCss.css + \"}\",\n styles.cssRules.length);\n};\n\n//keydown handler\nWYMeditor.WymClassOpera.prototype.keydown = function(evt) {\n\n //'this' is the doc\n var wym = WYMeditor.INSTANCES[this.title];\n var sel = wym._iframe.contentWindow.getSelection();\n startNode = sel.getRangeAt(0).startContainer;\n\n //Get a P instead of no container\n if(!jQuery(startNode).parentsOrSelf(\n WYMeditor.MAIN_CONTAINERS.join(\",\"))[0]\n && !jQuery(startNode).parentsOrSelf('li')\n && evt.keyCode != WYMeditor.KEY.ENTER\n && evt.keyCode != WYMeditor.KEY.LEFT\n && evt.keyCode != WYMeditor.KEY.UP\n && evt.keyCode != WYMeditor.KEY.RIGHT\n && evt.keyCode != WYMeditor.KEY.DOWN\n && evt.keyCode != WYMeditor.KEY.BACKSPACE\n && evt.keyCode != WYMeditor.KEY.DELETE)\n wym._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P);\n\n};\n\n//keyup handler\nWYMeditor.WymClassOpera.prototype.keyup = function(evt) {\n\n //'this' is the doc\n var wym = WYMeditor.INSTANCES[this.title];\n wym._selected_image = null;\n};\n\n// TODO: implement me\nWYMeditor.WymClassOpera.prototype.setFocusToNode = function(node) {\n\n};\n\n/*\n * WYMeditor : what you see is What You Mean web-based editor\n * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/\n * Dual licensed under the MIT (MIT-license.txt)\n * and GPL (GPL-license.txt) licenses.\n *\n * For further information visit:\n * http://www.wymeditor.org/\n *\n * File Name:\n * jquery.wymeditor.safari.js\n * Safari specific class and functions.\n * See the documentation for more info.\n *\n * File Authors:\n * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)\n * Scott Lewis (lewiscot a-t gmail dotcom)\n */\n\nWYMeditor.WymClassSafari = function(wym) {\n\n this._wym = wym;\n this._class = \"class\";\n this._newLine = \"\\n\";\n};\n\nWYMeditor.WymClassSafari.prototype.initIframe = function(iframe) {\n\n this._iframe = iframe;\n this._doc = iframe.contentDocument;\n\n //add css rules from options\n\n var styles = this._doc.styleSheets[0];\n var aCss = eval(this._options.editorStyles);\n\n this.addCssRules(this._doc, aCss);\n\n this._doc.title = this._wym._index;\n\n //set the text direction\n jQuery('html', this._doc).attr('dir', this._options.direction);\n\n //init designMode\n this._doc.designMode = \"on\";\n\n //init html value\n this.html(this._wym._html);\n\n //pre-bind functions\n if(jQuery.isFunction(this._options.preBind)) this._options.preBind(this);\n\n //bind external events\n this._wym.bindEvents();\n\n //bind editor keydown events\n jQuery(this._doc).bind(\"keydown\", this.keydown);\n\n //bind editor keyup events\n jQuery(this._doc).bind(\"keyup\", this.keyup);\n\n //post-init functions\n if(jQuery.isFunction(this._options.postInit)) this._options.postInit(this);\n\n //add event listeners to doc elements, e.g. images\n this.listen();\n};\n\nWYMeditor.WymClassSafari.prototype._exec = function(cmd,param) {\n\n if(!this.selected()) return(false);\n\n switch(cmd) {\n\n case WYMeditor.INDENT: case WYMeditor.OUTDENT:\n\n var focusNode = this.selected();\n var sel = this._iframe.contentWindow.getSelection();\n var anchorNode = sel.anchorNode;\n if(anchorNode.nodeName == \"#text\") anchorNode = anchorNode.parentNode;\n\n focusNode = this.findUp(focusNode, WYMeditor.BLOCKS);\n anchorNode = this.findUp(anchorNode, WYMeditor.BLOCKS);\n\n if(focusNode && focusNode == anchorNode\n && focusNode.tagName.toLowerCase() == WYMeditor.LI) {\n\n var ancestor = focusNode.parentNode.parentNode;\n\n if(focusNode.parentNode.childNodes.length>1\n || ancestor.tagName.toLowerCase() == WYMeditor.OL\n || ancestor.tagName.toLowerCase() == WYMeditor.UL)\n this._doc.execCommand(cmd,'',null);\n }\n\n break;\n\n case WYMeditor.INSERT_ORDEREDLIST: case WYMeditor.INSERT_UNORDEREDLIST:\n\n this._doc.execCommand(cmd,'',null);\n\n //Safari creates lists in e.g. paragraphs.\n //Find the container, and remove it.\n var focusNode = this.selected();\n var container = this.findUp(focusNode, WYMeditor.MAIN_CONTAINERS);\n if(container) jQuery(container).replaceWith(jQuery(container).html());\n\n break;\n\n default:\n\n if(param) this._doc.execCommand(cmd,'',param);\n else this._doc.execCommand(cmd,'',null);\n }\n\n //set to P if parent = BODY\n var container = this.selected();\n if(container && container.tagName.toLowerCase() == WYMeditor.BODY)\n this._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P);\n\n //add event handlers on doc elements\n this.listen();\n};\n\n/* @name selected\n * @description Returns the selected container\n */\nWYMeditor.WymClassSafari.prototype.selected = function() {\n\n var sel = this._iframe.contentWindow.getSelection();\n var node = sel.focusNode;\n if(node) {\n if(node.nodeName == \"#text\") return(node.parentNode);\n else return(node);\n } else return(null);\n};\n\nWYMeditor.WymClassSafari.prototype.addCssRule = function(styles, oCss) {\n\n styles.insertRule(oCss.name + \" {\" + oCss.css + \"}\",\n styles.cssRules.length);\n};\n\n\n//keydown handler, mainly used for keyboard shortcuts\nWYMeditor.WymClassSafari.prototype.keydown = function(evt) {\n\n //'this' is the doc\n var wym = WYMeditor.INSTANCES[this.title];\n\n if( evt.keyCode === WYMeditor.KEY.ENTER ){\n\tvar container = wym.selected();\n\tif( container ){\n\t\tvar $container = $( container ),\n\t\t\t$parent = $container.parent(),\n\t\t\t$embedded = $container.parents( '.embedded-item' );\n\t\tif( $embedded.size() ){\n\t\t\t// if the cursor is in the title, add a para before\n\t\t\tvar $newNode = $( '

    ' );\n\t\t\tif( $container.hasClass( 'title' ) ){\n\t\t\t\t$embedded.before( $newNode );\n\t\t\t// if the cursor is in the content, add after\n\t\t\t} else if( $container.hasClass( 'content' ) ){\n\t\t\t\t$embedded.after( $newNode );\n\t\t\t}\n\t\t\twym.setFocusToNode( $newNode.get(0) );\n\t\t\t// prevent the default - wym's chop the text and split it up into paras\n\t\t\treturn false;\n\t\t}\n\t}\n }\n \n if(evt.ctrlKey){\n if(evt.keyCode == 66){\n //CTRL+b => STRONG\n wym._exec(WYMeditor.BOLD);\n return false;\n }\n if(evt.keyCode == 73){\n //CTRL+i => EMPHASIS\n wym._exec(WYMeditor.ITALIC);\n return false;\n }\n }\n};\n\n//keyup handler, mainly used for cleanups\nWYMeditor.WymClassSafari.prototype.keyup = function(evt) {\n\n //'this' is the doc\n var wym = WYMeditor.INSTANCES[this.title];\n \n wym._selected_image = null;\n var container = null;\n\n if(evt.keyCode == 13 && !evt.shiftKey) {\n \n //RETURN key\n //cleanup

    between paragraphs\n jQuery(wym._doc.body).children(WYMeditor.BR).remove();\n \n //fix PRE bug #73\n container = wym.selected();\n if(container && container.tagName.toLowerCase() == WYMeditor.PRE)\n wym._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P); //create P after PRE\n }\n\n //fix #112\n if(evt.keyCode == 13 && evt.shiftKey) {\n wym._exec('InsertLineBreak');\n }\n \n if(evt.keyCode != 8\n && evt.keyCode != 17\n && evt.keyCode != 46\n && evt.keyCode != 224\n && !evt.metaKey\n && !evt.ctrlKey) {\n \n //NOT BACKSPACE, NOT DELETE, NOT CTRL, NOT COMMAND\n //text nodes replaced by P\n \n container = wym.selected();\n var name = container.tagName.toLowerCase();\n\n //fix forbidden main containers\n if(\n name == \"strong\" ||\n name == \"b\" ||\n name == \"em\" ||\n name == \"i\" ||\n name == \"sub\" ||\n name == \"sup\" ||\n name == \"a\" ||\n name == \"span\" //fix #110\n\n ) name = container.parentNode.tagName.toLowerCase();\n\n if(name == WYMeditor.BODY || name == WYMeditor.DIV) wym._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P); //fix #110 for DIV\n }\n};\n\nWYMeditor.WymClassSafari.prototype.setFocusToNode = function(node) {\n var range = this._iframe.contentDocument.createRange();\n range.selectNode(node);\n var selected = this._iframe.contentWindow.getSelection();\n selected.addRange(range);\n selected.collapse(node, node.childNodes.length);\n this._iframe.contentWindow.focus();\n};\n\nWYMeditor.WymClassSafari.prototype.openBlockTag = function(tag, attributes)\n{\n var attributes = this.validator.getValidTagAttributes(tag, attributes);\n\n // Handle Safari styled spans\n if(tag == 'span' && attributes.style) {\n var new_tag = this.getTagForStyle(attributes.style);\n if(new_tag){\n this._tag_stack.pop();\n var tag = new_tag;\n this._tag_stack.push(new_tag);\n attributes.style = '';\n \n //should fix #125 - also removed the xhtml() override\n if(typeof attributes['class'] == 'string')\n attributes['class'] = attributes['class'].replace(/apple-style-span/gi, '');\n \n } else {\n return;\n }\n }\n \n this.output += this.helper.tag(tag, attributes, true);\n};\n\nWYMeditor.WymClassSafari.prototype.getTagForStyle = function(style) {\n\n if(/bold/.test(style)) return 'strong';\n if(/italic/.test(style)) return 'em';\n if(/sub/.test(style)) return 'sub';\n if(/super/.test(style)) return 'sup';\n return false;\n};\n"]} \ No newline at end of file diff --git a/static/maps/libs/jquery/jstorage.js.map b/static/maps/libs/jquery/jstorage.js.map index d1e0af70ff7..c53995f0aac 100644 --- a/static/maps/libs/jquery/jstorage.js.map +++ b/static/maps/libs/jquery/jstorage.js.map @@ -1 +1 @@ -{"version":3,"file":"jstorage.js","sources":["../../../src/libs/jquery/jstorage.js"],"names":["_init","localStorageReallyWorks","window","localStorage","setItem","removeItem","BogusQuotaExceededErrorOnIos5","_storage_service","_backend","_observer_update","jStorage_update","E3","globalStorage","location","hostname","E4","_storage_elm","document","createElement","addBehavior","style","behavior","getElementsByTagName","appendChild","load","E","setAttribute","save","data","getAttribute","E5","E6","jStorage","_load_storage","_handleTTL","_setupObserver","_handlePubSub","addEventListener","event","persisted","_storageObserver","_reloadData","attachEvent","setInterval","updateTime","clearTimeout","_observer_timeout","setTimeout","_checkUpdatedKeys","newCrc32List","oldCrc32List","JSON","parse","stringify","_storage","__jstorage_meta","CRC32","key","updated","removed","hasOwnProperty","push","String","substr","_fireObservers","keys","action","concat","_observers","i","len","length","j","jlen","_publishChange","Date","toString","E8","_storage_size","_save","_dropOldEvents","E7","_checkKey","TypeError","curtime","TTL","nextExpire","changed","deleted","_ttl_timeout","PubSub","pubelm","_pubsubCurrent","_pubsub_last","_fireSubscribers","channel","payload","_pubsub_observers","retire","splice","_publish","unshift","murmurhash2_32_gc","str","seed","k","l","h","charCodeAt","JSTORAGE_VERSION","$","jQuery","decode","prototype","evalJSON","parseJSON","Object","toJSON","encode","Error","_XMLService","isXML","elm","documentElement","ownerDocument","nodeName","xmlNode","this","XMLSerializer","serializeToString","E1","xml","E2","xmlString","resultXML","dom_parser","DOMParser","parseFromString","ActiveXObject","_xmlString","xml_doc","async","loadXML","call","version","set","value","options","deleteKey","_is_xml","undefined","setTTL","get","def","ttl","Number","getTTL","flush","storageObj","F","index","storageSize","currentBackend","storageAvailable","listenKeyChange","callback","stopListening","subscribe","publish","reInit"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["libs/jquery/jstorage.js"],"names":["_reloadData","data","_backend","_storage_elm","load","getAttribute","E5","_observer_update","E6","_storage_service","jStorage","_load_storage","_handleTTL","_handlePubSub","_setupObserver","window","addEventListener","_storageObserver","document","attachEvent","setInterval","updateTime","clearTimeout","_observer_timeout","setTimeout","jStorage_update","_checkUpdatedKeys","newCrc32List","oldCrc32List","JSON","parse","stringify","_storage","__jstorage_meta","CRC32","key","updated","removed","hasOwnProperty","push","String","substr","_fireObservers","keys","action","concat","_observers","i","len","length","j","jlen","_publishChange","Date","toString","E8","setAttribute","save","_storage_size","_save","_dropOldEvents","E7","_checkKey","TypeError","curtime","TTL","nextExpire","Infinity","changed","deleted","_ttl_timeout","PubSub","pubelm","_pubsubCurrent","_pubsub_last","_fireSubscribers","channel","payload","_pubsub_observers","retire","splice","_publish","unshift","murmurhash2_32_gc","str","seed","k","l","h","charCodeAt","$","jQuery","decode","prototype","evalJSON","parseJSON","Object","toJSON","encode","Error","_XMLService","isXML","elm","documentElement","ownerDocument","nodeName","xmlNode","this","XMLSerializer","serializeToString","E1","xml","E2","xmlString","resultXML","dom_parser","DOMParser","parseFromString","ActiveXObject","_xmlString","xml_doc","async","loadXML","call","version","set","value","options","deleteKey","_is_xml","setTTL","get","def","ttl","Number","getTTL","flush","storageObj","F","index","storageSize","currentBackend","storageAvailable","listenKeyChange","callback","stopListening","subscribe","publish","reInit","localStorageReallyWorks","localStorage","setItem","removeItem","BogusQuotaExceededErrorOnIos5","E3","globalStorage","location","hostname","E4","createElement","addBehavior","style","behavior","getElementsByTagName","appendChild","E","event","persisted"],"mappings":"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","file":"../../../scripts/libs/jquery/jstorage.js","sourcesContent":["/*\n * ----------------------------- JSTORAGE -------------------------------------\n * Simple local storage wrapper to save data on the browser side, supporting\n * all major browsers - IE6+, Firefox2+, Safari4+, Chrome4+ and Opera 10.5+\n *\n * Copyright (c) 2010 - 2012 Andris Reinman, andris.reinman@gmail.com\n * Project homepage: www.jstorage.info\n *\n * Licensed under MIT-style license:\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n (function(){\n var\n /* jStorage version */\n JSTORAGE_VERSION = \"0.4.4\",\n\n /* detect a dollar object or create one if not found */\n $ = window.jQuery || window.$ || (window.$ = {}),\n\n /* check for a JSON handling support */\n JSON = {\n parse:\n window.JSON && (window.JSON.parse || window.JSON.decode) ||\n String.prototype.evalJSON && function(str){return String(str).evalJSON();} ||\n $.parseJSON ||\n $.evalJSON,\n stringify:\n Object.toJSON ||\n window.JSON && (window.JSON.stringify || window.JSON.encode) ||\n $.toJSON\n };\n\n // Break if no JSON support was found\n if(!('parse' in JSON) || !('stringify' in JSON)){\n throw new Error(\"No JSON support found, include //cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js to page\");\n }\n\n var\n /* This is the object, that holds the cached values */\n _storage = {__jstorage_meta:{CRC32:{}}},\n\n /* Actual browser storage (localStorage or globalStorage['domain']) */\n _storage_service = {jStorage:\"{}\"},\n\n /* DOM element for older IE versions, holds userData behavior */\n _storage_elm = null,\n\n /* How much space does the storage take */\n _storage_size = 0,\n\n /* which backend is currently used */\n _backend = false,\n\n /* onchange observers */\n _observers = {},\n\n /* timeout to wait after onchange event */\n _observer_timeout = false,\n\n /* last update time */\n _observer_update = 0,\n\n /* pubsub observers */\n _pubsub_observers = {},\n\n /* skip published items older than current timestamp */\n _pubsub_last = +new Date(),\n\n /* Next check for TTL */\n _ttl_timeout,\n\n /**\n * XML encoding and decoding as XML nodes can't be JSON'ized\n * XML nodes are encoded and decoded if the node is the value to be saved\n * but not if it's as a property of another object\n * Eg. -\n * $.jStorage.set(\"key\", xmlNode); // IS OK\n * $.jStorage.set(\"key\", {xml: xmlNode}); // NOT OK\n */\n _XMLService = {\n\n /**\n * Validates a XML node to be XML\n * based on jQuery.isXML function\n */\n isXML: function(elm){\n var documentElement = (elm ? elm.ownerDocument || elm : 0).documentElement;\n return documentElement ? documentElement.nodeName !== \"HTML\" : false;\n },\n\n /**\n * Encodes a XML node to string\n * based on http://www.mercurytide.co.uk/news/article/issues-when-working-ajax/\n */\n encode: function(xmlNode) {\n if(!this.isXML(xmlNode)){\n return false;\n }\n try{ // Mozilla, Webkit, Opera\n return new XMLSerializer().serializeToString(xmlNode);\n }catch(E1) {\n try { // IE\n return xmlNode.xml;\n }catch(E2){}\n }\n return false;\n },\n\n /**\n * Decodes a XML node from string\n * loosely based on http://outwestmedia.com/jquery-plugins/xmldom/\n */\n decode: function(xmlString){\n var dom_parser = (\"DOMParser\" in window && (new DOMParser()).parseFromString) ||\n (window.ActiveXObject && function(_xmlString) {\n var xml_doc = new ActiveXObject('Microsoft.XMLDOM');\n xml_doc.async = 'false';\n xml_doc.loadXML(_xmlString);\n return xml_doc;\n }),\n resultXML;\n if(!dom_parser){\n return false;\n }\n resultXML = dom_parser.call(\"DOMParser\" in window && (new DOMParser()) || window, xmlString, 'text/xml');\n return this.isXML(resultXML)?resultXML:false;\n }\n };\n\n\n ////////////////////////// PRIVATE METHODS ////////////////////////\n\n /**\n * Initialization function. Detects if the browser supports DOM Storage\n * or userData behavior and behaves accordingly.\n */\n function _init(){\n /* Check if browser supports localStorage */\n var localStorageReallyWorks = false;\n if(\"localStorage\" in window){\n try {\n window.localStorage.setItem('_tmptest', 'tmpval');\n localStorageReallyWorks = true;\n window.localStorage.removeItem('_tmptest');\n } catch(BogusQuotaExceededErrorOnIos5) {\n // Thanks be to iOS5 Private Browsing mode which throws\n // QUOTA_EXCEEDED_ERRROR DOM Exception 22.\n }\n }\n\n if(localStorageReallyWorks){\n try {\n if(window.localStorage) {\n _storage_service = window.localStorage;\n _backend = \"localStorage\";\n _observer_update = _storage_service.jStorage_update;\n }\n } catch(E3) {/* Firefox fails when touching localStorage and cookies are disabled */}\n }\n /* Check if browser supports globalStorage */\n else if(\"globalStorage\" in window){\n try {\n if(window.globalStorage) {\n\t\t\t\t\tif(window.location.hostname == 'localhost'){\n\t\t\t\t\t\t_storage_service = window.globalStorage['localhost.localdomain'];\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\t_storage_service = window.globalStorage[window.location.hostname];\n\t\t\t\t\t}\n _backend = \"globalStorage\";\n _observer_update = _storage_service.jStorage_update;\n }\n } catch(E4) {/* Firefox fails when touching localStorage and cookies are disabled */}\n }\n /* Check if browser supports userData behavior */\n else {\n _storage_elm = document.createElement('link');\n if(_storage_elm.addBehavior){\n\n /* Use a DOM element to act as userData storage */\n _storage_elm.style.behavior = 'url(#default#userData)';\n\n /* userData element needs to be inserted into the DOM! */\n document.getElementsByTagName('head')[0].appendChild(_storage_elm);\n\n try{\n _storage_elm.load(\"jStorage\");\n }catch(E){\n // try to reset cache\n _storage_elm.setAttribute(\"jStorage\", \"{}\");\n _storage_elm.save(\"jStorage\");\n _storage_elm.load(\"jStorage\");\n }\n\n var data = \"{}\";\n try{\n data = _storage_elm.getAttribute(\"jStorage\");\n }catch(E5){}\n\n try{\n _observer_update = _storage_elm.getAttribute(\"jStorage_update\");\n }catch(E6){}\n\n _storage_service.jStorage = data;\n _backend = \"userDataBehavior\";\n }else{\n _storage_elm = null;\n return;\n }\n }\n\n // Load data from storage\n _load_storage();\n\n // remove dead keys\n _handleTTL();\n\n // start listening for changes\n _setupObserver();\n\n // initialize publish-subscribe service\n _handlePubSub();\n\n // handle cached navigation\n if(\"addEventListener\" in window){\n window.addEventListener(\"pageshow\", function(event){\n if(event.persisted){\n _storageObserver();\n }\n }, false);\n }\n }\n\n /**\n * Reload data from storage when needed\n */\n function _reloadData(){\n var data = \"{}\";\n\n if(_backend == \"userDataBehavior\"){\n _storage_elm.load(\"jStorage\");\n\n try{\n data = _storage_elm.getAttribute(\"jStorage\");\n }catch(E5){}\n\n try{\n _observer_update = _storage_elm.getAttribute(\"jStorage_update\");\n }catch(E6){}\n\n _storage_service.jStorage = data;\n }\n\n _load_storage();\n\n // remove dead keys\n _handleTTL();\n\n _handlePubSub();\n }\n\n /**\n * Sets up a storage change observer\n */\n function _setupObserver(){\n if(_backend == \"localStorage\" || _backend == \"globalStorage\"){\n if(\"addEventListener\" in window){\n window.addEventListener(\"storage\", _storageObserver, false);\n }else{\n document.attachEvent(\"onstorage\", _storageObserver);\n }\n }else if(_backend == \"userDataBehavior\"){\n setInterval(_storageObserver, 1000);\n }\n }\n\n /**\n * Fired on any kind of data change, needs to check if anything has\n * really been changed\n */\n function _storageObserver(){\n var updateTime;\n // cumulate change notifications with timeout\n clearTimeout(_observer_timeout);\n _observer_timeout = setTimeout(function(){\n\n if(_backend == \"localStorage\" || _backend == \"globalStorage\"){\n updateTime = _storage_service.jStorage_update;\n }else if(_backend == \"userDataBehavior\"){\n _storage_elm.load(\"jStorage\");\n try{\n updateTime = _storage_elm.getAttribute(\"jStorage_update\");\n }catch(E5){}\n }\n\n if(updateTime && updateTime != _observer_update){\n _observer_update = updateTime;\n _checkUpdatedKeys();\n }\n\n }, 25);\n }\n\n /**\n * Reloads the data and checks if any keys are changed\n */\n function _checkUpdatedKeys(){\n var oldCrc32List = JSON.parse(JSON.stringify(_storage.__jstorage_meta.CRC32)),\n newCrc32List;\n\n _reloadData();\n newCrc32List = JSON.parse(JSON.stringify(_storage.__jstorage_meta.CRC32));\n\n var key,\n updated = [],\n removed = [];\n\n for(key in oldCrc32List){\n if(oldCrc32List.hasOwnProperty(key)){\n if(!newCrc32List[key]){\n removed.push(key);\n continue;\n }\n if(oldCrc32List[key] != newCrc32List[key] && String(oldCrc32List[key]).substr(0,2) == \"2.\"){\n updated.push(key);\n }\n }\n }\n\n for(key in newCrc32List){\n if(newCrc32List.hasOwnProperty(key)){\n if(!oldCrc32List[key]){\n updated.push(key);\n }\n }\n }\n\n _fireObservers(updated, \"updated\");\n _fireObservers(removed, \"deleted\");\n }\n\n /**\n * Fires observers for updated keys\n *\n * @param {Array|String} keys Array of key names or a key\n * @param {String} action What happened with the value (updated, deleted, flushed)\n */\n function _fireObservers(keys, action){\n keys = [].concat(keys || []);\n if(action == \"flushed\"){\n keys = [];\n for(var key in _observers){\n if(_observers.hasOwnProperty(key)){\n keys.push(key);\n }\n }\n action = \"deleted\";\n }\n for(var i=0, len = keys.length; i=0; i--){\n pubelm = _storage.__jstorage_meta.PubSub[i];\n if(pubelm[0] > _pubsub_last){\n _pubsubCurrent = pubelm[0];\n _fireSubscribers(pubelm[1], pubelm[2]);\n }\n }\n\n _pubsub_last = _pubsubCurrent;\n }\n\n /**\n * Fires all subscriber listeners for a pubsub channel\n *\n * @param {String} channel Channel name\n * @param {Mixed} payload Payload data to deliver\n */\n function _fireSubscribers(channel, payload){\n if(_pubsub_observers[channel]){\n for(var i=0, len = _pubsub_observers[channel].length; iGary Court\n * @see http://github.com/garycourt/murmurhash-js\n * @author Austin Appleby\n * @see http://sites.google.com/site/murmurhash/\n *\n * @param {string} str ASCII only\n * @param {number} seed Positive integer only\n * @return {number} 32-bit positive integer hash\n */\n\n function murmurhash2_32_gc(str, seed) {\n var\n l = str.length,\n h = seed ^ l,\n i = 0,\n k;\n\n while (l >= 4) {\n k =\n ((str.charCodeAt(i) & 0xff)) |\n ((str.charCodeAt(++i) & 0xff) << 8) |\n ((str.charCodeAt(++i) & 0xff) << 16) |\n ((str.charCodeAt(++i) & 0xff) << 24);\n\n k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n k ^= k >>> 24;\n k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n\n h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16)) ^ k;\n\n l -= 4;\n ++i;\n }\n\n switch (l) {\n case 3: h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n case 2: h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n case 1: h ^= (str.charCodeAt(i) & 0xff);\n h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n }\n\n h ^= h >>> 13;\n h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n h ^= h >>> 15;\n\n return h >>> 0;\n }\n\n ////////////////////////// PUBLIC INTERFACE /////////////////////////\n\n $.jStorage = {\n /* Version number */\n version: JSTORAGE_VERSION,\n\n /**\n * Sets a key's value.\n *\n * @param {String} key Key to set. If this value is not set or not\n * a string an exception is raised.\n * @param {Mixed} value Value to set. This can be any value that is JSON\n * compatible (Numbers, Strings, Objects etc.).\n * @param {Object} [options] - possible options to use\n * @param {Number} [options.TTL] - optional TTL value\n * @return {Mixed} the used value\n */\n set: function(key, value, options){\n _checkKey(key);\n\n options = options || {};\n\n // undefined values are deleted automatically\n if(typeof value == \"undefined\"){\n this.deleteKey(key);\n return value;\n }\n\n if(_XMLService.isXML(value)){\n value = {_is_xml:true,xml:_XMLService.encode(value)};\n }else if(typeof value == \"function\"){\n return undefined; // functions can't be saved!\n }else if(value && typeof value == \"object\"){\n // clone the object before saving to _storage tree\n value = JSON.parse(JSON.stringify(value));\n }\n\n _storage[key] = value;\n\n _storage.__jstorage_meta.CRC32[key] = \"2.\" + murmurhash2_32_gc(JSON.stringify(value), 0x9747b28c);\n\n this.setTTL(key, options.TTL || 0); // also handles saving and _publishChange\n\n _fireObservers(key, \"updated\");\n return value;\n },\n\n /**\n * Looks up a key in cache\n *\n * @param {String} key - Key to look up.\n * @param {mixed} def - Default value to return, if key didn't exist.\n * @return {Mixed} the key value, default value or null\n */\n get: function(key, def){\n _checkKey(key);\n if(key in _storage){\n if(_storage[key] && typeof _storage[key] == \"object\" && _storage[key]._is_xml) {\n return _XMLService.decode(_storage[key].xml);\n }else{\n return _storage[key];\n }\n }\n return typeof(def) == 'undefined' ? null : def;\n },\n\n /**\n * Deletes a key from cache.\n *\n * @param {String} key - Key to delete.\n * @return {Boolean} true if key existed or false if it didn't\n */\n deleteKey: function(key){\n _checkKey(key);\n if(key in _storage){\n delete _storage[key];\n // remove from TTL list\n if(typeof _storage.__jstorage_meta.TTL == \"object\" &&\n key in _storage.__jstorage_meta.TTL){\n delete _storage.__jstorage_meta.TTL[key];\n }\n\n delete _storage.__jstorage_meta.CRC32[key];\n\n _save();\n _publishChange();\n _fireObservers(key, \"deleted\");\n return true;\n }\n return false;\n },\n\n /**\n * Sets a TTL for a key, or remove it if ttl value is 0 or below\n *\n * @param {String} key - key to set the TTL for\n * @param {Number} ttl - TTL timeout in milliseconds\n * @return {Boolean} true if key existed or false if it didn't\n */\n setTTL: function(key, ttl){\n var curtime = +new Date();\n _checkKey(key);\n ttl = Number(ttl) || 0;\n if(key in _storage){\n\n if(!_storage.__jstorage_meta.TTL){\n _storage.__jstorage_meta.TTL = {};\n }\n\n // Set TTL value for the key\n if(ttl>0){\n _storage.__jstorage_meta.TTL[key] = curtime + ttl;\n }else{\n delete _storage.__jstorage_meta.TTL[key];\n }\n\n _save();\n\n _handleTTL();\n\n _publishChange();\n return true;\n }\n return false;\n },\n\n /**\n * Gets remaining TTL (in milliseconds) for a key or 0 when no TTL has been set\n *\n * @param {String} key Key to check\n * @return {Number} Remaining TTL in milliseconds\n */\n getTTL: function(key){\n var curtime = +new Date(), ttl;\n _checkKey(key);\n if(key in _storage && _storage.__jstorage_meta.TTL && _storage.__jstorage_meta.TTL[key]){\n ttl = _storage.__jstorage_meta.TTL[key] - curtime;\n return ttl || 0;\n }\n return 0;\n },\n\n /**\n * Deletes everything in cache.\n *\n * @return {Boolean} Always true\n */\n flush: function(){\n _storage = {__jstorage_meta:{CRC32:{}}};\n _save();\n _publishChange();\n _fireObservers(null, \"flushed\");\n return true;\n },\n\n /**\n * Returns a read-only copy of _storage\n *\n * @return {Object} Read-only copy of _storage\n */\n storageObj: function(){\n function F() {}\n F.prototype = _storage;\n return new F();\n },\n\n /**\n * Returns an index of all used keys as an array\n * ['key1', 'key2',..'keyN']\n *\n * @return {Array} Used keys\n */\n index: function(){\n var index = [], i;\n for(i in _storage){\n if(_storage.hasOwnProperty(i) && i != \"__jstorage_meta\"){\n index.push(i);\n }\n }\n return index;\n },\n\n /**\n * How much space in bytes does the storage take?\n *\n * @return {Number} Storage size in chars (not the same as in bytes,\n * since some chars may take several bytes)\n */\n storageSize: function(){\n return _storage_size;\n },\n\n /**\n * Which backend is currently in use?\n *\n * @return {String} Backend name\n */\n currentBackend: function(){\n return _backend;\n },\n\n /**\n * Test if storage is available\n *\n * @return {Boolean} True if storage can be used\n */\n storageAvailable: function(){\n return !!_backend;\n },\n\n /**\n * Register change listeners\n *\n * @param {String} key Key name\n * @param {Function} callback Function to run when the key changes\n */\n listenKeyChange: function(key, callback){\n _checkKey(key);\n if(!_observers[key]){\n _observers[key] = [];\n }\n _observers[key].push(callback);\n },\n\n /**\n * Remove change listeners\n *\n * @param {String} key Key name to unregister listeners against\n * @param {Function} [callback] If set, unregister the callback, if not - unregister all\n */\n stopListening: function(key, callback){\n _checkKey(key);\n\n if(!_observers[key]){\n return;\n }\n\n if(!callback){\n delete _observers[key];\n return;\n }\n\n for(var i = _observers[key].length - 1; i>=0; i--){\n if(_observers[key][i] == callback){\n _observers[key].splice(i,1);\n }\n }\n },\n\n /**\n * Subscribe to a Publish/Subscribe event stream\n *\n * @param {String} channel Channel name\n * @param {Function} callback Function to run when the something is published to the channel\n */\n subscribe: function(channel, callback){\n channel = (channel || \"\").toString();\n if(!channel){\n throw new TypeError('Channel not defined');\n }\n if(!_pubsub_observers[channel]){\n _pubsub_observers[channel] = [];\n }\n _pubsub_observers[channel].push(callback);\n },\n\n /**\n * Publish data to an event stream\n *\n * @param {String} channel Channel name\n * @param {Mixed} payload Payload to deliver\n */\n publish: function(channel, payload){\n channel = (channel || \"\").toString();\n if(!channel){\n throw new TypeError('Channel not defined');\n }\n\n _publish(channel, payload);\n },\n\n /**\n * Reloads the data from browser storage\n */\n reInit: function(){\n _reloadData();\n }\n };\n\n // Initialize jStorage\n _init();\n\n})();\n"]} \ No newline at end of file diff --git a/static/maps/libs/jquery/jstree.js.map b/static/maps/libs/jquery/jstree.js.map index 155a407eaa1..b372e6f17da 100644 --- a/static/maps/libs/jquery/jstree.js.map +++ b/static/maps/libs/jquery/jstree.js.map @@ -1 +1 @@ -{"version":3,"file":"jstree.js","sources":["../../../src/libs/jquery/jstree.js"],"names":["factory","define","amd","exports","require","jQuery","$","undefined","jstree","_temp1","_temp2","instance_counter","ccp_node","ccp_mode","ccp_inst","themes_loaded","src","attr","_d","document","_node","createElement","setAttribute","className","appendChild","version","defaults","plugins","path","indexOf","replace","idregex","create","el","options","tmp","core","opt","extend","each","i","k","plugin","init","id","this","_id","_cnt","_wrk","_data","themes","name","dots","icons","selected","last_error","working","worker_queue","reference","needle","obj","length","ignore","closest","data","inst","_model","fn","arg","is_method","args","Array","prototype","slice","call","arguments","result","instance","method","apply","isPlainObject","expr","createPseudo","a","hasClass","strings","check_callback","error","noop","animation","multiple","url","dir","stripes","variant","responsive","expand_selected_onload","worker","force_text","deco","opts","Child","#","parent","parents","children","children_d","state","loaded","changed","force_full_redraw","redraw_timeout","default_state","opened","disabled","element","addClass","settings","bind","proxy","teardown","ready","rtl","css","trigger","original_container_html","find","clone","addBack","contents","filter","nodeType","nodeValue","test","remove","html","get_string","li_height","get_container_ul","height","load_node","destroy","keep_html","empty","unbind","removeClass","removeData","on","selection","window","getSelection","sel","removeAllRanges","collapse","e","toggle_node","target","preventDefault","currentTarget","focus","activate_node","tagName","o","which","type","is_open","close_node","get_prev_dom","is_closed","open_node","get_node","get_next_dom","is_selected","get_selected","status","node","j","concat","vakata","array_unique","action","setTimeout","s","set_theme","set_theme_variant","mouseleave","not","mouseenter","hover_node","dehover_node","off","ev","triggerHandler","get_container","key","isFunction","_firstChild","dom","firstChild","nextSibling","_nextSibling","_previousSibling","previousSibling","as_dom","ex","get_path","glue","ids","p","push","text","get_text","reverse","join","strict","parentsUntil","next","eq","lastChild","parentNode","get_parent","get_children_dom","is_parent","is_loaded","is_loading","loading","is_leaf","callback","l","c","isArray","_load_nodes","array_remove_item","_load_node","nodes","is_callback","r","m","done","t","d","ajax","x","getResponseHeader","_append_json_data","_append_html_data","reason","JSON","stringify","xhr","fail","f","parse","_node_changed","cb","dat","is","par","chd","dpc","v","_parse_model_from_html","redraw","w","df","t_id","t_cnt","func","rslt","add","parse_flat","ps","unshift","tid","toString","icon","li_attr","a_attr","href","original","hasOwnProperty","parse_nest","cnt","mod","inArray","Blob","URL","Worker","createObjectURL","onmessage","shift","postMessage","attributes","trim","_parse_model_from_flat_json","_parse_model_from_json","_redraw","redraw_node","append","full","deep","ind","old","querySelector","substr","getElementById","index","activeElement","cloneNode","childNodes","style","backgroundImage","backgroundPosition","backgroundSize","createTextNode","innerHTML","insertBefore","t1","t2","end","stop","slideDown","display","ok","_open_to","slideUp","open_all","original_obj","_this","close_all","get","is_disabled","enable_node","disable_node","last_clicked","metaKey","ctrlKey","shiftKey","select_node","deselect_node","deselect_all","supress_event","prevent_open","event","select_all","old_selection","map","get_top_selected","get_bottom_selected","get_state","open","scroll","left","scrollLeft","top","scrollTop","set_state","res","n","isEmptyObject","refresh","skip_loading","forget_state","refresh_node","to_load","set_id","set_text","val","get_json","flat","get_icon","no_data","no_state","no_id","no_children","create_node","pos","match","check","position","rename_node","delete_node","array_remove","chk","more","chc","is_multi","functions","move_node","old_par","old_pos","new_par","old_ins","copy_node","is_foreign","old_parent","old_position","old_instance","new_instance","cut","copy","get_buffer","mode","can_paste","paste","edit","default_text","width","h1","visibility","appendTo","h2","value","class","padding","border","box-sizing","lineHeight","blur","replaceWith","keydown","stopImmediatePropagation","click","mousedown","keyup","Math","min","keypress","fontFamily","fontSize","fontWeight","fontStyle","fontStretch","fontVariant","letterSpacing","wordSpacing","select","theme_name","theme_url","theme","get_theme","variant_name","get_theme_variant","show_stripes","hide_stripes","toggle_stripes","show_dots","hide_dots","toggle_dots","show_icons","hide_icons","toggle_icons","set_icon","hide_icon","removeAttr","show_icon","with_values","nodeName","toLowerCase","array","from","to","rest","item","_i","checkbox","visible","three_state","whole_node","keep_selected_style","cascade","tie_selection","uto","clearTimeout","_undetermined","checked","undetermined","tt","tmp2","show_checkboxes","checkboxes","hide_checkboxes","toggle_checkboxes","is_undetermined","is_checked","uncheck_node","check_node","check_all","uncheck_all","get_checked","get_top_checked","get_bottom_checked","contextmenu","show_at_node","items","separator_before","separator_after","_disabled","label","new_node","rename","ccp","submenu","last_ts","timeStamp","show_contextmenu","pageX","pageY","context","hide","y","offset","_show_contextmenu","one","cls","show","right_to_left","vakata_context","position_x","position_y","is_visible","hide_onmouseleave","_trigger","event_name","_execute","_parse","str","sep","_class","shortcut","shortcut_label","_show_submenu","outerWidth","h","dw","dh","cond","outerHeight","contains","relatedTarget","siblings","last","prevAll","first","nextAll","mouseup","dnd","open_timeout","is_draggable","check_while_dragging","always_copy","inside_pos","mlt","start","origin","lastmv","laster","opento","marker","op","pr","ip","tm","ins","ref","rel","helper","z","_get","vakata_dnd","is_down","is_drag","helper_w","init_x","init_y","scroll_l","scroll_t","scroll_e","scroll_i","is_touch","scroll_speed","scroll_proximity","helper_left","helper_top","threshold","threshold_touch","_clean","clearInterval","drag","_scroll","init_only","setInterval","originalEvent","changedTouches","elementFromPoint","pageXOffset","pageYOffset","unselectable","onselectstart","MozUserSelect","margin","zIndex","abs","wh","ww","dt","dl","ht","hl","scrollHeight","offsetHeight","scrollWidth","offsetWidth","parseInt","search","fuzzy","case_sensitive","show_only_matches","close_opened_onclear","search_leaves_only","search_callback","opn","querySelectorAll","skip_async","clear_search","caseSensitive","isMatch","_search_open","pattern","txt","matchmask","pattern_alphabet","match_bitapScore","MATCH_LOCATION","location","MATCH_DISTANCE","distance","MATCH_THRESHOLD","patternLen","mask","charAt","accuracy","proximity","score","binMin","binMid","lastRd","finish","rd","charMatch","textLen","scoreThreshold","bestLoc","binMax","locations","lastIndexOf","floor","max","sort","b","events","ttl","save_state","restore_state","st","sec","Date","storage","set","clear_state","del","localStorage","setItem","getItem","removeItem","types","default","_delete_ids","get_rules","max_children","valid_children","max_depth","get_type","rules","set_type","old_type","old_icon","unique","duplicate","counter","div","wholerow","Event","altKey"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["libs/jquery/jstree.js"],"names":["factory","define","amd","exports","require","jQuery","$","undefined","jstree","_temp1","_temp2","instance_counter","ccp_node","ccp_mode","ccp_inst","themes_loaded","src","attr","_d","document","_node","createElement","setAttribute","className","appendChild","version","defaults","plugins","path","indexOf","replace","idregex","create","el","options","tmp","core","opt","extend","each","i","k","plugin","init","id","this","_id","_cnt","_wrk","_data","themes","name","dots","icons","selected","last_error","working","worker_queue","reference","needle","obj","length","ignore","closest","data","inst","_model","fn","arg","is_method","args","Array","prototype","slice","call","arguments","result","instance","method","apply","isPlainObject","expr","createPseudo","search","a","hasClass","strings","check_callback","error","noop","animation","multiple","url","dir","stripes","variant","responsive","expand_selected_onload","worker","force_text","deco","opts","Child","#","parent","parents","children","children_d","state","loaded","changed","force_full_redraw","redraw_timeout","default_state","opened","disabled","element","addClass","settings","bind","proxy","teardown","ready","rtl","css","trigger","original_container_html","find","clone","addBack","contents","filter","nodeType","nodeValue","test","remove","html","get_string","li_height","get_container_ul","height","load_node","destroy","keep_html","empty","unbind","removeClass","removeData","on","selection","window","getSelection","sel","removeAllRanges","collapse","e","toggle_node","target","preventDefault","currentTarget","focus","activate_node","tagName","o","which","type","is_open","close_node","get_prev_dom","is_closed","open_node","get_node","get_next_dom","is_selected","get_selected","status","node","j","concat","vakata","array_unique","action","setTimeout","s","set_theme","set_theme_variant","mouseleave","not","mouseenter","hover_node","dehover_node","off","ev","triggerHandler","get_container","key","isFunction","_firstChild","dom","firstChild","nextSibling","_nextSibling","_previousSibling","previousSibling","as_dom","ex","get_path","glue","ids","p","push","text","get_text","reverse","join","strict","parentsUntil","next","eq","lastChild","parentNode","get_parent","get_children_dom","is_parent","is_loaded","is_loading","loading","is_leaf","callback","l","c","isArray","_load_nodes","array_remove_item","_load_node","nodes","is_callback","r","m","done","t","d","ajax","x","getResponseHeader","_append_json_data","_append_html_data","reason","JSON","stringify","xhr","fail","f","parse","_node_changed","cb","dat","is","par","chd","dpc","v","_parse_model_from_html","redraw","w","df","t_id","t_cnt","func","rslt","add","parse_flat","ps","unshift","tid","toString","icon","li_attr","a_attr","href","original","hasOwnProperty","parse_nest","cnt","mod","inArray","Blob","URL","Worker","createObjectURL","onmessage","shift","postMessage","attributes","trim","_parse_model_from_flat_json","_parse_model_from_json","_redraw","redraw_node","append","full","deep","ind","old","querySelector","substr","getElementById","index","activeElement","cloneNode","childNodes","style","backgroundImage","backgroundPosition","backgroundSize","createTextNode","innerHTML","insertBefore","t1","t2","end","stop","slideDown","display","ok","_open_to","slideUp","open_all","original_obj","_this","close_all","get","is_disabled","enable_node","disable_node","last_clicked","metaKey","ctrlKey","shiftKey","select_node","deselect_node","deselect_all","supress_event","prevent_open","event","select_all","old_selection","map","get_top_selected","get_bottom_selected","get_state","open","scroll","left","scrollLeft","top","scrollTop","set_state","res","n","isEmptyObject","refresh","skip_loading","forget_state","refresh_node","to_load","set_id","set_text","val","get_json","flat","get_icon","no_data","no_state","no_id","no_children","create_node","pos","match","check","position","rename_node","delete_node","array_remove","chk","more","chc","is_multi","functions","move_node","old_par","old_pos","new_par","old_ins","copy_node","is_foreign","old_parent","old_position","old_instance","new_instance","cut","copy","get_buffer","mode","can_paste","paste","edit","default_text","width","h1","visibility","appendTo","h2","value","class","padding","border","box-sizing","lineHeight","blur","replaceWith","keydown","stopImmediatePropagation","click","mousedown","keyup","Math","min","keypress","fontFamily","fontSize","fontWeight","fontStyle","fontStretch","fontVariant","letterSpacing","wordSpacing","select","theme_name","theme_url","theme","get_theme","variant_name","get_theme_variant","show_stripes","hide_stripes","toggle_stripes","show_dots","hide_dots","toggle_dots","show_icons","hide_icons","toggle_icons","set_icon","hide_icon","removeAttr","show_icon","with_values","nodeName","toLowerCase","array","from","to","rest","item","_i","checkbox","visible","three_state","whole_node","keep_selected_style","cascade","tie_selection","uto","clearTimeout","_undetermined","checked","undetermined","tt","tmp2","show_checkboxes","checkboxes","hide_checkboxes","toggle_checkboxes","is_undetermined","is_checked","uncheck_node","check_node","check_all","uncheck_all","get_checked","get_top_checked","get_bottom_checked","contextmenu","show_at_node","items","separator_before","separator_after","_disabled","label","new_node","rename","ccp","submenu","last_ts","timeStamp","show_contextmenu","pageX","pageY","context","hide","y","offset","_show_contextmenu","one","cls","show","right_to_left","vakata_context","position_x","position_y","is_visible","hide_onmouseleave","_trigger","event_name","_execute","_parse","str","sep","_class","shortcut","shortcut_label","_show_submenu","outerWidth","h","dw","dh","outerHeight","contains","relatedTarget","siblings","last","prevAll","first","nextAll","mouseup","dnd","open_timeout","is_draggable","check_while_dragging","always_copy","inside_pos","mlt","start","origin","lastmv","laster","opento","marker","op","pr","ip","tm","ins","ref","rel","helper","z","_get","vakata_dnd","is_down","is_drag","helper_w","init_x","init_y","scroll_l","scroll_t","scroll_e","scroll_i","is_touch","scroll_speed","scroll_proximity","helper_left","helper_top","threshold","threshold_touch","_clean","clearInterval","drag","_scroll","init_only","setInterval","originalEvent","changedTouches","elementFromPoint","pageXOffset","pageYOffset","unselectable","onselectstart","MozUserSelect","margin","zIndex","abs","wh","ww","dt","dl","ht","hl","scrollHeight","offsetHeight","scrollWidth","offsetWidth","parseInt","fuzzy","case_sensitive","show_only_matches","close_opened_onclear","search_leaves_only","search_callback","opn","querySelectorAll","skip_async","clear_search","caseSensitive","isMatch","_search_open","pattern","txt","matchmask","pattern_alphabet","match_bitapScore","MATCH_LOCATION","location","MATCH_DISTANCE","distance","MATCH_THRESHOLD","patternLen","mask","charAt","accuracy","proximity","score","binMin","binMid","lastRd","finish","rd","charMatch","textLen","scoreThreshold","bestLoc","binMax","locations","lastIndexOf","floor","max","sort","b","events","ttl","save_state","restore_state","st","sec","Date","storage","set","clear_state","del","localStorage","setItem","getItem","removeItem","types","default","_delete_ids","get_rules","max_children","valid_children","max_depth","get_type","rules","set_type","old_type","old_icon","unique","duplicate","counter","div","wholerow","Event","altKey"],"mappings":"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","file":"../../../scripts/libs/jquery/jstree.js","sourcesContent":["/*globals jQuery, define, exports, require, window, document */\n(function (factory) {\n\t\"use strict\";\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(['jquery'], factory);\n\t}\n\telse if(typeof exports === 'object') {\n\t\tfactory(require('jquery'));\n\t}\n\telse {\n\t\tfactory(jQuery);\n\t}\n}(function ($, undefined) {\n\t\"use strict\";\n/*!\n * jsTree 3.0.3\n * http://jstree.com/\n *\n * Copyright (c) 2014 Ivan Bozhanov (http://vakata.com)\n *\n * Licensed same as jquery - under the terms of the MIT License\n * http://www.opensource.org/licenses/mit-license.php\n */\n/*!\n * if using jslint please allow for the jQuery global and use following options: \n * jslint: browser: true, ass: true, bitwise: true, continue: true, nomen: true, plusplus: true, regexp: true, unparam: true, todo: true, white: true\n */\n\n\t// prevent another load? maybe there is a better way?\n\tif($.jstree) {\n\t\treturn;\n\t}\n\n\t/**\n\t * ### jsTree core functionality\n\t */\n\n\t// internal variables\n\tvar instance_counter = 0,\n\t\tccp_node = false,\n\t\tccp_mode = false,\n\t\tccp_inst = false,\n\t\tthemes_loaded = [],\n\t\tsrc = $('script:last').attr('src'),\n\t\t_d = document, _node = _d.createElement('LI'), _temp1, _temp2;\n\n\t_node.setAttribute('role', 'treeitem');\n\t_temp1 = _d.createElement('I');\n\t_temp1.className = 'jstree-icon jstree-ocl';\n\t_node.appendChild(_temp1);\n\t_temp1 = _d.createElement('A');\n\t_temp1.className = 'jstree-anchor';\n\t_temp1.setAttribute('href','#');\n\t_temp2 = _d.createElement('I');\n\t_temp2.className = 'jstree-icon jstree-themeicon';\n\t_temp1.appendChild(_temp2);\n\t_node.appendChild(_temp1);\n\t_temp1 = _temp2 = null;\n\n\n\t/**\n\t * holds all jstree related functions and variables, including the actual class and methods to create, access and manipulate instances.\n\t * @name $.jstree\n\t */\n\t$.jstree = {\n\t\t/** \n\t\t * specifies the jstree version in use\n\t\t * @name $.jstree.version\n\t\t */\n\t\tversion : '3.0.3',\n\t\t/**\n\t\t * holds all the default options used when creating new instances\n\t\t * @name $.jstree.defaults\n\t\t */\n\t\tdefaults : {\n\t\t\t/**\n\t\t\t * configure which plugins will be active on an instance. Should be an array of strings, where each element is a plugin name. The default is `[]`\n\t\t\t * @name $.jstree.defaults.plugins\n\t\t\t */\n\t\t\tplugins : []\n\t\t},\n\t\t/**\n\t\t * stores all loaded jstree plugins (used internally)\n\t\t * @name $.jstree.plugins\n\t\t */\n\t\tplugins : {},\n\t\tpath : src && src.indexOf('/') !== -1 ? src.replace(/\\/[^\\/]+$/,'') : '',\n\t\tidregex : /[\\\\:&!^|()\\[\\]<>@*'+~#\";.,=\\- \\/${}%]/g\n\t};\n\t/**\n\t * creates a jstree instance\n\t * @name $.jstree.create(el [, options])\n\t * @param {DOMElement|jQuery|String} el the element to create the instance on, can be jQuery extended or a selector\n\t * @param {Object} options options for this instance (extends `$.jstree.defaults`)\n\t * @return {jsTree} the new instance\n\t */\n\t$.jstree.create = function (el, options) {\n\t\tvar tmp = new $.jstree.core(++instance_counter),\n\t\t\topt = options;\n\t\toptions = $.extend(true, {}, $.jstree.defaults, options);\n\t\tif(opt && opt.plugins) {\n\t\t\toptions.plugins = opt.plugins;\n\t\t}\n\t\t$.each(options.plugins, function (i, k) {\n\t\t\tif(i !== 'core') {\n\t\t\t\ttmp = tmp.plugin(k, options[k]);\n\t\t\t}\n\t\t});\n\t\ttmp.init(el, options);\n\t\treturn tmp;\n\t};\n\t/**\n\t * the jstree class constructor, used only internally\n\t * @private\n\t * @name $.jstree.core(id)\n\t * @param {Number} id this instance's index\n\t */\n\t$.jstree.core = function (id) {\n\t\tthis._id = id;\n\t\tthis._cnt = 0;\n\t\tthis._wrk = null;\n\t\tthis._data = {\n\t\t\tcore : {\n\t\t\t\tthemes : {\n\t\t\t\t\tname : false,\n\t\t\t\t\tdots : false,\n\t\t\t\t\ticons : false\n\t\t\t\t},\n\t\t\t\tselected : [],\n\t\t\t\tlast_error : {},\n\t\t\t\tworking : false,\n\t\t\t\tworker_queue : []\n\t\t\t}\n\t\t};\n\t};\n\t/**\n\t * get a reference to an existing instance\n\t *\n\t * __Examples__\n\t *\n\t *\t// provided a container with an ID of \"tree\", and a nested node with an ID of \"branch\"\n\t *\t// all of there will return the same instance\n\t *\t$.jstree.reference('tree');\n\t *\t$.jstree.reference('#tree');\n\t *\t$.jstree.reference($('#tree'));\n\t *\t$.jstree.reference(document.getElementByID('tree'));\n\t *\t$.jstree.reference('branch');\n\t *\t$.jstree.reference('#branch');\n\t *\t$.jstree.reference($('#branch'));\n\t *\t$.jstree.reference(document.getElementByID('branch'));\n\t *\n\t * @name $.jstree.reference(needle)\n\t * @param {DOMElement|jQuery|String} needle\n\t * @return {jsTree|null} the instance or `null` if not found\n\t */\n\t$.jstree.reference = function (needle) {\n\t\tvar tmp = null,\n\t\t\tobj = null;\n\t\tif(needle && needle.id) { needle = needle.id; }\n\n\t\tif(!obj || !obj.length) {\n\t\t\ttry { obj = $(needle); } catch (ignore) { }\n\t\t}\n\t\tif(!obj || !obj.length) {\n\t\t\ttry { obj = $('#' + needle.replace($.jstree.idregex,'\\\\$&')); } catch (ignore) { }\n\t\t}\n\t\tif(obj && obj.length && (obj = obj.closest('.jstree')).length && (obj = obj.data('jstree'))) {\n\t\t\ttmp = obj;\n\t\t}\n\t\telse {\n\t\t\t$('.jstree').each(function () {\n\t\t\t\tvar inst = $(this).data('jstree');\n\t\t\t\tif(inst && inst._model.data[needle]) {\n\t\t\t\t\ttmp = inst;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn tmp;\n\t};\n\t/**\n\t * Create an instance, get an instance or invoke a command on a instance. \n\t * \n\t * If there is no instance associated with the current node a new one is created and `arg` is used to extend `$.jstree.defaults` for this new instance. There would be no return value (chaining is not broken).\n\t * \n\t * If there is an existing instance and `arg` is a string the command specified by `arg` is executed on the instance, with any additional arguments passed to the function. If the function returns a value it will be returned (chaining could break depending on function).\n\t * \n\t * If there is an existing instance and `arg` is not a string the instance itself is returned (similar to `$.jstree.reference`).\n\t * \n\t * In any other case - nothing is returned and chaining is not broken.\n\t *\n\t * __Examples__\n\t *\n\t *\t$('#tree1').jstree(); // creates an instance\n\t *\t$('#tree2').jstree({ plugins : [] }); // create an instance with some options\n\t *\t$('#tree1').jstree('open_node', '#branch_1'); // call a method on an existing instance, passing additional arguments\n\t *\t$('#tree2').jstree(); // get an existing instance (or create an instance)\n\t *\t$('#tree2').jstree(true); // get an existing instance (will not create new instance)\n\t *\t$('#branch_1').jstree().select_node('#branch_1'); // get an instance (using a nested element and call a method)\n\t *\n\t * @name $().jstree([arg])\n\t * @param {String|Object} arg\n\t * @return {Mixed}\n\t */\n\t$.fn.jstree = function (arg) {\n\t\t// check for string argument\n\t\tvar is_method\t= (typeof arg === 'string'),\n\t\t\targs\t\t= Array.prototype.slice.call(arguments, 1),\n\t\t\tresult\t\t= null;\n\t\tthis.each(function () {\n\t\t\t// get the instance (if there is one) and method (if it exists)\n\t\t\tvar instance = $.jstree.reference(this),\n\t\t\t\tmethod = is_method && instance ? instance[arg] : null;\n\t\t\t// if calling a method, and method is available - execute on the instance\n\t\t\tresult = is_method && method ?\n\t\t\t\tmethod.apply(instance, args) :\n\t\t\t\tnull;\n\t\t\t// if there is no instance and no method is being called - create one\n\t\t\tif(!instance && !is_method && (arg === undefined || $.isPlainObject(arg))) {\n\t\t\t\t$(this).data('jstree', new $.jstree.create(this, arg));\n\t\t\t}\n\t\t\t// if there is an instance and no method is called - return the instance\n\t\t\tif( (instance && !is_method) || arg === true ) {\n\t\t\t\tresult = instance || false;\n\t\t\t}\n\t\t\t// if there was a method call which returned a result - break and return the value\n\t\t\tif(result !== null && result !== undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\t// if there was a method call with a valid return value - return that, otherwise continue the chain\n\t\treturn result !== null && result !== undefined ?\n\t\t\tresult : this;\n\t};\n\t/**\n\t * used to find elements containing an instance\n\t *\n\t * __Examples__\n\t *\n\t *\t$('div:jstree').each(function () {\n\t *\t\t$(this).jstree('destroy');\n\t *\t});\n\t *\n\t * @name $(':jstree')\n\t * @return {jQuery}\n\t */\n\t$.expr[':'].jstree = $.expr.createPseudo(function(search) {\n\t\treturn function(a) {\n\t\t\treturn $(a).hasClass('jstree') &&\n\t\t\t\t$(a).data('jstree') !== undefined;\n\t\t};\n\t});\n\n\t/**\n\t * stores all defaults for the core\n\t * @name $.jstree.defaults.core\n\t */\n\t$.jstree.defaults.core = {\n\t\t/**\n\t\t * data configuration\n\t\t * \n\t\t * If left as `false` the HTML inside the jstree container element is used to populate the tree (that should be an unordered list with list items).\n\t\t *\n\t\t * You can also pass in a HTML string or a JSON array here.\n\t\t * \n\t\t * It is possible to pass in a standard jQuery-like AJAX config and jstree will automatically determine if the response is JSON or HTML and use that to populate the tree. \n\t\t * In addition to the standard jQuery ajax options here you can suppy functions for `data` and `url`, the functions will be run in the current instance's scope and a param will be passed indicating which node is being loaded, the return value of those functions will be used.\n\t\t * \n\t\t * The last option is to specify a function, that function will receive the node being loaded as argument and a second param which is a function which should be called with the result.\n\t\t *\n\t\t * __Examples__\n\t\t *\n\t\t *\t// AJAX\n\t\t *\t$('#tree').jstree({\n\t\t *\t\t'core' : {\n\t\t *\t\t\t'data' : {\n\t\t *\t\t\t\t'url' : '/get/children/',\n\t\t *\t\t\t\t'data' : function (node) {\n\t\t *\t\t\t\t\treturn { 'id' : node.id };\n\t\t *\t\t\t\t}\n\t\t *\t\t\t}\n\t\t *\t\t});\n\t\t *\n\t\t *\t// direct data\n\t\t *\t$('#tree').jstree({\n\t\t *\t\t'core' : {\n\t\t *\t\t\t'data' : [\n\t\t *\t\t\t\t'Simple root node',\n\t\t *\t\t\t\t{\n\t\t *\t\t\t\t\t'id' : 'node_2',\n\t\t *\t\t\t\t\t'text' : 'Root node with options',\n\t\t *\t\t\t\t\t'state' : { 'opened' : true, 'selected' : true },\n\t\t *\t\t\t\t\t'children' : [ { 'text' : 'Child 1' }, 'Child 2']\n\t\t *\t\t\t\t}\n\t\t *\t\t\t]\n\t\t *\t\t});\n\t\t *\t\n\t\t *\t// function\n\t\t *\t$('#tree').jstree({\n\t\t *\t\t'core' : {\n\t\t *\t\t\t'data' : function (obj, callback) {\n\t\t *\t\t\t\tcallback.call(this, ['Root 1', 'Root 2']);\n\t\t *\t\t\t}\n\t\t *\t\t});\n\t\t * \n\t\t * @name $.jstree.defaults.core.data\n\t\t */\n\t\tdata\t\t\t: false,\n\t\t/**\n\t\t * configure the various strings used throughout the tree\n\t\t *\n\t\t * You can use an object where the key is the string you need to replace and the value is your replacement.\n\t\t * Another option is to specify a function which will be called with an argument of the needed string and should return the replacement.\n\t\t * If left as `false` no replacement is made.\n\t\t *\n\t\t * __Examples__\n\t\t *\n\t\t *\t$('#tree').jstree({\n\t\t *\t\t'core' : {\n\t\t *\t\t\t'strings' : {\n\t\t *\t\t\t\t'Loading ...' : 'Please wait ...'\n\t\t *\t\t\t}\n\t\t *\t\t}\n\t\t *\t});\n\t\t *\n\t\t * @name $.jstree.defaults.core.strings\n\t\t */\n\t\tstrings\t\t\t: false,\n\t\t/**\n\t\t * determines what happens when a user tries to modify the structure of the tree\n\t\t * If left as `false` all operations like create, rename, delete, move or copy are prevented.\n\t\t * You can set this to `true` to allow all interactions or use a function to have better control.\n\t\t *\n\t\t * __Examples__\n\t\t *\n\t\t *\t$('#tree').jstree({\n\t\t *\t\t'core' : {\n\t\t *\t\t\t'check_callback' : function (operation, node, node_parent, node_position, more) {\n\t\t *\t\t\t\t// operation can be 'create_node', 'rename_node', 'delete_node', 'move_node' or 'copy_node'\n\t\t *\t\t\t\t// in case of 'rename_node' node_position is filled with the new node name\n\t\t *\t\t\t\treturn operation === 'rename_node' ? true : false;\n\t\t *\t\t\t}\n\t\t *\t\t}\n\t\t *\t});\n\t\t * \n\t\t * @name $.jstree.defaults.core.check_callback\n\t\t */\n\t\tcheck_callback\t: false,\n\t\t/**\n\t\t * a callback called with a single object parameter in the instance's scope when something goes wrong (operation prevented, ajax failed, etc)\n\t\t * @name $.jstree.defaults.core.error\n\t\t */\n\t\terror\t\t\t: $.noop,\n\t\t/**\n\t\t * the open / close animation duration in milliseconds - set this to `false` to disable the animation (default is `200`)\n\t\t * @name $.jstree.defaults.core.animation\n\t\t */\n\t\tanimation\t\t: 200,\n\t\t/**\n\t\t * a boolean indicating if multiple nodes can be selected\n\t\t * @name $.jstree.defaults.core.multiple\n\t\t */\n\t\tmultiple\t\t: true,\n\t\t/**\n\t\t * theme configuration object\n\t\t * @name $.jstree.defaults.core.themes\n\t\t */\n\t\tthemes\t\t\t: {\n\t\t\t/**\n\t\t\t * the name of the theme to use (if left as `false` the default theme is used)\n\t\t\t * @name $.jstree.defaults.core.themes.name\n\t\t\t */\n\t\t\tname\t\t\t: false,\n\t\t\t/**\n\t\t\t * the URL of the theme's CSS file, leave this as `false` if you have manually included the theme CSS (recommended). You can set this to `true` too which will try to autoload the theme.\n\t\t\t * @name $.jstree.defaults.core.themes.url\n\t\t\t */\n\t\t\turl\t\t\t\t: false,\n\t\t\t/**\n\t\t\t * the location of all jstree themes - only used if `url` is set to `true`\n\t\t\t * @name $.jstree.defaults.core.themes.dir\n\t\t\t */\n\t\t\tdir\t\t\t\t: false,\n\t\t\t/**\n\t\t\t * a boolean indicating if connecting dots are shown\n\t\t\t * @name $.jstree.defaults.core.themes.dots\n\t\t\t */\n\t\t\tdots\t\t\t: true,\n\t\t\t/**\n\t\t\t * a boolean indicating if node icons are shown\n\t\t\t * @name $.jstree.defaults.core.themes.icons\n\t\t\t */\n\t\t\ticons\t\t\t: true,\n\t\t\t/**\n\t\t\t * a boolean indicating if the tree background is striped\n\t\t\t * @name $.jstree.defaults.core.themes.stripes\n\t\t\t */\n\t\t\tstripes\t\t\t: false,\n\t\t\t/**\n\t\t\t * a string (or boolean `false`) specifying the theme variant to use (if the theme supports variants)\n\t\t\t * @name $.jstree.defaults.core.themes.variant\n\t\t\t */\n\t\t\tvariant\t\t\t: false,\n\t\t\t/**\n\t\t\t * a boolean specifying if a reponsive version of the theme should kick in on smaller screens (if the theme supports it). Defaults to `false`.\n\t\t\t * @name $.jstree.defaults.core.themes.responsive\n\t\t\t */\n\t\t\tresponsive\t\t: false\n\t\t},\n\t\t/**\n\t\t * if left as `true` all parents of all selected nodes will be opened once the tree loads (so that all selected nodes are visible to the user)\n\t\t * @name $.jstree.defaults.core.expand_selected_onload\n\t\t */\n\t\texpand_selected_onload : true,\n\t\t/**\n\t\t * if left as `true` web workers will be used to parse incoming JSON data where possible, so that the UI will not be blocked by large requests. Workers are however about 30% slower. Defaults to `true`\n\t\t * @name $.jstree.defaults.core.worker\n\t\t */\n\t\tworker : true,\n\t\t/**\n\t\t * Force node text to plain text (and escape HTML). Defaults to `false`\n\t\t * @name $.jstree.defaults.core.force_text\n\t\t */\n\t\tforce_text : false\n\t};\n\t$.jstree.core.prototype = {\n\t\t/**\n\t\t * used to decorate an instance with a plugin. Used internally.\n\t\t * @private\n\t\t * @name plugin(deco [, opts])\n\t\t * @param {String} deco the plugin to decorate with\n\t\t * @param {Object} opts options for the plugin\n\t\t * @return {jsTree}\n\t\t */\n\t\tplugin : function (deco, opts) {\n\t\t\tvar Child = $.jstree.plugins[deco];\n\t\t\tif(Child) {\n\t\t\t\tthis._data[deco] = {};\n\t\t\t\tChild.prototype = this;\n\t\t\t\treturn new Child(opts, this);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\t/**\n\t\t * used to decorate an instance with a plugin. Used internally.\n\t\t * @private\n\t\t * @name init(el, optons)\n\t\t * @param {DOMElement|jQuery|String} el the element we are transforming\n\t\t * @param {Object} options options for this instance\n\t\t * @trigger init.jstree, loading.jstree, loaded.jstree, ready.jstree, changed.jstree\n\t\t */\n\t\tinit : function (el, options) {\n\t\t\tthis._model = {\n\t\t\t\tdata : {\n\t\t\t\t\t'#' : {\n\t\t\t\t\t\tid : '#',\n\t\t\t\t\t\tparent : null,\n\t\t\t\t\t\tparents : [],\n\t\t\t\t\t\tchildren : [],\n\t\t\t\t\t\tchildren_d : [],\n\t\t\t\t\t\tstate : { loaded : false }\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tchanged : [],\n\t\t\t\tforce_full_redraw : false,\n\t\t\t\tredraw_timeout : false,\n\t\t\t\tdefault_state : {\n\t\t\t\t\tloaded : true,\n\t\t\t\t\topened : false,\n\t\t\t\t\tselected : false,\n\t\t\t\t\tdisabled : false\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.element = $(el).addClass('jstree jstree-' + this._id);\n\t\t\tthis.settings = options;\n\t\t\tthis.element.bind(\"destroyed\", $.proxy(this.teardown, this));\n\n\t\t\tthis._data.core.ready = false;\n\t\t\tthis._data.core.loaded = false;\n\t\t\tthis._data.core.rtl = (this.element.css(\"direction\") === \"rtl\");\n\t\t\tthis.element[this._data.core.rtl ? 'addClass' : 'removeClass'](\"jstree-rtl\");\n\t\t\tthis.element.attr('role','tree');\n\n\t\t\tthis.bind();\n\t\t\t/**\n\t\t\t * triggered after all events are bound\n\t\t\t * @event\n\t\t\t * @name init.jstree\n\t\t\t */\n\t\t\tthis.trigger(\"init\");\n\n\t\t\tthis._data.core.original_container_html = this.element.find(\" > ul > li\").clone(true);\n\t\t\tthis._data.core.original_container_html\n\t\t\t\t.find(\"li\").addBack()\n\t\t\t\t.contents().filter(function() {\n\t\t\t\t\treturn this.nodeType === 3 && (!this.nodeValue || /^\\s+$/.test(this.nodeValue));\n\t\t\t\t})\n\t\t\t\t.remove();\n\t\t\tthis.element.html(\"<\"+\"ul class='jstree-container-ul jstree-children'><\"+\"li class='jstree-initial-node jstree-loading jstree-leaf jstree-last'><\"+\"a class='jstree-anchor' href='#'>\" + this.get_string(\"Loading ...\") + \"\");\n\t\t\tthis._data.core.li_height = this.get_container_ul().children(\"li:eq(0)\").height() || 24;\n\t\t\t/**\n\t\t\t * triggered after the loading text is shown and before loading starts\n\t\t\t * @event\n\t\t\t * @name loading.jstree\n\t\t\t */\n\t\t\tthis.trigger(\"loading\");\n\t\t\tthis.load_node('#');\n\t\t},\n\t\t/**\n\t\t * destroy an instance\n\t\t * @name destroy()\n\t\t * @param {Boolean} keep_html if not set to `true` the container will be emptied, otherwise the current DOM elements will be kept intact\n\t\t */\n\t\tdestroy : function (keep_html) {\n\t\t\tif(!keep_html) { this.element.empty(); }\n\t\t\tthis.element.unbind(\"destroyed\", this.teardown);\n\t\t\tthis.teardown();\n\t\t},\n\t\t/**\n\t\t * part of the destroying of an instance. Used internally.\n\t\t * @private\n\t\t * @name teardown()\n\t\t */\n\t\tteardown : function () {\n\t\t\tthis.unbind();\n\t\t\tthis.element\n\t\t\t\t.removeClass('jstree')\n\t\t\t\t.removeData('jstree')\n\t\t\t\t.find(\"[class^='jstree']\")\n\t\t\t\t\t.addBack()\n\t\t\t\t\t.attr(\"class\", function () { return this.className.replace(/jstree[^ ]*|$/ig,''); });\n\t\t\tthis.element = null;\n\t\t},\n\t\t/**\n\t\t * bind all events. Used internally.\n\t\t * @private\n\t\t * @name bind()\n\t\t */\n\t\tbind : function () {\n\t\t\tthis.element\n\t\t\t\t.on(\"dblclick.jstree\", function () {\n\t\t\t\t\t\tif(document.selection && document.selection.empty) {\n\t\t\t\t\t\t\tdocument.selection.empty();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif(window.getSelection) {\n\t\t\t\t\t\t\t\tvar sel = window.getSelection();\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tsel.removeAllRanges();\n\t\t\t\t\t\t\t\t\tsel.collapse();\n\t\t\t\t\t\t\t\t} catch (ignore) { }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t.on(\"click.jstree\", \".jstree-ocl\", $.proxy(function (e) {\n\t\t\t\t\t\tthis.toggle_node(e.target);\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"click.jstree\", \".jstree-anchor\", $.proxy(function (e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t$(e.currentTarget).focus();\n\t\t\t\t\t\tthis.activate_node(e.currentTarget, e);\n\t\t\t\t\t}, this))\n\t\t\t\t.on('keydown.jstree', '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\t\tif(e.target.tagName === \"INPUT\") { return true; }\n\t\t\t\t\t\tvar o = null;\n\t\t\t\t\t\tswitch(e.which) {\n\t\t\t\t\t\t\tcase 13:\n\t\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\t\te.type = \"click\";\n\t\t\t\t\t\t\t\t$(e.currentTarget).trigger(e);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 37:\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tif(this.is_open(e.currentTarget)) {\n\t\t\t\t\t\t\t\t\tthis.close_node(e.currentTarget);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\to = this.get_prev_dom(e.currentTarget);\n\t\t\t\t\t\t\t\t\tif(o && o.length) { o.children('.jstree-anchor').focus(); }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 38:\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\to = this.get_prev_dom(e.currentTarget);\n\t\t\t\t\t\t\t\tif(o && o.length) { o.children('.jstree-anchor').focus(); }\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 39:\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tif(this.is_closed(e.currentTarget)) {\n\t\t\t\t\t\t\t\t\tthis.open_node(e.currentTarget, function (o) { this.get_node(o, true).children('.jstree-anchor').focus(); });\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\to = this.get_next_dom(e.currentTarget);\n\t\t\t\t\t\t\t\t\tif(o && o.length) { o.children('.jstree-anchor').focus(); }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 40:\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\to = this.get_next_dom(e.currentTarget);\n\t\t\t\t\t\t\t\tif(o && o.length) { o.children('.jstree-anchor').focus(); }\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t// delete\n\t\t\t\t\t\t\tcase 46:\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\to = this.get_node(e.currentTarget);\n\t\t\t\t\t\t\t\tif(o && o.id && o.id !== '#') {\n\t\t\t\t\t\t\t\t\to = this.is_selected(o) ? this.get_selected() : o;\n\t\t\t\t\t\t\t\t\t// this.delete_node(o);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t// f2\n\t\t\t\t\t\t\tcase 113:\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\to = this.get_node(e.currentTarget);\n\t\t\t\t\t\t\t\t/*!\n\t\t\t\t\t\t\t\tif(o && o.id && o.id !== '#') {\n\t\t\t\t\t\t\t\t\t// this.edit(o);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t// console.log(e.which);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"load_node.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tif(data.status) {\n\t\t\t\t\t\t\tif(data.node.id === '#' && !this._data.core.loaded) {\n\t\t\t\t\t\t\t\tthis._data.core.loaded = true;\n\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t * triggered after the root node is loaded for the first time\n\t\t\t\t\t\t\t\t * @event\n\t\t\t\t\t\t\t\t * @name loaded.jstree\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\tthis.trigger(\"loaded\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(!this._data.core.ready && !this.get_container_ul().find('.jstree-loading:eq(0)').length) {\n\t\t\t\t\t\t\t\tthis._data.core.ready = true;\n\t\t\t\t\t\t\t\tif(this._data.core.selected.length) {\n\t\t\t\t\t\t\t\t\tif(this.settings.core.expand_selected_onload) {\n\t\t\t\t\t\t\t\t\t\tvar tmp = [], i, j;\n\t\t\t\t\t\t\t\t\t\tfor(i = 0, j = this._data.core.selected.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\t\ttmp = tmp.concat(this._model.data[this._data.core.selected[i]].parents);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\ttmp = $.vakata.array_unique(tmp);\n\t\t\t\t\t\t\t\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\t\tthis.open_node(tmp[i], false, 0);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tthis.trigger('changed', { 'action' : 'ready', 'selected' : this._data.core.selected });\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t * triggered after all nodes are finished loading\n\t\t\t\t\t\t\t\t * @event\n\t\t\t\t\t\t\t\t * @name ready.jstree\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\tsetTimeout($.proxy(function () { this.trigger(\"ready\"); }, this), 0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t// THEME RELATED\n\t\t\t\t.on(\"init.jstree\", $.proxy(function () {\n\t\t\t\t\t\tvar s = this.settings.core.themes;\n\t\t\t\t\t\tthis._data.core.themes.dots\t\t\t= s.dots;\n\t\t\t\t\t\tthis._data.core.themes.stripes\t\t= s.stripes;\n\t\t\t\t\t\tthis._data.core.themes.icons\t\t= s.icons;\n\t\t\t\t\t\tthis.set_theme(s.name || \"default\", s.url);\n\t\t\t\t\t\tthis.set_theme_variant(s.variant);\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"loading.jstree\", $.proxy(function () {\n\t\t\t\t\t\tthis[ this._data.core.themes.dots ? \"show_dots\" : \"hide_dots\" ]();\n\t\t\t\t\t\tthis[ this._data.core.themes.icons ? \"show_icons\" : \"hide_icons\" ]();\n\t\t\t\t\t\tthis[ this._data.core.themes.stripes ? \"show_stripes\" : \"hide_stripes\" ]();\n\t\t\t\t\t}, this))\n\t\t\t\t.on('blur.jstree', '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\t\t$(e.currentTarget).filter('.jstree-hovered').mouseleave();\n\t\t\t\t\t}, this))\n\t\t\t\t.on('focus.jstree', '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\t\tthis.element.find('.jstree-hovered').not(e.currentTarget).mouseleave();\n\t\t\t\t\t\t$(e.currentTarget).mouseenter();\n\t\t\t\t\t}, this))\n\t\t\t\t.on('mouseenter.jstree', '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\t\tthis.hover_node(e.currentTarget);\n\t\t\t\t\t}, this))\n\t\t\t\t.on('mouseleave.jstree', '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\t\tthis.dehover_node(e.currentTarget);\n\t\t\t\t\t}, this));\n\t\t},\n\t\t/**\n\t\t * part of the destroying of an instance. Used internally.\n\t\t * @private\n\t\t * @name unbind()\n\t\t */\n\t\tunbind : function () {\n\t\t\tthis.element.off('.jstree');\n\t\t\t$(document).off('.jstree-' + this._id);\n\t\t},\n\t\t/**\n\t\t * trigger an event. Used internally.\n\t\t * @private\n\t\t * @name trigger(ev [, data])\n\t\t * @param {String} ev the name of the event to trigger\n\t\t * @param {Object} data additional data to pass with the event\n\t\t */\n\t\ttrigger : function (ev, data) {\n\t\t\tif(!data) {\n\t\t\t\tdata = {};\n\t\t\t}\n\t\t\tdata.instance = this;\n\t\t\tthis.element.triggerHandler(ev.replace('.jstree','') + '.jstree', data);\n\t\t},\n\t\t/**\n\t\t * returns the jQuery extended instance container\n\t\t * @name get_container()\n\t\t * @return {jQuery}\n\t\t */\n\t\tget_container : function () {\n\t\t\treturn this.element;\n\t\t},\n\t\t/**\n\t\t * returns the jQuery extended main UL node inside the instance container. Used internally.\n\t\t * @private\n\t\t * @name get_container_ul()\n\t\t * @return {jQuery}\n\t\t */\n\t\tget_container_ul : function () {\n\t\t\treturn this.element.children(\".jstree-children:eq(0)\");\n\t\t},\n\t\t/**\n\t\t * gets string replacements (localization). Used internally.\n\t\t * @private\n\t\t * @name get_string(key)\n\t\t * @param {String} key\n\t\t * @return {String}\n\t\t */\n\t\tget_string : function (key) {\n\t\t\tvar a = this.settings.core.strings;\n\t\t\tif($.isFunction(a)) { return a.call(this, key); }\n\t\t\tif(a && a[key]) { return a[key]; }\n\t\t\treturn key;\n\t\t},\n\t\t/**\n\t\t * gets the first child of a DOM node. Used internally.\n\t\t * @private\n\t\t * @name _firstChild(dom)\n\t\t * @param {DOMElement} dom\n\t\t * @return {DOMElement}\n\t\t */\n\t\t_firstChild : function (dom) {\n\t\t\tdom = dom ? dom.firstChild : null;\n\t\t\twhile(dom !== null && dom.nodeType !== 1) {\n\t\t\t\tdom = dom.nextSibling;\n\t\t\t}\n\t\t\treturn dom;\n\t\t},\n\t\t/**\n\t\t * gets the next sibling of a DOM node. Used internally.\n\t\t * @private\n\t\t * @name _nextSibling(dom)\n\t\t * @param {DOMElement} dom\n\t\t * @return {DOMElement}\n\t\t */\n\t\t_nextSibling : function (dom) {\n\t\t\tdom = dom ? dom.nextSibling : null;\n\t\t\twhile(dom !== null && dom.nodeType !== 1) {\n\t\t\t\tdom = dom.nextSibling;\n\t\t\t}\n\t\t\treturn dom;\n\t\t},\n\t\t/**\n\t\t * gets the previous sibling of a DOM node. Used internally.\n\t\t * @private\n\t\t * @name _previousSibling(dom)\n\t\t * @param {DOMElement} dom\n\t\t * @return {DOMElement}\n\t\t */\n\t\t_previousSibling : function (dom) {\n\t\t\tdom = dom ? dom.previousSibling : null;\n\t\t\twhile(dom !== null && dom.nodeType !== 1) {\n\t\t\t\tdom = dom.previousSibling;\n\t\t\t}\n\t\t\treturn dom;\n\t\t},\n\t\t/**\n\t\t * get the JSON representation of a node (or the actual jQuery extended DOM node) by using any input (child DOM element, ID string, selector, etc)\n\t\t * @name get_node(obj [, as_dom])\n\t\t * @param {mixed} obj\n\t\t * @param {Boolean} as_dom\n\t\t * @return {Object|jQuery}\n\t\t */\n\t\tget_node : function (obj, as_dom) {\n\t\t\tif(obj && obj.id) {\n\t\t\t\tobj = obj.id;\n\t\t\t}\n\t\t\tvar dom;\n\t\t\ttry {\n\t\t\t\tif(this._model.data[obj]) {\n\t\t\t\t\tobj = this._model.data[obj];\n\t\t\t\t}\n\t\t\t\telse if(((dom = $(obj, this.element)).length || (dom = $('#' + obj.replace($.jstree.idregex,'\\\\$&'), this.element)).length) && this._model.data[dom.closest('.jstree-node').attr('id')]) {\n\t\t\t\t\tobj = this._model.data[dom.closest('.jstree-node').attr('id')];\n\t\t\t\t}\n\t\t\t\telse if((dom = $(obj, this.element)).length && dom.hasClass('jstree')) {\n\t\t\t\t\tobj = this._model.data['#'];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif(as_dom) {\n\t\t\t\t\tobj = obj.id === '#' ? this.element : $('#' + obj.id.replace($.jstree.idregex,'\\\\$&'), this.element);\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t} catch (ex) { return false; }\n\t\t},\n\t\t/**\n\t\t * get the path to a node, either consisting of node texts, or of node IDs, optionally glued together (otherwise an array)\n\t\t * @name get_path(obj [, glue, ids])\n\t\t * @param {mixed} obj the node\n\t\t * @param {String} glue if you want the path as a string - pass the glue here (for example '/'), if a falsy value is supplied here, an array is returned\n\t\t * @param {Boolean} ids if set to true build the path using ID, otherwise node text is used\n\t\t * @return {mixed}\n\t\t */\n\t\tget_path : function (obj, glue, ids) {\n\t\t\tobj = obj.parents ? obj : this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#' || !obj.parents) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar i, j, p = [];\n\t\t\tp.push(ids ? obj.id : obj.text);\n\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\tp.push(ids ? obj.parents[i] : this.get_text(obj.parents[i]));\n\t\t\t}\n\t\t\tp = p.reverse().slice(1);\n\t\t\treturn glue ? p.join(glue) : p;\n\t\t},\n\t\t/**\n\t\t * get the next visible node that is below the `obj` node. If `strict` is set to `true` only sibling nodes are returned.\n\t\t * @name get_next_dom(obj [, strict])\n\t\t * @param {mixed} obj\n\t\t * @param {Boolean} strict\n\t\t * @return {jQuery}\n\t\t */\n\t\tget_next_dom : function (obj, strict) {\n\t\t\tvar tmp;\n\t\t\tobj = this.get_node(obj, true);\n\t\t\tif(obj[0] === this.element[0]) {\n\t\t\t\ttmp = this._firstChild(this.get_container_ul()[0]);\n\t\t\t\treturn tmp ? $(tmp) : false;\n\t\t\t}\n\t\t\tif(!obj || !obj.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(strict) {\n\t\t\t\ttmp = this._nextSibling(obj[0]);\n\t\t\t\treturn tmp ? $(tmp) : false;\n\t\t\t}\n\t\t\tif(obj.hasClass(\"jstree-open\")) {\n\t\t\t\ttmp = this._firstChild(obj.children('.jstree-children')[0]);\n\t\t\t\treturn tmp ? $(tmp) : false;\n\t\t\t}\n\t\t\tif((tmp = this._nextSibling(obj[0])) !== null) {\n\t\t\t\treturn $(tmp);\n\t\t\t}\n\t\t\treturn obj.parentsUntil(\".jstree\",\".jstree-node\").next(\".jstree-node\").eq(0);\n\t\t},\n\t\t/**\n\t\t * get the previous visible node that is above the `obj` node. If `strict` is set to `true` only sibling nodes are returned.\n\t\t * @name get_prev_dom(obj [, strict])\n\t\t * @param {mixed} obj\n\t\t * @param {Boolean} strict\n\t\t * @return {jQuery}\n\t\t */\n\t\tget_prev_dom : function (obj, strict) {\n\t\t\tvar tmp;\n\t\t\tobj = this.get_node(obj, true);\n\t\t\tif(obj[0] === this.element[0]) {\n\t\t\t\ttmp = this.get_container_ul()[0].lastChild;\n\t\t\t\treturn tmp ? $(tmp) : false;\n\t\t\t}\n\t\t\tif(!obj || !obj.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(strict) {\n\t\t\t\ttmp = this._previousSibling(obj[0]);\n\t\t\t\treturn tmp ? $(tmp) : false;\n\t\t\t}\n\t\t\tif((tmp = this._previousSibling(obj[0])) !== null) {\n\t\t\t\tobj = $(tmp);\n\t\t\t\twhile(obj.hasClass(\"jstree-open\")) {\n\t\t\t\t\tobj = obj.children(\".jstree-children:eq(0)\").children(\".jstree-node:last\");\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t\ttmp = obj[0].parentNode.parentNode;\n\t\t\treturn tmp && tmp.className && tmp.className.indexOf('jstree-node') !== -1 ? $(tmp) : false;\n\t\t},\n\t\t/**\n\t\t * get the parent ID of a node\n\t\t * @name get_parent(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {String}\n\t\t */\n\t\tget_parent : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn obj.parent;\n\t\t},\n\t\t/**\n\t\t * get a jQuery collection of all the children of a node (node must be rendered)\n\t\t * @name get_children_dom(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {jQuery}\n\t\t */\n\t\tget_children_dom : function (obj) {\n\t\t\tobj = this.get_node(obj, true);\n\t\t\tif(obj[0] === this.element[0]) {\n\t\t\t\treturn this.get_container_ul().children(\".jstree-node\");\n\t\t\t}\n\t\t\tif(!obj || !obj.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn obj.children(\".jstree-children\").children(\".jstree-node\");\n\t\t},\n\t\t/**\n\t\t * checks if a node has children\n\t\t * @name is_parent(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_parent : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && (obj.state.loaded === false || obj.children.length > 0);\n\t\t},\n\t\t/**\n\t\t * checks if a node is loaded (its children are available)\n\t\t * @name is_loaded(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_loaded : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && obj.state.loaded;\n\t\t},\n\t\t/**\n\t\t * check if a node is currently loading (fetching children)\n\t\t * @name is_loading(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_loading : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && obj.state && obj.state.loading;\n\t\t},\n\t\t/**\n\t\t * check if a node is opened\n\t\t * @name is_open(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_open : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && obj.state.opened;\n\t\t},\n\t\t/**\n\t\t * check if a node is in a closed state\n\t\t * @name is_closed(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_closed : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && this.is_parent(obj) && !obj.state.opened;\n\t\t},\n\t\t/**\n\t\t * check if a node has no children\n\t\t * @name is_leaf(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_leaf : function (obj) {\n\t\t\treturn !this.is_parent(obj);\n\t\t},\n\t\t/**\n\t\t * loads a node (fetches its children using the `core.data` setting). Multiple nodes can be passed to by using an array.\n\t\t * @name load_node(obj [, callback])\n\t\t * @param {mixed} obj\n\t\t * @param {function} callback a function to be executed once loading is complete, the function is executed in the instance's scope and receives two arguments - the node and a boolean status\n\t\t * @return {Boolean}\n\t\t * @trigger load_node.jstree\n\t\t */\n\t\tload_node : function (obj, callback) {\n\t\t\tvar k, l, i, j, c;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tthis._load_nodes(obj.slice(), callback);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj) {\n\t\t\t\tif(callback) { callback.call(this, obj, false); }\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// if(obj.state.loading) { } // the node is already loading - just wait for it to load and invoke callback? but if called implicitly it should be loaded again?\n\t\t\tif(obj.state.loaded) {\n\t\t\t\tobj.state.loaded = false;\n\t\t\t\tfor(k = 0, l = obj.children_d.length; k < l; k++) {\n\t\t\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\t\t\tthis._model.data[obj.parents[i]].children_d = $.vakata.array_remove_item(this._model.data[obj.parents[i]].children_d, obj.children_d[k]);\n\t\t\t\t\t}\n\t\t\t\t\tif(this._model.data[obj.children_d[k]].state.selected) {\n\t\t\t\t\t\tc = true;\n\t\t\t\t\t\tthis._data.core.selected = $.vakata.array_remove_item(this._data.core.selected, obj.children_d[k]);\n\t\t\t\t\t}\n\t\t\t\t\tdelete this._model.data[obj.children_d[k]];\n\t\t\t\t}\n\t\t\t\tobj.children = [];\n\t\t\t\tobj.children_d = [];\n\t\t\t\tif(c) {\n\t\t\t\t\tthis.trigger('changed', { 'action' : 'load_node', 'node' : obj, 'selected' : this._data.core.selected });\n\t\t\t\t}\n\t\t\t}\n\t\t\tobj.state.loading = true;\n\t\t\tthis.get_node(obj, true).addClass(\"jstree-loading\");\n\t\t\tthis._load_node(obj, $.proxy(function (status) {\n\t\t\t\tobj = this._model.data[obj.id];\n\t\t\t\tobj.state.loading = false;\n\t\t\t\tobj.state.loaded = status;\n\t\t\t\tvar dom = this.get_node(obj, true);\n\t\t\t\tif(obj.state.loaded && !obj.children.length && dom && dom.length && !dom.hasClass('jstree-leaf')) {\n\t\t\t\t\tdom.removeClass('jstree-closed jstree-open').addClass('jstree-leaf');\n\t\t\t\t}\n\t\t\t\tdom.removeClass(\"jstree-loading\");\n\t\t\t\t/**\n\t\t\t\t * triggered after a node is loaded\n\t\t\t\t * @event\n\t\t\t\t * @name load_node.jstree\n\t\t\t\t * @param {Object} node the node that was loading\n\t\t\t\t * @param {Boolean} status was the node loaded successfully\n\t\t\t\t */\n\t\t\t\tthis.trigger('load_node', { \"node\" : obj, \"status\" : status });\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback.call(this, obj, status);\n\t\t\t\t}\n\t\t\t}, this));\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * load an array of nodes (will also load unavailable nodes as soon as the appear in the structure). Used internally.\n\t\t * @private\n\t\t * @name _load_nodes(nodes [, callback])\n\t\t * @param {array} nodes\n\t\t * @param {function} callback a function to be executed once loading is complete, the function is executed in the instance's scope and receives one argument - the array passed to _load_nodes\n\t\t */\n\t\t_load_nodes : function (nodes, callback, is_callback) {\n\t\t\tvar r = true,\n\t\t\t\tc = function () { this._load_nodes(nodes, callback, true); },\n\t\t\t\tm = this._model.data, i, j;\n\t\t\tfor(i = 0, j = nodes.length; i < j; i++) {\n\t\t\t\tif(m[nodes[i]] && (!m[nodes[i]].state.loaded || !is_callback)) {\n\t\t\t\t\tif(!this.is_loading(nodes[i])) {\n\t\t\t\t\t\tthis.load_node(nodes[i], c);\n\t\t\t\t\t}\n\t\t\t\t\tr = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(r) {\n\t\t\t\tif(callback && !callback.done) {\n\t\t\t\t\tcallback.call(this, nodes);\n\t\t\t\t\tcallback.done = true;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * handles the actual loading of a node. Used only internally.\n\t\t * @private\n\t\t * @name _load_node(obj [, callback])\n\t\t * @param {mixed} obj\n\t\t * @param {function} callback a function to be executed once loading is complete, the function is executed in the instance's scope and receives one argument - a boolean status\n\t\t * @return {Boolean}\n\t\t */\n\t\t_load_node : function (obj, callback) {\n\t\t\tvar s = this.settings.core.data, t;\n\t\t\t// use original HTML\n\t\t\tif(!s) {\n\t\t\t\tif(obj.id === '#') {\n\t\t\t\t\treturn this._append_html_data(obj, this._data.core.original_container_html.clone(true), function (status) {\n\t\t\t\t\t\tcallback.call(this, status);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn callback.call(this, false);\n\t\t\t\t}\n\t\t\t\t// return callback.call(this, obj.id === '#' ? this._append_html_data(obj, this._data.core.original_container_html.clone(true)) : false);\n\t\t\t}\n\t\t\tif($.isFunction(s)) {\n\t\t\t\treturn s.call(this, obj, $.proxy(function (d) {\n\t\t\t\t\tif(d === false) {\n\t\t\t\t\t\tcallback.call(this, false);\n\t\t\t\t\t}\n\t\t\t\t\tthis[typeof d === 'string' ? '_append_html_data' : '_append_json_data'](obj, typeof d === 'string' ? $(d) : d, function (status) {\n\t\t\t\t\t\tcallback.call(this, status);\n\t\t\t\t\t});\n\t\t\t\t\t// return d === false ? callback.call(this, false) : callback.call(this, this[typeof d === 'string' ? '_append_html_data' : '_append_json_data'](obj, typeof d === 'string' ? $(d) : d));\n\t\t\t\t}, this));\n\t\t\t}\n\t\t\tif(typeof s === 'object') {\n\t\t\t\tif(s.url) {\n\t\t\t\t\ts = $.extend(true, {}, s);\n\t\t\t\t\tif($.isFunction(s.url)) {\n\t\t\t\t\t\ts.url = s.url.call(this, obj);\n\t\t\t\t\t}\n\t\t\t\t\tif($.isFunction(s.data)) {\n\t\t\t\t\t\ts.data = s.data.call(this, obj);\n\t\t\t\t\t}\n\t\t\t\t\treturn $.ajax(s)\n\t\t\t\t\t\t.done($.proxy(function (d,t,x) {\n\t\t\t\t\t\t\t\tvar type = x.getResponseHeader('Content-Type');\n\t\t\t\t\t\t\t\tif(type.indexOf('json') !== -1 || typeof d === \"object\") {\n\t\t\t\t\t\t\t\t\treturn this._append_json_data(obj, d, function (status) { callback.call(this, status); });\n\t\t\t\t\t\t\t\t\t//return callback.call(this, this._append_json_data(obj, d));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(type.indexOf('html') !== -1 || typeof d === \"string\") {\n\t\t\t\t\t\t\t\t\treturn this._append_html_data(obj, $(d), function (status) { callback.call(this, status); });\n\t\t\t\t\t\t\t\t\t// return callback.call(this, this._append_html_data(obj, $(d)));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'core', 'id' : 'core_04', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id, 'xhr' : x }) };\n\t\t\t\t\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\t\t\t\t\treturn callback.call(this, false);\n\t\t\t\t\t\t\t}, this))\n\t\t\t\t\t\t.fail($.proxy(function (f) {\n\t\t\t\t\t\t\t\tcallback.call(this, false);\n\t\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'core', 'id' : 'core_04', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id, 'xhr' : f }) };\n\t\t\t\t\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t\tt = ($.isArray(s) || $.isPlainObject(s)) ? JSON.parse(JSON.stringify(s)) : s;\n\t\t\t\tif(obj.id === '#') {\n\t\t\t\t\treturn this._append_json_data(obj, t, function (status) {\n\t\t\t\t\t\tcallback.call(this, status);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._data.core.last_error = { 'error' : 'nodata', 'plugin' : 'core', 'id' : 'core_05', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id }) };\n\t\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\t\treturn callback.call(this, false);\n\t\t\t\t}\n\t\t\t\t//return callback.call(this, (obj.id === \"#\" ? this._append_json_data(obj, t) : false) );\n\t\t\t}\n\t\t\tif(typeof s === 'string') {\n\t\t\t\tif(obj.id === '#') {\n\t\t\t\t\treturn this._append_html_data(obj, $(s), function (status) {\n\t\t\t\t\t\tcallback.call(this, status);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._data.core.last_error = { 'error' : 'nodata', 'plugin' : 'core', 'id' : 'core_06', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id }) };\n\t\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\t\treturn callback.call(this, false);\n\t\t\t\t}\n\t\t\t\t//return callback.call(this, (obj.id === \"#\" ? this._append_html_data(obj, $(s)) : false) );\n\t\t\t}\n\t\t\treturn callback.call(this, false);\n\t\t},\n\t\t/**\n\t\t * adds a node to the list of nodes to redraw. Used only internally.\n\t\t * @private\n\t\t * @name _node_changed(obj [, callback])\n\t\t * @param {mixed} obj\n\t\t */\n\t\t_node_changed : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(obj) {\n\t\t\t\tthis._model.changed.push(obj.id);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * appends HTML content to the tree. Used internally.\n\t\t * @private\n\t\t * @name _append_html_data(obj, data)\n\t\t * @param {mixed} obj the node to append to\n\t\t * @param {String} data the HTML string to parse and append\n\t\t * @trigger model.jstree, changed.jstree\n\t\t */\n\t\t_append_html_data : function (dom, data, cb) {\n\t\t\tdom = this.get_node(dom);\n\t\t\tdom.children = [];\n\t\t\tdom.children_d = [];\n\t\t\tvar dat = data.is('ul') ? data.children() : data,\n\t\t\t\tpar = dom.id,\n\t\t\t\tchd = [],\n\t\t\t\tdpc = [],\n\t\t\t\tm = this._model.data,\n\t\t\t\tp = m[par],\n\t\t\t\ts = this._data.core.selected.length,\n\t\t\t\ttmp, i, j;\n\t\t\tdat.each($.proxy(function (i, v) {\n\t\t\t\ttmp = this._parse_model_from_html($(v), par, p.parents.concat());\n\t\t\t\tif(tmp) {\n\t\t\t\t\tchd.push(tmp);\n\t\t\t\t\tdpc.push(tmp);\n\t\t\t\t\tif(m[tmp].children_d.length) {\n\t\t\t\t\t\tdpc = dpc.concat(m[tmp].children_d);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this));\n\t\t\tp.children = chd;\n\t\t\tp.children_d = dpc;\n\t\t\tfor(i = 0, j = p.parents.length; i < j; i++) {\n\t\t\t\tm[p.parents[i]].children_d = m[p.parents[i]].children_d.concat(dpc);\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered when new data is inserted to the tree model\n\t\t\t * @event\n\t\t\t * @name model.jstree\n\t\t\t * @param {Array} nodes an array of node IDs\n\t\t\t * @param {String} parent the parent ID of the nodes\n\t\t\t */\n\t\t\tthis.trigger('model', { \"nodes\" : dpc, 'parent' : par });\n\t\t\tif(par !== '#') {\n\t\t\t\tthis._node_changed(par);\n\t\t\t\tthis.redraw();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.get_container_ul().children('.jstree-initial-node').remove();\n\t\t\t\tthis.redraw(true);\n\t\t\t}\n\t\t\tif(this._data.core.selected.length !== s) {\n\t\t\t\tthis.trigger('changed', { 'action' : 'model', 'selected' : this._data.core.selected });\n\t\t\t}\n\t\t\tcb.call(this, true);\n\t\t},\n\t\t/**\n\t\t * appends JSON content to the tree. Used internally.\n\t\t * @private\n\t\t * @name _append_json_data(obj, data)\n\t\t * @param {mixed} obj the node to append to\n\t\t * @param {String} data the JSON object to parse and append\n\t\t * @trigger model.jstree, changed.jstree\n\t\t */\n\t\t_append_json_data : function (dom, data, cb) {\n\t\t\tdom = this.get_node(dom);\n\t\t\tdom.children = [];\n\t\t\tdom.children_d = [];\n\t\t\t// *%$@!!!\n\t\t\tif(data.d) {\n\t\t\t\tdata = data.d;\n\t\t\t\tif(typeof data === \"string\") {\n\t\t\t\t\tdata = JSON.parse(data);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(!$.isArray(data)) { data = [data]; }\n\t\t\tvar w = null,\n\t\t\t\targs = {\n\t\t\t\t\t'df'\t: this._model.default_state,\n\t\t\t\t\t'dat'\t: data,\n\t\t\t\t\t'par'\t: dom.id,\n\t\t\t\t\t'm'\t\t: this._model.data,\n\t\t\t\t\t't_id'\t: this._id,\n\t\t\t\t\t't_cnt'\t: this._cnt,\n\t\t\t\t\t'sel'\t: this._data.core.selected\n\t\t\t\t},\n\t\t\t\tfunc = function (data, undefined) {\n\t\t\t\t\tif(data.data) { data = data.data; }\n\t\t\t\t\tvar dat = data.dat,\n\t\t\t\t\t\tpar = data.par,\n\t\t\t\t\t\tchd = [],\n\t\t\t\t\t\tdpc = [],\n\t\t\t\t\t\tadd = [],\n\t\t\t\t\t\tdf = data.df,\n\t\t\t\t\t\tt_id = data.t_id,\n\t\t\t\t\t\tt_cnt = data.t_cnt,\n\t\t\t\t\t\tm = data.m,\n\t\t\t\t\t\tp = m[par],\n\t\t\t\t\t\tsel = data.sel,\n\t\t\t\t\t\ttmp, i, j, rslt,\n\t\t\t\t\t\tparse_flat = function (d, p, ps) {\n\t\t\t\t\t\t\tif(!ps) { ps = []; }\n\t\t\t\t\t\t\telse { ps = ps.concat(); }\n\t\t\t\t\t\t\tif(p) { ps.unshift(p); }\n\t\t\t\t\t\t\tvar tid = d.id.toString(),\n\t\t\t\t\t\t\t\ti, j, c, e,\n\t\t\t\t\t\t\t\ttmp = {\n\t\t\t\t\t\t\t\t\tid\t\t\t: tid,\n\t\t\t\t\t\t\t\t\ttext\t\t: d.text || '',\n\t\t\t\t\t\t\t\t\ticon\t\t: d.icon !== undefined ? d.icon : true,\n\t\t\t\t\t\t\t\t\tparent\t\t: p,\n\t\t\t\t\t\t\t\t\tparents\t\t: ps,\n\t\t\t\t\t\t\t\t\tchildren\t: d.children || [],\n\t\t\t\t\t\t\t\t\tchildren_d\t: d.children_d || [],\n\t\t\t\t\t\t\t\t\tdata\t\t: d.data,\n\t\t\t\t\t\t\t\t\tstate\t\t: { },\n\t\t\t\t\t\t\t\t\tli_attr\t\t: { id : false },\n\t\t\t\t\t\t\t\t\ta_attr\t\t: { href : '#' },\n\t\t\t\t\t\t\t\t\toriginal\t: false\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor(i in df) {\n\t\t\t\t\t\t\t\tif(df.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\ttmp.state[i] = df[i];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.data && d.data.jstree && d.data.jstree.icon) {\n\t\t\t\t\t\t\t\ttmp.icon = d.data.jstree.icon;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.data) {\n\t\t\t\t\t\t\t\ttmp.data = d.data;\n\t\t\t\t\t\t\t\tif(d.data.jstree) {\n\t\t\t\t\t\t\t\t\tfor(i in d.data.jstree) {\n\t\t\t\t\t\t\t\t\t\tif(d.data.jstree.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.state[i] = d.data.jstree[i];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && typeof d.state === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.state) {\n\t\t\t\t\t\t\t\t\tif(d.state.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.state[i] = d.state[i];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && typeof d.li_attr === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.li_attr) {\n\t\t\t\t\t\t\t\t\tif(d.li_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.li_attr[i] = d.li_attr[i];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(!tmp.li_attr.id) {\n\t\t\t\t\t\t\t\ttmp.li_attr.id = tid;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && typeof d.a_attr === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.a_attr) {\n\t\t\t\t\t\t\t\t\tif(d.a_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.a_attr[i] = d.a_attr[i];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.children && d.children === true) {\n\t\t\t\t\t\t\t\ttmp.state.loaded = false;\n\t\t\t\t\t\t\t\ttmp.children = [];\n\t\t\t\t\t\t\t\ttmp.children_d = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tm[tmp.id] = tmp;\n\t\t\t\t\t\t\tfor(i = 0, j = tmp.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\tc = parse_flat(m[tmp.children[i]], tmp.id, ps);\n\t\t\t\t\t\t\t\te = m[c];\n\t\t\t\t\t\t\t\ttmp.children_d.push(c);\n\t\t\t\t\t\t\t\tif(e.children_d.length) {\n\t\t\t\t\t\t\t\t\ttmp.children_d = tmp.children_d.concat(e.children_d);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdelete d.data;\n\t\t\t\t\t\t\tdelete d.children;\n\t\t\t\t\t\t\tm[tmp.id].original = d;\n\t\t\t\t\t\t\tif(tmp.state.selected) {\n\t\t\t\t\t\t\t\tadd.push(tmp.id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn tmp.id;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tparse_nest = function (d, p, ps) {\n\t\t\t\t\t\t\tif(!ps) { ps = []; }\n\t\t\t\t\t\t\telse { ps = ps.concat(); }\n\t\t\t\t\t\t\tif(p) { ps.unshift(p); }\n\t\t\t\t\t\t\tvar tid = false, i, j, c, e, tmp;\n\t\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\t\ttid = 'j' + t_id + '_' + (++t_cnt);\n\t\t\t\t\t\t\t} while(m[tid]);\n\n\t\t\t\t\t\t\ttmp = {\n\t\t\t\t\t\t\t\tid\t\t\t: false,\n\t\t\t\t\t\t\t\ttext\t\t: typeof d === 'string' ? d : '',\n\t\t\t\t\t\t\t\ticon\t\t: typeof d === 'object' && d.icon !== undefined ? d.icon : true,\n\t\t\t\t\t\t\t\tparent\t\t: p,\n\t\t\t\t\t\t\t\tparents\t\t: ps,\n\t\t\t\t\t\t\t\tchildren\t: [],\n\t\t\t\t\t\t\t\tchildren_d\t: [],\n\t\t\t\t\t\t\t\tdata\t\t: null,\n\t\t\t\t\t\t\t\tstate\t\t: { },\n\t\t\t\t\t\t\t\tli_attr\t\t: { id : false },\n\t\t\t\t\t\t\t\ta_attr\t\t: { href : '#' },\n\t\t\t\t\t\t\t\toriginal\t: false\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor(i in df) {\n\t\t\t\t\t\t\t\tif(df.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\ttmp.state[i] = df[i];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.id) { tmp.id = d.id.toString(); }\n\t\t\t\t\t\t\tif(d && d.text) { tmp.text = d.text; }\n\t\t\t\t\t\t\tif(d && d.data && d.data.jstree && d.data.jstree.icon) {\n\t\t\t\t\t\t\t\ttmp.icon = d.data.jstree.icon;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.data) {\n\t\t\t\t\t\t\t\ttmp.data = d.data;\n\t\t\t\t\t\t\t\tif(d.data.jstree) {\n\t\t\t\t\t\t\t\t\tfor(i in d.data.jstree) {\n\t\t\t\t\t\t\t\t\t\tif(d.data.jstree.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.state[i] = d.data.jstree[i];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && typeof d.state === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.state) {\n\t\t\t\t\t\t\t\t\tif(d.state.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.state[i] = d.state[i];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && typeof d.li_attr === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.li_attr) {\n\t\t\t\t\t\t\t\t\tif(d.li_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.li_attr[i] = d.li_attr[i];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(tmp.li_attr.id && !tmp.id) {\n\t\t\t\t\t\t\t\ttmp.id = tmp.li_attr.id.toString();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(!tmp.id) {\n\t\t\t\t\t\t\t\ttmp.id = tid;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(!tmp.li_attr.id) {\n\t\t\t\t\t\t\t\ttmp.li_attr.id = tmp.id;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && typeof d.a_attr === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.a_attr) {\n\t\t\t\t\t\t\t\t\tif(d.a_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.a_attr[i] = d.a_attr[i];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.children && d.children.length) {\n\t\t\t\t\t\t\t\tfor(i = 0, j = d.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\tc = parse_nest(d.children[i], tmp.id, ps);\n\t\t\t\t\t\t\t\t\te = m[c];\n\t\t\t\t\t\t\t\t\ttmp.children.push(c);\n\t\t\t\t\t\t\t\t\tif(e.children_d.length) {\n\t\t\t\t\t\t\t\t\t\ttmp.children_d = tmp.children_d.concat(e.children_d);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttmp.children_d = tmp.children_d.concat(tmp.children);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.children && d.children === true) {\n\t\t\t\t\t\t\t\ttmp.state.loaded = false;\n\t\t\t\t\t\t\t\ttmp.children = [];\n\t\t\t\t\t\t\t\ttmp.children_d = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdelete d.data;\n\t\t\t\t\t\t\tdelete d.children;\n\t\t\t\t\t\t\ttmp.original = d;\n\t\t\t\t\t\t\tm[tmp.id] = tmp;\n\t\t\t\t\t\t\tif(tmp.state.selected) {\n\t\t\t\t\t\t\t\tadd.push(tmp.id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn tmp.id;\n\t\t\t\t\t\t};\n\n\t\t\t\t\tif(dat.length && dat[0].id !== undefined && dat[0].parent !== undefined) {\n\t\t\t\t\t\t// Flat JSON support (for easy import from DB):\n\t\t\t\t\t\t// 1) convert to object (foreach)\n\t\t\t\t\t\tfor(i = 0, j = dat.length; i < j; i++) {\n\t\t\t\t\t\t\tif(!dat[i].children) {\n\t\t\t\t\t\t\t\tdat[i].children = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tm[dat[i].id.toString()] = dat[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// 2) populate children (foreach)\n\t\t\t\t\t\tfor(i = 0, j = dat.length; i < j; i++) {\n\t\t\t\t\t\t\tm[dat[i].parent.toString()].children.push(dat[i].id.toString());\n\t\t\t\t\t\t\t// populate parent.children_d\n\t\t\t\t\t\t\tp.children_d.push(dat[i].id.toString());\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// 3) normalize && populate parents and children_d with recursion\n\t\t\t\t\t\tfor(i = 0, j = p.children.length; i < j; i++) {\n\t\t\t\t\t\t\ttmp = parse_flat(m[p.children[i]], par, p.parents.concat());\n\t\t\t\t\t\t\tdpc.push(tmp);\n\t\t\t\t\t\t\tif(m[tmp].children_d.length) {\n\t\t\t\t\t\t\t\tdpc = dpc.concat(m[tmp].children_d);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(i = 0, j = p.parents.length; i < j; i++) {\n\t\t\t\t\t\t\tm[p.parents[i]].children_d = m[p.parents[i]].children_d.concat(dpc);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ?) three_state selection - p.state.selected && t - (if three_state foreach(dat => ch) -> foreach(parents) if(parent.selected) child.selected = true;\n\t\t\t\t\t\trslt = {\n\t\t\t\t\t\t\t'cnt' : t_cnt,\n\t\t\t\t\t\t\t'mod' : m,\n\t\t\t\t\t\t\t'sel' : sel,\n\t\t\t\t\t\t\t'par' : par,\n\t\t\t\t\t\t\t'dpc' : dpc,\n\t\t\t\t\t\t\t'add' : add\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tfor(i = 0, j = dat.length; i < j; i++) {\n\t\t\t\t\t\t\ttmp = parse_nest(dat[i], par, p.parents.concat());\n\t\t\t\t\t\t\tif(tmp) {\n\t\t\t\t\t\t\t\tchd.push(tmp);\n\t\t\t\t\t\t\t\tdpc.push(tmp);\n\t\t\t\t\t\t\t\tif(m[tmp].children_d.length) {\n\t\t\t\t\t\t\t\t\tdpc = dpc.concat(m[tmp].children_d);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tp.children = chd;\n\t\t\t\t\t\tp.children_d = dpc;\n\t\t\t\t\t\tfor(i = 0, j = p.parents.length; i < j; i++) {\n\t\t\t\t\t\t\tm[p.parents[i]].children_d = m[p.parents[i]].children_d.concat(dpc);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trslt = {\n\t\t\t\t\t\t\t'cnt' : t_cnt,\n\t\t\t\t\t\t\t'mod' : m,\n\t\t\t\t\t\t\t'sel' : sel,\n\t\t\t\t\t\t\t'par' : par,\n\t\t\t\t\t\t\t'dpc' : dpc,\n\t\t\t\t\t\t\t'add' : add\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn rslt;\n\t\t\t\t},\n\t\t\t\trslt = function (rslt, worker) {\n\t\t\t\t\tthis._cnt = rslt.cnt;\n\t\t\t\t\tthis._model.data = rslt.mod; // breaks the reference in load_node - careful\n\n\t\t\t\t\tif(worker) {\n\t\t\t\t\t\tvar i, j, a = rslt.add, r = rslt.sel, s = this._data.core.selected.slice(), m = this._model.data;\n\t\t\t\t\t\t// if selection was changed while calculating in worker\n\t\t\t\t\t\tif(r.length !== s.length || $.vakata.array_unique(r.concat(s)).length !== r.length) {\n\t\t\t\t\t\t\t// deselect nodes that are no longer selected\n\t\t\t\t\t\t\tfor(i = 0, j = r.length; i < j; i++) {\n\t\t\t\t\t\t\t\tif($.inArray(r[i], a) === -1 && $.inArray(r[i], s) === -1) {\n\t\t\t\t\t\t\t\t\tm[r[i]].state.selected = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// select nodes that were selected in the mean time\n\t\t\t\t\t\t\tfor(i = 0, j = s.length; i < j; i++) {\n\t\t\t\t\t\t\t\tif($.inArray(s[i], r) === -1) {\n\t\t\t\t\t\t\t\t\tm[s[i]].state.selected = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(rslt.add.length) {\n\t\t\t\t\t\tthis._data.core.selected = this._data.core.selected.concat(rslt.add);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.trigger('model', { \"nodes\" : rslt.dpc, 'parent' : rslt.par });\n\n\t\t\t\t\tif(rslt.par !== '#') {\n\t\t\t\t\t\tthis._node_changed(rslt.par);\n\t\t\t\t\t\tthis.redraw();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// this.get_container_ul().children('.jstree-initial-node').remove();\n\t\t\t\t\t\tthis.redraw(true);\n\t\t\t\t\t}\n\t\t\t\t\tif(rslt.add.length) {\n\t\t\t\t\t\tthis.trigger('changed', { 'action' : 'model', 'selected' : this._data.core.selected });\n\t\t\t\t\t}\n\t\t\t\t\tcb.call(this, true);\n\t\t\t\t};\n\t\t\tif(this.settings.core.worker && window.Blob && window.URL && window.Worker) {\n\t\t\t\ttry {\n\t\t\t\t\tif(this._wrk === null) {\n\t\t\t\t\t\tthis._wrk = window.URL.createObjectURL(\n\t\t\t\t\t\t\tnew window.Blob(\n\t\t\t\t\t\t\t\t['self.onmessage = ' + func.toString().replace(/return ([^;}]+)[\\s;}]+$/, 'postMessage($1);}')],\n\t\t\t\t\t\t\t\t{type:\"text/javascript\"}\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tw = new window.Worker(this._wrk);\n\t\t\t\t\tw.onmessage = $.proxy(function (e) {\n\t\t\t\t\t\trslt.call(this, e.data, true);\n\t\t\t\t\t\tthis._data.core.working = false;\n\t\t\t\t\t\tif(this._data.core.worker_queue.length) {\n\t\t\t\t\t\t\tthis._append_json_data.apply(this, this._data.core.worker_queue.shift());\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this);\n\t\t\t\t\tif(!this._data.core.working) {\n\t\t\t\t\t\tthis._data.core.working = true;\n\t\t\t\t\t\tw.postMessage(args);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._data.core.worker_queue.push([dom, data, cb]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch(e) {\n\t\t\t\t\trslt.call(this, func(args), false);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\trslt.call(this, func(args), false);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * parses a node from a jQuery object and appends them to the in memory tree model. Used internally.\n\t\t * @private\n\t\t * @name _parse_model_from_html(d [, p, ps])\n\t\t * @param {jQuery} d the jQuery object to parse\n\t\t * @param {String} p the parent ID\n\t\t * @param {Array} ps list of all parents\n\t\t * @return {String} the ID of the object added to the model\n\t\t */\n\t\t_parse_model_from_html : function (d, p, ps) {\n\t\t\tif(!ps) { ps = []; }\n\t\t\telse { ps = [].concat(ps); }\n\t\t\tif(p) { ps.unshift(p); }\n\t\t\tvar c, e, m = this._model.data,\n\t\t\t\tdata = {\n\t\t\t\t\tid\t\t\t: false,\n\t\t\t\t\ttext\t\t: false,\n\t\t\t\t\ticon\t\t: true,\n\t\t\t\t\tparent\t\t: p,\n\t\t\t\t\tparents\t\t: ps,\n\t\t\t\t\tchildren\t: [],\n\t\t\t\t\tchildren_d\t: [],\n\t\t\t\t\tdata\t\t: null,\n\t\t\t\t\tstate\t\t: { },\n\t\t\t\t\tli_attr\t\t: { id : false },\n\t\t\t\t\ta_attr\t\t: { href : '#' },\n\t\t\t\t\toriginal\t: false\n\t\t\t\t}, i, tmp, tid;\n\t\t\tfor(i in this._model.default_state) {\n\t\t\t\tif(this._model.default_state.hasOwnProperty(i)) {\n\t\t\t\t\tdata.state[i] = this._model.default_state[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\ttmp = $.vakata.attributes(d, true);\n\t\t\t$.each(tmp, function (i, v) {\n\t\t\t\tv = $.trim(v);\n\t\t\t\tif(!v.length) { return true; }\n\t\t\t\tdata.li_attr[i] = v;\n\t\t\t\tif(i === 'id') {\n\t\t\t\t\tdata.id = v.toString();\n\t\t\t\t}\n\t\t\t});\n\t\t\ttmp = d.children('a').eq(0);\n\t\t\tif(tmp.length) {\n\t\t\t\ttmp = $.vakata.attributes(tmp, true);\n\t\t\t\t$.each(tmp, function (i, v) {\n\t\t\t\t\tv = $.trim(v);\n\t\t\t\t\tif(v.length) {\n\t\t\t\t\t\tdata.a_attr[i] = v;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\ttmp = d.children(\"a:eq(0)\").length ? d.children(\"a:eq(0)\").clone() : d.clone();\n\t\t\ttmp.children(\"ins, i, ul\").remove();\n\t\t\ttmp = tmp.html();\n\t\t\ttmp = $('

    ').html(tmp);\n\t\t\tdata.text = this.settings.core.force_text ? tmp.text() : tmp.html();\n\t\t\ttmp = d.data();\n\t\t\tdata.data = tmp ? $.extend(true, {}, tmp) : null;\n\t\t\tdata.state.opened = d.hasClass('jstree-open');\n\t\t\tdata.state.selected = d.children('a').hasClass('jstree-clicked');\n\t\t\tdata.state.disabled = d.children('a').hasClass('jstree-disabled');\n\t\t\tif(data.data && data.data.jstree) {\n\t\t\t\tfor(i in data.data.jstree) {\n\t\t\t\t\tif(data.data.jstree.hasOwnProperty(i)) {\n\t\t\t\t\t\tdata.state[i] = data.data.jstree[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttmp = d.children(\"a\").children(\".jstree-themeicon\");\n\t\t\tif(tmp.length) {\n\t\t\t\tdata.icon = tmp.hasClass('jstree-themeicon-hidden') ? false : tmp.attr('rel');\n\t\t\t}\n\t\t\tif(data.state.icon) {\n\t\t\t\tdata.icon = data.state.icon;\n\t\t\t}\n\t\t\ttmp = d.children(\"ul\").children(\"li\");\n\t\t\tdo {\n\t\t\t\ttid = 'j' + this._id + '_' + (++this._cnt);\n\t\t\t} while(m[tid]);\n\t\t\tdata.id = data.li_attr.id ? data.li_attr.id.toString() : tid;\n\t\t\tif(tmp.length) {\n\t\t\t\ttmp.each($.proxy(function (i, v) {\n\t\t\t\t\tc = this._parse_model_from_html($(v), data.id, ps);\n\t\t\t\t\te = this._model.data[c];\n\t\t\t\t\tdata.children.push(c);\n\t\t\t\t\tif(e.children_d.length) {\n\t\t\t\t\t\tdata.children_d = data.children_d.concat(e.children_d);\n\t\t\t\t\t}\n\t\t\t\t}, this));\n\t\t\t\tdata.children_d = data.children_d.concat(data.children);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif(d.hasClass('jstree-closed')) {\n\t\t\t\t\tdata.state.loaded = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(data.li_attr['class']) {\n\t\t\t\tdata.li_attr['class'] = data.li_attr['class'].replace('jstree-closed','').replace('jstree-open','');\n\t\t\t}\n\t\t\tif(data.a_attr['class']) {\n\t\t\t\tdata.a_attr['class'] = data.a_attr['class'].replace('jstree-clicked','').replace('jstree-disabled','');\n\t\t\t}\n\t\t\tm[data.id] = data;\n\t\t\tif(data.state.selected) {\n\t\t\t\tthis._data.core.selected.push(data.id);\n\t\t\t}\n\t\t\treturn data.id;\n\t\t},\n\t\t/**\n\t\t * parses a node from a JSON object (used when dealing with flat data, which has no nesting of children, but has id and parent properties) and appends it to the in memory tree model. Used internally.\n\t\t * @private\n\t\t * @name _parse_model_from_flat_json(d [, p, ps])\n\t\t * @param {Object} d the JSON object to parse\n\t\t * @param {String} p the parent ID\n\t\t * @param {Array} ps list of all parents\n\t\t * @return {String} the ID of the object added to the model\n\t\t */\n\t\t_parse_model_from_flat_json : function (d, p, ps) {\n\t\t\tif(!ps) { ps = []; }\n\t\t\telse { ps = ps.concat(); }\n\t\t\tif(p) { ps.unshift(p); }\n\t\t\tvar tid = d.id.toString(),\n\t\t\t\tm = this._model.data,\n\t\t\t\tdf = this._model.default_state,\n\t\t\t\ti, j, c, e,\n\t\t\t\ttmp = {\n\t\t\t\t\tid\t\t\t: tid,\n\t\t\t\t\ttext\t\t: d.text || '',\n\t\t\t\t\ticon\t\t: d.icon !== undefined ? d.icon : true,\n\t\t\t\t\tparent\t\t: p,\n\t\t\t\t\tparents\t\t: ps,\n\t\t\t\t\tchildren\t: d.children || [],\n\t\t\t\t\tchildren_d\t: d.children_d || [],\n\t\t\t\t\tdata\t\t: d.data,\n\t\t\t\t\tstate\t\t: { },\n\t\t\t\t\tli_attr\t\t: { id : false },\n\t\t\t\t\ta_attr\t\t: { href : '#' },\n\t\t\t\t\toriginal\t: false\n\t\t\t\t};\n\t\t\tfor(i in df) {\n\t\t\t\tif(df.hasOwnProperty(i)) {\n\t\t\t\t\ttmp.state[i] = df[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && d.data && d.data.jstree && d.data.jstree.icon) {\n\t\t\t\ttmp.icon = d.data.jstree.icon;\n\t\t\t}\n\t\t\tif(d && d.data) {\n\t\t\t\ttmp.data = d.data;\n\t\t\t\tif(d.data.jstree) {\n\t\t\t\t\tfor(i in d.data.jstree) {\n\t\t\t\t\t\tif(d.data.jstree.hasOwnProperty(i)) {\n\t\t\t\t\t\t\ttmp.state[i] = d.data.jstree[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && typeof d.state === 'object') {\n\t\t\t\tfor (i in d.state) {\n\t\t\t\t\tif(d.state.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.state[i] = d.state[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && typeof d.li_attr === 'object') {\n\t\t\t\tfor (i in d.li_attr) {\n\t\t\t\t\tif(d.li_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.li_attr[i] = d.li_attr[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(!tmp.li_attr.id) {\n\t\t\t\ttmp.li_attr.id = tid;\n\t\t\t}\n\t\t\tif(d && typeof d.a_attr === 'object') {\n\t\t\t\tfor (i in d.a_attr) {\n\t\t\t\t\tif(d.a_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.a_attr[i] = d.a_attr[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && d.children && d.children === true) {\n\t\t\t\ttmp.state.loaded = false;\n\t\t\t\ttmp.children = [];\n\t\t\t\ttmp.children_d = [];\n\t\t\t}\n\t\t\tm[tmp.id] = tmp;\n\t\t\tfor(i = 0, j = tmp.children.length; i < j; i++) {\n\t\t\t\tc = this._parse_model_from_flat_json(m[tmp.children[i]], tmp.id, ps);\n\t\t\t\te = m[c];\n\t\t\t\ttmp.children_d.push(c);\n\t\t\t\tif(e.children_d.length) {\n\t\t\t\t\ttmp.children_d = tmp.children_d.concat(e.children_d);\n\t\t\t\t}\n\t\t\t}\n\t\t\tdelete d.data;\n\t\t\tdelete d.children;\n\t\t\tm[tmp.id].original = d;\n\t\t\tif(tmp.state.selected) {\n\t\t\t\tthis._data.core.selected.push(tmp.id);\n\t\t\t}\n\t\t\treturn tmp.id;\n\t\t},\n\t\t/**\n\t\t * parses a node from a JSON object and appends it to the in memory tree model. Used internally.\n\t\t * @private\n\t\t * @name _parse_model_from_json(d [, p, ps])\n\t\t * @param {Object} d the JSON object to parse\n\t\t * @param {String} p the parent ID\n\t\t * @param {Array} ps list of all parents\n\t\t * @return {String} the ID of the object added to the model\n\t\t */\n\t\t_parse_model_from_json : function (d, p, ps) {\n\t\t\tif(!ps) { ps = []; }\n\t\t\telse { ps = ps.concat(); }\n\t\t\tif(p) { ps.unshift(p); }\n\t\t\tvar tid = false, i, j, c, e, m = this._model.data, df = this._model.default_state, tmp;\n\t\t\tdo {\n\t\t\t\ttid = 'j' + this._id + '_' + (++this._cnt);\n\t\t\t} while(m[tid]);\n\n\t\t\ttmp = {\n\t\t\t\tid\t\t\t: false,\n\t\t\t\ttext\t\t: typeof d === 'string' ? d : '',\n\t\t\t\ticon\t\t: typeof d === 'object' && d.icon !== undefined ? d.icon : true,\n\t\t\t\tparent\t\t: p,\n\t\t\t\tparents\t\t: ps,\n\t\t\t\tchildren\t: [],\n\t\t\t\tchildren_d\t: [],\n\t\t\t\tdata\t\t: null,\n\t\t\t\tstate\t\t: { },\n\t\t\t\tli_attr\t\t: { id : false },\n\t\t\t\ta_attr\t\t: { href : '#' },\n\t\t\t\toriginal\t: false\n\t\t\t};\n\t\t\tfor(i in df) {\n\t\t\t\tif(df.hasOwnProperty(i)) {\n\t\t\t\t\ttmp.state[i] = df[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && d.id) { tmp.id = d.id.toString(); }\n\t\t\tif(d && d.text) { tmp.text = d.text; }\n\t\t\tif(d && d.data && d.data.jstree && d.data.jstree.icon) {\n\t\t\t\ttmp.icon = d.data.jstree.icon;\n\t\t\t}\n\t\t\tif(d && d.data) {\n\t\t\t\ttmp.data = d.data;\n\t\t\t\tif(d.data.jstree) {\n\t\t\t\t\tfor(i in d.data.jstree) {\n\t\t\t\t\t\tif(d.data.jstree.hasOwnProperty(i)) {\n\t\t\t\t\t\t\ttmp.state[i] = d.data.jstree[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && typeof d.state === 'object') {\n\t\t\t\tfor (i in d.state) {\n\t\t\t\t\tif(d.state.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.state[i] = d.state[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && typeof d.li_attr === 'object') {\n\t\t\t\tfor (i in d.li_attr) {\n\t\t\t\t\tif(d.li_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.li_attr[i] = d.li_attr[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(tmp.li_attr.id && !tmp.id) {\n\t\t\t\ttmp.id = tmp.li_attr.id.toString();\n\t\t\t}\n\t\t\tif(!tmp.id) {\n\t\t\t\ttmp.id = tid;\n\t\t\t}\n\t\t\tif(!tmp.li_attr.id) {\n\t\t\t\ttmp.li_attr.id = tmp.id;\n\t\t\t}\n\t\t\tif(d && typeof d.a_attr === 'object') {\n\t\t\t\tfor (i in d.a_attr) {\n\t\t\t\t\tif(d.a_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.a_attr[i] = d.a_attr[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && d.children && d.children.length) {\n\t\t\t\tfor(i = 0, j = d.children.length; i < j; i++) {\n\t\t\t\t\tc = this._parse_model_from_json(d.children[i], tmp.id, ps);\n\t\t\t\t\te = m[c];\n\t\t\t\t\ttmp.children.push(c);\n\t\t\t\t\tif(e.children_d.length) {\n\t\t\t\t\t\ttmp.children_d = tmp.children_d.concat(e.children_d);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttmp.children_d = tmp.children_d.concat(tmp.children);\n\t\t\t}\n\t\t\tif(d && d.children && d.children === true) {\n\t\t\t\ttmp.state.loaded = false;\n\t\t\t\ttmp.children = [];\n\t\t\t\ttmp.children_d = [];\n\t\t\t}\n\t\t\tdelete d.data;\n\t\t\tdelete d.children;\n\t\t\ttmp.original = d;\n\t\t\tm[tmp.id] = tmp;\n\t\t\tif(tmp.state.selected) {\n\t\t\t\tthis._data.core.selected.push(tmp.id);\n\t\t\t}\n\t\t\treturn tmp.id;\n\t\t},\n\t\t/**\n\t\t * redraws all nodes that need to be redrawn. Used internally.\n\t\t * @private\n\t\t * @name _redraw()\n\t\t * @trigger redraw.jstree\n\t\t */\n\t\t_redraw : function () {\n\t\t\tvar nodes = this._model.force_full_redraw ? this._model.data['#'].children.concat([]) : this._model.changed.concat([]),\n\t\t\t\tf = document.createElement('UL'), tmp, i, j;\n\t\t\tfor(i = 0, j = nodes.length; i < j; i++) {\n\t\t\t\ttmp = this.redraw_node(nodes[i], true, this._model.force_full_redraw);\n\t\t\t\tif(tmp && this._model.force_full_redraw) {\n\t\t\t\t\tf.appendChild(tmp);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(this._model.force_full_redraw) {\n\t\t\t\tf.className = this.get_container_ul()[0].className;\n\t\t\t\tthis.element.empty().append(f);\n\t\t\t\t//this.get_container_ul()[0].appendChild(f);\n\t\t\t}\n\t\t\tthis._model.force_full_redraw = false;\n\t\t\tthis._model.changed = [];\n\t\t\t/**\n\t\t\t * triggered after nodes are redrawn\n\t\t\t * @event\n\t\t\t * @name redraw.jstree\n\t\t\t * @param {array} nodes the redrawn nodes\n\t\t\t */\n\t\t\tthis.trigger('redraw', { \"nodes\" : nodes });\n\t\t},\n\t\t/**\n\t\t * redraws all nodes that need to be redrawn or optionally - the whole tree\n\t\t * @name redraw([full])\n\t\t * @param {Boolean} full if set to `true` all nodes are redrawn.\n\t\t */\n\t\tredraw : function (full) {\n\t\t\tif(full) {\n\t\t\t\tthis._model.force_full_redraw = true;\n\t\t\t}\n\t\t\t//if(this._model.redraw_timeout) {\n\t\t\t//\tclearTimeout(this._model.redraw_timeout);\n\t\t\t//}\n\t\t\t//this._model.redraw_timeout = setTimeout($.proxy(this._redraw, this),0);\n\t\t\tthis._redraw();\n\t\t},\n\t\t/**\n\t\t * redraws a single node. Used internally.\n\t\t * @private\n\t\t * @name redraw_node(node, deep, is_callback)\n\t\t * @param {mixed} node the node to redraw\n\t\t * @param {Boolean} deep should child nodes be redrawn too\n\t\t * @param {Boolean} is_callback is this a recursion call\n\t\t */\n\t\tredraw_node : function (node, deep, is_callback) {\n\t\t\tvar obj = this.get_node(node),\n\t\t\t\tpar = false,\n\t\t\t\tind = false,\n\t\t\t\told = false,\n\t\t\t\ti = false,\n\t\t\t\tj = false,\n\t\t\t\tk = false,\n\t\t\t\tc = '',\n\t\t\t\td = document,\n\t\t\t\tm = this._model.data,\n\t\t\t\tf = false,\n\t\t\t\ts = false,\n\t\t\t\ttmp = null;\n\t\t\tif(!obj) { return false; }\n\t\t\tif(obj.id === '#') { return this.redraw(true); }\n\t\t\tdeep = deep || obj.children.length === 0;\n\t\t\tnode = !document.querySelector ? document.getElementById(obj.id) : this.element[0].querySelector('#' + (\"0123456789\".indexOf(obj.id[0]) !== -1 ? '\\\\3' + obj.id[0] + ' ' + obj.id.substr(1).replace($.jstree.idregex,'\\\\$&') : obj.id.replace($.jstree.idregex,'\\\\$&')) ); //, this.element);\n\t\t\tif(!node) {\n\t\t\t\tdeep = true;\n\t\t\t\t//node = d.createElement('LI');\n\t\t\t\tif(!is_callback) {\n\t\t\t\t\tpar = obj.parent !== '#' ? $('#' + obj.parent.replace($.jstree.idregex,'\\\\$&'), this.element)[0] : null;\n\t\t\t\t\tif(par !== null && (!par || !m[obj.parent].state.opened)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tind = $.inArray(obj.id, par === null ? m['#'].children : m[obj.parent].children);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnode = $(node);\n\t\t\t\tif(!is_callback) {\n\t\t\t\t\tpar = node.parent().parent()[0];\n\t\t\t\t\tif(par === this.element[0]) {\n\t\t\t\t\t\tpar = null;\n\t\t\t\t\t}\n\t\t\t\t\tind = node.index();\n\t\t\t\t}\n\t\t\t\t// m[obj.id].data = node.data(); // use only node's data, no need to touch jquery storage\n\t\t\t\tif(!deep && obj.children.length && !node.children('.jstree-children').length) {\n\t\t\t\t\tdeep = true;\n\t\t\t\t}\n\t\t\t\tif(!deep) {\n\t\t\t\t\told = node.children('.jstree-children')[0];\n\t\t\t\t}\n\t\t\t\ts = node.attr('aria-selected');\n\t\t\t\tf = node.children('.jstree-anchor')[0] === document.activeElement;\n\t\t\t\tnode.remove();\n\t\t\t\t//node = d.createElement('LI');\n\t\t\t\t//node = node[0];\n\t\t\t}\n\t\t\tnode = _node.cloneNode(true);\n\t\t\t// node is DOM, deep is boolean\n\n\t\t\tc = 'jstree-node ';\n\t\t\tfor(i in obj.li_attr) {\n\t\t\t\tif(obj.li_attr.hasOwnProperty(i)) {\n\t\t\t\t\tif(i === 'id') { continue; }\n\t\t\t\t\tif(i !== 'class') {\n\t\t\t\t\t\tnode.setAttribute(i, obj.li_attr[i]);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tc += obj.li_attr[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(s && s !== \"false\") {\n\t\t\t\tnode.setAttribute('aria-selected', true);\n\t\t\t}\n\t\t\tif(obj.state.loaded && !obj.children.length) {\n\t\t\t\tc += ' jstree-leaf';\n\t\t\t}\n\t\t\telse {\n\t\t\t\tc += obj.state.opened && obj.state.loaded ? ' jstree-open' : ' jstree-closed';\n\t\t\t\tnode.setAttribute('aria-expanded', (obj.state.opened && obj.state.loaded) );\n\t\t\t}\n\t\t\tif(obj.parent !== null && m[obj.parent].children[m[obj.parent].children.length - 1] === obj.id) {\n\t\t\t\tc += ' jstree-last';\n\t\t\t}\n\t\t\tnode.id = obj.id;\n\t\t\tnode.className = c;\n\t\t\tc = ( obj.state.selected ? ' jstree-clicked' : '') + ( obj.state.disabled ? ' jstree-disabled' : '');\n\t\t\tfor(j in obj.a_attr) {\n\t\t\t\tif(obj.a_attr.hasOwnProperty(j)) {\n\t\t\t\t\tif(j === 'href' && obj.a_attr[j] === '#') { continue; }\n\t\t\t\t\tif(j !== 'class') {\n\t\t\t\t\t\tnode.childNodes[1].setAttribute(j, obj.a_attr[j]);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tc += ' ' + obj.a_attr[j];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(c.length) {\n\t\t\t\tnode.childNodes[1].className = 'jstree-anchor ' + c;\n\t\t\t}\n\t\t\tif((obj.icon && obj.icon !== true) || obj.icon === false) {\n\t\t\t\tif(obj.icon === false) {\n\t\t\t\t\tnode.childNodes[1].childNodes[0].className += ' jstree-themeicon-hidden';\n\t\t\t\t}\n\t\t\t\telse if(obj.icon.indexOf('/') === -1 && obj.icon.indexOf('.') === -1) {\n\t\t\t\t\tnode.childNodes[1].childNodes[0].className += ' ' + obj.icon + ' jstree-themeicon-custom';\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnode.childNodes[1].childNodes[0].style.backgroundImage = 'url('+obj.icon+')';\n\t\t\t\t\tnode.childNodes[1].childNodes[0].style.backgroundPosition = 'center center';\n\t\t\t\t\tnode.childNodes[1].childNodes[0].style.backgroundSize = 'auto';\n\t\t\t\t\tnode.childNodes[1].childNodes[0].className += ' jstree-themeicon-custom';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.settings.core.force_text) {\n\t\t\t\tnode.childNodes[1].appendChild(d.createTextNode(obj.text));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnode.childNodes[1].innerHTML += obj.text;\n\t\t\t}\n\n\t\t\tif(deep && obj.children.length && obj.state.opened && obj.state.loaded) {\n\t\t\t\tk = d.createElement('UL');\n\t\t\t\tk.setAttribute('role', 'group');\n\t\t\t\tk.className = 'jstree-children';\n\t\t\t\tfor(i = 0, j = obj.children.length; i < j; i++) {\n\t\t\t\t\tk.appendChild(this.redraw_node(obj.children[i], deep, true));\n\t\t\t\t}\n\t\t\t\tnode.appendChild(k);\n\t\t\t}\n\t\t\tif(old) {\n\t\t\t\tnode.appendChild(old);\n\t\t\t}\n\t\t\tif(!is_callback) {\n\t\t\t\t// append back using par / ind\n\t\t\t\tif(!par) {\n\t\t\t\t\tpar = this.element[0];\n\t\t\t\t}\n\t\t\t\tfor(i = 0, j = par.childNodes.length; i < j; i++) {\n\t\t\t\t\tif(par.childNodes[i] && par.childNodes[i].className && par.childNodes[i].className.indexOf('jstree-children') !== -1) {\n\t\t\t\t\t\ttmp = par.childNodes[i];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!tmp) {\n\t\t\t\t\ttmp = d.createElement('UL');\n\t\t\t\t\ttmp.setAttribute('role', 'group');\n\t\t\t\t\ttmp.className = 'jstree-children';\n\t\t\t\t\tpar.appendChild(tmp);\n\t\t\t\t}\n\t\t\t\tpar = tmp;\n\n\t\t\t\tif(ind < par.childNodes.length) {\n\t\t\t\t\tpar.insertBefore(node, par.childNodes[ind]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tpar.appendChild(node);\n\t\t\t\t}\n\t\t\t\tif(f) {\n\t\t\t\t\tnode.childNodes[1].focus();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(obj.state.opened && !obj.state.loaded) {\n\t\t\t\tobj.state.opened = false;\n\t\t\t\tsetTimeout($.proxy(function () {\n\t\t\t\t\tthis.open_node(obj.id, false, 0);\n\t\t\t\t}, this), 0);\n\t\t\t}\n\t\t\treturn node;\n\t\t},\n\t\t/**\n\t\t * opens a node, revaling its children. If the node is not loaded it will be loaded and opened once ready.\n\t\t * @name open_node(obj [, callback, animation])\n\t\t * @param {mixed} obj the node to open\n\t\t * @param {Function} callback a function to execute once the node is opened\n\t\t * @param {Number} animation the animation duration in milliseconds when opening the node (overrides the `core.animation` setting). Use `false` for no animation.\n\t\t * @trigger open_node.jstree, after_open.jstree, before_open.jstree\n\t\t */\n\t\topen_node : function (obj, callback, animation) {\n\t\t\tvar t1, t2, d, t;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.open_node(obj[t1], callback, animation);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tanimation = animation === undefined ? this.settings.core.animation : animation;\n\t\t\tif(!this.is_closed(obj)) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback.call(this, obj, false);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(!this.is_loaded(obj)) {\n\t\t\t\tif(this.is_loading(obj)) {\n\t\t\t\t\treturn setTimeout($.proxy(function () {\n\t\t\t\t\t\tthis.open_node(obj, callback, animation);\n\t\t\t\t\t}, this), 500);\n\t\t\t\t}\n\t\t\t\tthis.load_node(obj, function (o, ok) {\n\t\t\t\t\treturn ok ? this.open_node(o, callback, animation) : (callback ? callback.call(this, o, false) : false);\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\td = this.get_node(obj, true);\n\t\t\t\tt = this;\n\t\t\t\tif(d.length) {\n\t\t\t\t\tif(obj.children.length && !this._firstChild(d.children('.jstree-children')[0])) {\n\t\t\t\t\t\tobj.state.opened = true;\n\t\t\t\t\t\tthis.redraw_node(obj, true);\n\t\t\t\t\t\td = this.get_node(obj, true);\n\t\t\t\t\t}\n\t\t\t\t\tif(!animation) {\n\t\t\t\t\t\tthis.trigger('before_open', { \"node\" : obj });\n\t\t\t\t\t\td[0].className = d[0].className.replace('jstree-closed', 'jstree-open');\n\t\t\t\t\t\td[0].setAttribute(\"aria-expanded\", true);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.trigger('before_open', { \"node\" : obj });\n\t\t\t\t\t\td\n\t\t\t\t\t\t\t.children(\".jstree-children\").css(\"display\",\"none\").end()\n\t\t\t\t\t\t\t.removeClass(\"jstree-closed\").addClass(\"jstree-open\").attr(\"aria-expanded\", true)\n\t\t\t\t\t\t\t.children(\".jstree-children\").stop(true, true)\n\t\t\t\t\t\t\t\t.slideDown(animation, function () {\n\t\t\t\t\t\t\t\t\tthis.style.display = \"\";\n\t\t\t\t\t\t\t\t\tt.trigger(\"after_open\", { \"node\" : obj });\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tobj.state.opened = true;\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback.call(this, obj, true);\n\t\t\t\t}\n\t\t\t\tif(!d.length) {\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered when a node is about to be opened (if the node is supposed to be in the DOM, it will be, but it won't be visible yet)\n\t\t\t\t\t * @event\n\t\t\t\t\t * @name before_open.jstree\n\t\t\t\t\t * @param {Object} node the opened node\n\t\t\t\t\t */\n\t\t\t\t\tthis.trigger('before_open', { \"node\" : obj });\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when a node is opened (if there is an animation it will not be completed yet)\n\t\t\t\t * @event\n\t\t\t\t * @name open_node.jstree\n\t\t\t\t * @param {Object} node the opened node\n\t\t\t\t */\n\t\t\t\tthis.trigger('open_node', { \"node\" : obj });\n\t\t\t\tif(!animation || !d.length) {\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered when a node is opened and the animation is complete\n\t\t\t\t\t * @event\n\t\t\t\t\t * @name after_open.jstree\n\t\t\t\t\t * @param {Object} node the opened node\n\t\t\t\t\t */\n\t\t\t\t\tthis.trigger(\"after_open\", { \"node\" : obj });\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * opens every parent of a node (node should be loaded)\n\t\t * @name _open_to(obj)\n\t\t * @param {mixed} obj the node to reveal\n\t\t * @private\n\t\t */\n\t\t_open_to : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar i, j, p = obj.parents;\n\t\t\tfor(i = 0, j = p.length; i < j; i+=1) {\n\t\t\t\tif(i !== '#') {\n\t\t\t\t\tthis.open_node(p[i], false, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn $('#' + obj.id.replace($.jstree.idregex,'\\\\$&'), this.element);\n\t\t},\n\t\t/**\n\t\t * closes a node, hiding its children\n\t\t * @name close_node(obj [, animation])\n\t\t * @param {mixed} obj the node to close\n\t\t * @param {Number} animation the animation duration in milliseconds when closing the node (overrides the `core.animation` setting). Use `false` for no animation.\n\t\t * @trigger close_node.jstree, after_close.jstree\n\t\t */\n\t\tclose_node : function (obj, animation) {\n\t\t\tvar t1, t2, t, d;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.close_node(obj[t1], animation);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(this.is_closed(obj)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tanimation = animation === undefined ? this.settings.core.animation : animation;\n\t\t\tt = this;\n\t\t\td = this.get_node(obj, true);\n\t\t\tif(d.length) {\n\t\t\t\tif(!animation) {\n\t\t\t\t\td[0].className = d[0].className.replace('jstree-open', 'jstree-closed');\n\t\t\t\t\td.attr(\"aria-expanded\", false).children('.jstree-children').remove();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\td\n\t\t\t\t\t\t.children(\".jstree-children\").attr(\"style\",\"display:block !important\").end()\n\t\t\t\t\t\t.removeClass(\"jstree-open\").addClass(\"jstree-closed\").attr(\"aria-expanded\", false)\n\t\t\t\t\t\t.children(\".jstree-children\").stop(true, true).slideUp(animation, function () {\n\t\t\t\t\t\t\tthis.style.display = \"\";\n\t\t\t\t\t\t\td.children('.jstree-children').remove();\n\t\t\t\t\t\t\tt.trigger(\"after_close\", { \"node\" : obj });\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tobj.state.opened = false;\n\t\t\t/**\n\t\t\t * triggered when a node is closed (if there is an animation it will not be complete yet)\n\t\t\t * @event\n\t\t\t * @name close_node.jstree\n\t\t\t * @param {Object} node the closed node\n\t\t\t */\n\t\t\tthis.trigger('close_node',{ \"node\" : obj });\n\t\t\tif(!animation || !d.length) {\n\t\t\t\t/**\n\t\t\t\t * triggered when a node is closed and the animation is complete\n\t\t\t\t * @event\n\t\t\t\t * @name after_close.jstree\n\t\t\t\t * @param {Object} node the closed node\n\t\t\t\t */\n\t\t\t\tthis.trigger(\"after_close\", { \"node\" : obj });\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * toggles a node - closing it if it is open, opening it if it is closed\n\t\t * @name toggle_node(obj)\n\t\t * @param {mixed} obj the node to toggle\n\t\t */\n\t\ttoggle_node : function (obj) {\n\t\t\tvar t1, t2;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.toggle_node(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.is_closed(obj)) {\n\t\t\t\treturn this.open_node(obj);\n\t\t\t}\n\t\t\tif(this.is_open(obj)) {\n\t\t\t\treturn this.close_node(obj);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * opens all nodes within a node (or the tree), revaling their children. If the node is not loaded it will be loaded and opened once ready.\n\t\t * @name open_all([obj, animation, original_obj])\n\t\t * @param {mixed} obj the node to open recursively, omit to open all nodes in the tree\n\t\t * @param {Number} animation the animation duration in milliseconds when opening the nodes, the default is no animation\n\t\t * @param {jQuery} reference to the node that started the process (internal use)\n\t\t * @trigger open_all.jstree\n\t\t */\n\t\topen_all : function (obj, animation, original_obj) {\n\t\t\tif(!obj) { obj = '#'; }\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj) { return false; }\n\t\t\tvar dom = obj.id === '#' ? this.get_container_ul() : this.get_node(obj, true), i, j, _this;\n\t\t\tif(!dom.length) {\n\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\tif(this.is_closed(this._model.data[obj.children_d[i]])) {\n\t\t\t\t\t\tthis._model.data[obj.children_d[i]].state.opened = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this.trigger('open_all', { \"node\" : obj });\n\t\t\t}\n\t\t\toriginal_obj = original_obj || dom;\n\t\t\t_this = this;\n\t\t\tdom = this.is_closed(obj) ? dom.find('.jstree-closed').addBack() : dom.find('.jstree-closed');\n\t\t\tdom.each(function () {\n\t\t\t\t_this.open_node(\n\t\t\t\t\tthis,\n\t\t\t\t\tfunction(node, status) { if(status && this.is_parent(node)) { this.open_all(node, animation, original_obj); } },\n\t\t\t\t\tanimation || 0\n\t\t\t\t);\n\t\t\t});\n\t\t\tif(original_obj.find('.jstree-closed').length === 0) {\n\t\t\t\t/**\n\t\t\t\t * triggered when an `open_all` call completes\n\t\t\t\t * @event\n\t\t\t\t * @name open_all.jstree\n\t\t\t\t * @param {Object} node the opened node\n\t\t\t\t */\n\t\t\t\tthis.trigger('open_all', { \"node\" : this.get_node(original_obj) });\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * closes all nodes within a node (or the tree), revaling their children\n\t\t * @name close_all([obj, animation])\n\t\t * @param {mixed} obj the node to close recursively, omit to close all nodes in the tree\n\t\t * @param {Number} animation the animation duration in milliseconds when closing the nodes, the default is no animation\n\t\t * @trigger close_all.jstree\n\t\t */\n\t\tclose_all : function (obj, animation) {\n\t\t\tif(!obj) { obj = '#'; }\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj) { return false; }\n\t\t\tvar dom = obj.id === '#' ? this.get_container_ul() : this.get_node(obj, true),\n\t\t\t\t_this = this, i, j;\n\t\t\tif(!dom.length) {\n\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\tthis._model.data[obj.children_d[i]].state.opened = false;\n\t\t\t\t}\n\t\t\t\treturn this.trigger('close_all', { \"node\" : obj });\n\t\t\t}\n\t\t\tdom = this.is_open(obj) ? dom.find('.jstree-open').addBack() : dom.find('.jstree-open');\n\t\t\t$(dom.get().reverse()).each(function () { _this.close_node(this, animation || 0); });\n\t\t\t/**\n\t\t\t * triggered when an `close_all` call completes\n\t\t\t * @event\n\t\t\t * @name close_all.jstree\n\t\t\t * @param {Object} node the closed node\n\t\t\t */\n\t\t\tthis.trigger('close_all', { \"node\" : obj });\n\t\t},\n\t\t/**\n\t\t * checks if a node is disabled (not selectable)\n\t\t * @name is_disabled(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_disabled : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && obj.state && obj.state.disabled;\n\t\t},\n\t\t/**\n\t\t * enables a node - so that it can be selected\n\t\t * @name enable_node(obj)\n\t\t * @param {mixed} obj the node to enable\n\t\t * @trigger enable_node.jstree\n\t\t */\n\t\tenable_node : function (obj) {\n\t\t\tvar t1, t2;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.enable_node(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tobj.state.disabled = false;\n\t\t\tthis.get_node(obj,true).children('.jstree-anchor').removeClass('jstree-disabled');\n\t\t\t/**\n\t\t\t * triggered when an node is enabled\n\t\t\t * @event\n\t\t\t * @name enable_node.jstree\n\t\t\t * @param {Object} node the enabled node\n\t\t\t */\n\t\t\tthis.trigger('enable_node', { 'node' : obj });\n\t\t},\n\t\t/**\n\t\t * disables a node - so that it can not be selected\n\t\t * @name disable_node(obj)\n\t\t * @param {mixed} obj the node to disable\n\t\t * @trigger disable_node.jstree\n\t\t */\n\t\tdisable_node : function (obj) {\n\t\t\tvar t1, t2;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.disable_node(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tobj.state.disabled = true;\n\t\t\tthis.get_node(obj,true).children('.jstree-anchor').addClass('jstree-disabled');\n\t\t\t/**\n\t\t\t * triggered when an node is disabled\n\t\t\t * @event\n\t\t\t * @name disable_node.jstree\n\t\t\t * @param {Object} node the disabled node\n\t\t\t */\n\t\t\tthis.trigger('disable_node', { 'node' : obj });\n\t\t},\n\t\t/**\n\t\t * called when a node is selected by the user. Used internally.\n\t\t * @private\n\t\t * @name activate_node(obj, e)\n\t\t * @param {mixed} obj the node\n\t\t * @param {Object} e the related event\n\t\t * @trigger activate_node.jstree\n\t\t */\n\t\tactivate_node : function (obj, e) {\n\t\t\tif(this.is_disabled(obj)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// ensure last_clicked is still in the DOM, make it fresh (maybe it was moved?) and make sure it is still selected, if not - make last_clicked the last selected node\n\t\t\tthis._data.core.last_clicked = this._data.core.last_clicked && this._data.core.last_clicked.id !== undefined ? this.get_node(this._data.core.last_clicked.id) : null;\n\t\t\tif(this._data.core.last_clicked && !this._data.core.last_clicked.state.selected) { this._data.core.last_clicked = null; }\n\t\t\tif(!this._data.core.last_clicked && this._data.core.selected.length) { this._data.core.last_clicked = this.get_node(this._data.core.selected[this._data.core.selected.length - 1]); }\n\n\t\t\tif(!this.settings.core.multiple || (!e.metaKey && !e.ctrlKey && !e.shiftKey) || (e.shiftKey && (!this._data.core.last_clicked || !this.get_parent(obj) || this.get_parent(obj) !== this._data.core.last_clicked.parent ) )) {\n\t\t\t\tif(!this.settings.core.multiple && (e.metaKey || e.ctrlKey || e.shiftKey) && this.is_selected(obj)) {\n\t\t\t\t\tthis.deselect_node(obj, false, e);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.deselect_all(true);\n\t\t\t\t\tthis.select_node(obj, false, false, e);\n\t\t\t\t\tthis._data.core.last_clicked = this.get_node(obj);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif(e.shiftKey) {\n\t\t\t\t\tvar o = this.get_node(obj).id,\n\t\t\t\t\t\tl = this._data.core.last_clicked.id,\n\t\t\t\t\t\tp = this.get_node(this._data.core.last_clicked.parent).children,\n\t\t\t\t\t\tc = false,\n\t\t\t\t\t\ti, j;\n\t\t\t\t\tfor(i = 0, j = p.length; i < j; i += 1) {\n\t\t\t\t\t\t// separate IFs work whem o and l are the same\n\t\t\t\t\t\tif(p[i] === o) {\n\t\t\t\t\t\t\tc = !c;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(p[i] === l) {\n\t\t\t\t\t\t\tc = !c;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(c || p[i] === o || p[i] === l) {\n\t\t\t\t\t\t\tthis.select_node(p[i], false, false, e);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.deselect_node(p[i], false, e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif(!this.is_selected(obj)) {\n\t\t\t\t\t\tthis.select_node(obj, false, false, e);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.deselect_node(obj, false, e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered when an node is clicked or intercated with by the user\n\t\t\t * @event\n\t\t\t * @name activate_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t */\n\t\t\tthis.trigger('activate_node', { 'node' : this.get_node(obj) });\n\t\t},\n\t\t/**\n\t\t * applies the hover state on a node, called when a node is hovered by the user. Used internally.\n\t\t * @private\n\t\t * @name hover_node(obj)\n\t\t * @param {mixed} obj\n\t\t * @trigger hover_node.jstree\n\t\t */\n\t\thover_node : function (obj) {\n\t\t\tobj = this.get_node(obj, true);\n\t\t\tif(!obj || !obj.length || obj.children('.jstree-hovered').length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar o = this.element.find('.jstree-hovered'), t = this.element;\n\t\t\tif(o && o.length) { this.dehover_node(o); }\n\n\t\t\tobj.children('.jstree-anchor').addClass('jstree-hovered');\n\t\t\t/**\n\t\t\t * triggered when an node is hovered\n\t\t\t * @event\n\t\t\t * @name hover_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t */\n\t\t\tthis.trigger('hover_node', { 'node' : this.get_node(obj) });\n\t\t\tsetTimeout(function () { t.attr('aria-activedescendant', obj[0].id); obj.attr('aria-selected', true); }, 0);\n\t\t},\n\t\t/**\n\t\t * removes the hover state from a nodecalled when a node is no longer hovered by the user. Used internally.\n\t\t * @private\n\t\t * @name dehover_node(obj)\n\t\t * @param {mixed} obj\n\t\t * @trigger dehover_node.jstree\n\t\t */\n\t\tdehover_node : function (obj) {\n\t\t\tobj = this.get_node(obj, true);\n\t\t\tif(!obj || !obj.length || !obj.children('.jstree-hovered').length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tobj.attr('aria-selected', false).children('.jstree-anchor').removeClass('jstree-hovered');\n\t\t\t/**\n\t\t\t * triggered when an node is no longer hovered\n\t\t\t * @event\n\t\t\t * @name dehover_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t */\n\t\t\tthis.trigger('dehover_node', { 'node' : this.get_node(obj) });\n\t\t},\n\t\t/**\n\t\t * select a node\n\t\t * @name select_node(obj [, supress_event, prevent_open])\n\t\t * @param {mixed} obj an array can be used to select multiple nodes\n\t\t * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered\n\t\t * @param {Boolean} prevent_open if set to `true` parents of the selected node won't be opened\n\t\t * @trigger select_node.jstree, changed.jstree\n\t\t */\n\t\tselect_node : function (obj, supress_event, prevent_open, e) {\n\t\t\tvar dom, t1, t2, th;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.select_node(obj[t1], supress_event, prevent_open, e);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdom = this.get_node(obj, true);\n\t\t\tif(!obj.state.selected) {\n\t\t\t\tobj.state.selected = true;\n\t\t\t\tthis._data.core.selected.push(obj.id);\n\t\t\t\tif(!prevent_open) {\n\t\t\t\t\tdom = this._open_to(obj);\n\t\t\t\t}\n\t\t\t\tif(dom && dom.length) {\n\t\t\t\t\tdom.children('.jstree-anchor').addClass('jstree-clicked');\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when an node is selected\n\t\t\t\t * @event\n\t\t\t\t * @name select_node.jstree\n\t\t\t\t * @param {Object} node\n\t\t\t\t * @param {Array} selected the current selection\n\t\t\t\t * @param {Object} event the event (if any) that triggered this select_node\n\t\t\t\t */\n\t\t\t\tthis.trigger('select_node', { 'node' : obj, 'selected' : this._data.core.selected, 'event' : e });\n\t\t\t\tif(!supress_event) {\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered when selection changes\n\t\t\t\t\t * @event\n\t\t\t\t\t * @name changed.jstree\n\t\t\t\t\t * @param {Object} node\n\t\t\t\t\t * @param {Object} action the action that caused the selection to change\n\t\t\t\t\t * @param {Array} selected the current selection\n\t\t\t\t\t * @param {Object} event the event (if any) that triggered this changed event\n\t\t\t\t\t */\n\t\t\t\t\tthis.trigger('changed', { 'action' : 'select_node', 'node' : obj, 'selected' : this._data.core.selected, 'event' : e });\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * deselect a node\n\t\t * @name deselect_node(obj [, supress_event])\n\t\t * @param {mixed} obj an array can be used to deselect multiple nodes\n\t\t * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered\n\t\t * @trigger deselect_node.jstree, changed.jstree\n\t\t */\n\t\tdeselect_node : function (obj, supress_event, e) {\n\t\t\tvar t1, t2, dom;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.deselect_node(obj[t1], supress_event, e);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdom = this.get_node(obj, true);\n\t\t\tif(obj.state.selected) {\n\t\t\t\tobj.state.selected = false;\n\t\t\t\tthis._data.core.selected = $.vakata.array_remove_item(this._data.core.selected, obj.id);\n\t\t\t\tif(dom.length) {\n\t\t\t\t\tdom.children('.jstree-anchor').removeClass('jstree-clicked');\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when an node is deselected\n\t\t\t\t * @event\n\t\t\t\t * @name deselect_node.jstree\n\t\t\t\t * @param {Object} node\n\t\t\t\t * @param {Array} selected the current selection\n\t\t\t\t * @param {Object} event the event (if any) that triggered this deselect_node\n\t\t\t\t */\n\t\t\t\tthis.trigger('deselect_node', { 'node' : obj, 'selected' : this._data.core.selected, 'event' : e });\n\t\t\t\tif(!supress_event) {\n\t\t\t\t\tthis.trigger('changed', { 'action' : 'deselect_node', 'node' : obj, 'selected' : this._data.core.selected, 'event' : e });\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * select all nodes in the tree\n\t\t * @name select_all([supress_event])\n\t\t * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered\n\t\t * @trigger select_all.jstree, changed.jstree\n\t\t */\n\t\tselect_all : function (supress_event) {\n\t\t\tvar tmp = this._data.core.selected.concat([]), i, j;\n\t\t\tthis._data.core.selected = this._model.data['#'].children_d.concat();\n\t\t\tfor(i = 0, j = this._data.core.selected.length; i < j; i++) {\n\t\t\t\tif(this._model.data[this._data.core.selected[i]]) {\n\t\t\t\t\tthis._model.data[this._data.core.selected[i]].state.selected = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.redraw(true);\n\t\t\t/**\n\t\t\t * triggered when all nodes are selected\n\t\t\t * @event\n\t\t\t * @name select_all.jstree\n\t\t\t * @param {Array} selected the current selection\n\t\t\t */\n\t\t\tthis.trigger('select_all', { 'selected' : this._data.core.selected });\n\t\t\tif(!supress_event) {\n\t\t\t\tthis.trigger('changed', { 'action' : 'select_all', 'selected' : this._data.core.selected, 'old_selection' : tmp });\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * deselect all selected nodes\n\t\t * @name deselect_all([supress_event])\n\t\t * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered\n\t\t * @trigger deselect_all.jstree, changed.jstree\n\t\t */\n\t\tdeselect_all : function (supress_event) {\n\t\t\tvar tmp = this._data.core.selected.concat([]), i, j;\n\t\t\tfor(i = 0, j = this._data.core.selected.length; i < j; i++) {\n\t\t\t\tif(this._model.data[this._data.core.selected[i]]) {\n\t\t\t\t\tthis._model.data[this._data.core.selected[i]].state.selected = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._data.core.selected = [];\n\t\t\tthis.element.find('.jstree-clicked').removeClass('jstree-clicked');\n\t\t\t/**\n\t\t\t * triggered when all nodes are deselected\n\t\t\t * @event\n\t\t\t * @name deselect_all.jstree\n\t\t\t * @param {Object} node the previous selection\n\t\t\t * @param {Array} selected the current selection\n\t\t\t */\n\t\t\tthis.trigger('deselect_all', { 'selected' : this._data.core.selected, 'node' : tmp });\n\t\t\tif(!supress_event) {\n\t\t\t\tthis.trigger('changed', { 'action' : 'deselect_all', 'selected' : this._data.core.selected, 'old_selection' : tmp });\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * checks if a node is selected\n\t\t * @name is_selected(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_selected : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn obj.state.selected;\n\t\t},\n\t\t/**\n\t\t * get an array of all selected nodes\n\t\t * @name get_selected([full])\n\t\t * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t */\n\t\tget_selected : function (full) {\n\t\t\treturn full ? $.map(this._data.core.selected, $.proxy(function (i) { return this.get_node(i); }, this)) : this._data.core.selected.slice();\n\t\t},\n\t\t/**\n\t\t * get an array of all top level selected nodes (ignoring children of selected nodes)\n\t\t * @name get_top_selected([full])\n\t\t * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t */\n\t\tget_top_selected : function (full) {\n\t\t\tvar tmp = this.get_selected(true),\n\t\t\t\tobj = {}, i, j, k, l;\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tobj[tmp[i].id] = tmp[i];\n\t\t\t}\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tfor(k = 0, l = tmp[i].children_d.length; k < l; k++) {\n\t\t\t\t\tif(obj[tmp[i].children_d[k]]) {\n\t\t\t\t\t\tdelete obj[tmp[i].children_d[k]];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttmp = [];\n\t\t\tfor(i in obj) {\n\t\t\t\tif(obj.hasOwnProperty(i)) {\n\t\t\t\t\ttmp.push(i);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn full ? $.map(tmp, $.proxy(function (i) { return this.get_node(i); }, this)) : tmp;\n\t\t},\n\t\t/**\n\t\t * get an array of all bottom level selected nodes (ignoring selected parents)\n\t\t * @name get_bottom_selected([full])\n\t\t * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t */\n\t\tget_bottom_selected : function (full) {\n\t\t\tvar tmp = this.get_selected(true),\n\t\t\t\tobj = [], i, j;\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tif(!tmp[i].children.length) {\n\t\t\t\t\tobj.push(tmp[i].id);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn full ? $.map(obj, $.proxy(function (i) { return this.get_node(i); }, this)) : obj;\n\t\t},\n\t\t/**\n\t\t * gets the current state of the tree so that it can be restored later with `set_state(state)`. Used internally.\n\t\t * @name get_state()\n\t\t * @private\n\t\t * @return {Object}\n\t\t */\n\t\tget_state : function () {\n\t\t\tvar state\t= {\n\t\t\t\t'core' : {\n\t\t\t\t\t'open' : [],\n\t\t\t\t\t'scroll' : {\n\t\t\t\t\t\t'left' : this.element.scrollLeft(),\n\t\t\t\t\t\t'top' : this.element.scrollTop()\n\t\t\t\t\t},\n\t\t\t\t\t/*!\n\t\t\t\t\t'themes' : {\n\t\t\t\t\t\t'name' : this.get_theme(),\n\t\t\t\t\t\t'icons' : this._data.core.themes.icons,\n\t\t\t\t\t\t'dots' : this._data.core.themes.dots\n\t\t\t\t\t},\n\t\t\t\t\t*/\n\t\t\t\t\t'selected' : []\n\t\t\t\t}\n\t\t\t}, i;\n\t\t\tfor(i in this._model.data) {\n\t\t\t\tif(this._model.data.hasOwnProperty(i)) {\n\t\t\t\t\tif(i !== '#') {\n\t\t\t\t\t\tif(this._model.data[i].state.opened) {\n\t\t\t\t\t\t\tstate.core.open.push(i);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(this._model.data[i].state.selected) {\n\t\t\t\t\t\t\tstate.core.selected.push(i);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn state;\n\t\t},\n\t\t/**\n\t\t * sets the state of the tree. Used internally.\n\t\t * @name set_state(state [, callback])\n\t\t * @private\n\t\t * @param {Object} state the state to restore\n\t\t * @param {Function} callback an optional function to execute once the state is restored.\n\t\t * @trigger set_state.jstree\n\t\t */\n\t\tset_state : function (state, callback) {\n\t\t\tif(state) {\n\t\t\t\tif(state.core) {\n\t\t\t\t\tvar res, n, t, _this;\n\t\t\t\t\tif(state.core.open) {\n\t\t\t\t\t\tif(!$.isArray(state.core.open)) {\n\t\t\t\t\t\t\tdelete state.core.open;\n\t\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tres = true;\n\t\t\t\t\t\tn = false;\n\t\t\t\t\t\tt = this;\n\t\t\t\t\t\t$.each(state.core.open.concat([]), function (i, v) {\n\t\t\t\t\t\t\tn = t.get_node(v);\n\t\t\t\t\t\t\tif(n) {\n\t\t\t\t\t\t\t\tif(t.is_loaded(v)) {\n\t\t\t\t\t\t\t\t\tif(t.is_closed(v)) {\n\t\t\t\t\t\t\t\t\t\tt.open_node(v, false, 0);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif(state && state.core && state.core.open) {\n\t\t\t\t\t\t\t\t\t\t$.vakata.array_remove_item(state.core.open, v);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif(!t.is_loading(v)) {\n\t\t\t\t\t\t\t\t\t\tt.open_node(v, $.proxy(function (o, s) {\n\t\t\t\t\t\t\t\t\t\t\tif(!s && state && state.core && state.core.open) {\n\t\t\t\t\t\t\t\t\t\t\t\t$.vakata.array_remove_item(state.core.open, o.id);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\t\t\t\t\t}, t), 0);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// there will be some async activity - so wait for it\n\t\t\t\t\t\t\t\t\tres = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif(res) {\n\t\t\t\t\t\t\tdelete state.core.open;\n\t\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif(state.core.scroll) {\n\t\t\t\t\t\tif(state.core.scroll && state.core.scroll.left !== undefined) {\n\t\t\t\t\t\t\tthis.element.scrollLeft(state.core.scroll.left);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(state.core.scroll && state.core.scroll.top !== undefined) {\n\t\t\t\t\t\t\tthis.element.scrollTop(state.core.scroll.top);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdelete state.core.scroll;\n\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t/*!\n\t\t\t\t\tif(state.core.themes) {\n\t\t\t\t\t\tif(state.core.themes.name) {\n\t\t\t\t\t\t\tthis.set_theme(state.core.themes.name);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(typeof state.core.themes.dots !== 'undefined') {\n\t\t\t\t\t\t\tthis[ state.core.themes.dots ? \"show_dots\" : \"hide_dots\" ]();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(typeof state.core.themes.icons !== 'undefined') {\n\t\t\t\t\t\t\tthis[ state.core.themes.icons ? \"show_icons\" : \"hide_icons\" ]();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdelete state.core.themes;\n\t\t\t\t\t\tdelete state.core.open;\n\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t*/\n\t\t\t\t\tif(state.core.selected) {\n\t\t\t\t\t\t_this = this;\n\t\t\t\t\t\tthis.deselect_all();\n\t\t\t\t\t\t$.each(state.core.selected, function (i, v) {\n\t\t\t\t\t\t\t_this.select_node(v);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tdelete state.core.selected;\n\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif($.isEmptyObject(state.core)) {\n\t\t\t\t\t\tdelete state.core;\n\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif($.isEmptyObject(state)) {\n\t\t\t\t\tstate = null;\n\t\t\t\t\tif(callback) { callback.call(this); }\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered when a `set_state` call completes\n\t\t\t\t\t * @event\n\t\t\t\t\t * @name set_state.jstree\n\t\t\t\t\t */\n\t\t\t\t\tthis.trigger('set_state');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t/**\n\t\t * refreshes the tree - all nodes are reloaded with calls to `load_node`.\n\t\t * @name refresh()\n\t\t * @param {Boolean} skip_loading an option to skip showing the loading indicator\n\t\t * @param {Mixed} forget_state if set to `true` state will not be reapplied, if set to a function (receiving the current state as argument) the result of that function will be used as state\n\t\t * @trigger refresh.jstree\n\t\t */\n\t\trefresh : function (skip_loading, forget_state) {\n\t\t\tthis._data.core.state = forget_state === true ? {} : this.get_state();\n\t\t\tif(forget_state && $.isFunction(forget_state)) { this._data.core.state = forget_state.call(this, this._data.core.state); }\n\t\t\tthis._cnt = 0;\n\t\t\tthis._model.data = {\n\t\t\t\t'#' : {\n\t\t\t\t\tid : '#',\n\t\t\t\t\tparent : null,\n\t\t\t\t\tparents : [],\n\t\t\t\t\tchildren : [],\n\t\t\t\t\tchildren_d : [],\n\t\t\t\t\tstate : { loaded : false }\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar c = this.get_container_ul()[0].className;\n\t\t\tif(!skip_loading) {\n\t\t\t\tthis.element.html(\"<\"+\"ul class='\"+c+\"'><\"+\"li class='jstree-initial-node jstree-loading jstree-leaf jstree-last'><\"+\"a class='jstree-anchor' href='#'>\" + this.get_string(\"Loading ...\") + \"\");\n\t\t\t}\n\t\t\tthis.load_node('#', function (o, s) {\n\t\t\t\tif(s) {\n\t\t\t\t\tthis.get_container_ul()[0].className = c;\n\t\t\t\t\tthis.set_state($.extend(true, {}, this._data.core.state), function () {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * triggered when a `refresh` call completes\n\t\t\t\t\t\t * @event\n\t\t\t\t\t\t * @name refresh.jstree\n\t\t\t\t\t\t */\n\t\t\t\t\t\tthis.trigger('refresh');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis._data.core.state = null;\n\t\t\t});\n\t\t},\n\t\t/**\n\t\t * refreshes a node in the tree (reload its children) all opened nodes inside that node are reloaded with calls to `load_node`.\n\t\t * @name refresh_node(obj)\n\t\t * @param {mixed} obj the node\n\t\t * @trigger refresh_node.jstree\n\t\t */\n\t\trefresh_node : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\t\t\tvar opened = [], to_load = [], s = this._data.core.selected.concat([]);\n\t\t\tto_load.push(obj.id);\n\t\t\tif(obj.state.opened === true) { opened.push(obj.id); }\n\t\t\tthis.get_node(obj, true).find('.jstree-open').each(function() { opened.push(this.id); });\n\t\t\tthis._load_nodes(to_load, $.proxy(function (nodes) {\n\t\t\t\tthis.open_node(opened, false, 0);\n\t\t\t\tthis.select_node(this._data.core.selected);\n\t\t\t\t/**\n\t\t\t\t * triggered when a node is refreshed\n\t\t\t\t * @event\n\t\t\t\t * @name refresh_node.jstree\n\t\t\t\t * @param {Object} node - the refreshed node\n\t\t\t\t * @param {Array} nodes - an array of the IDs of the nodes that were reloaded\n\t\t\t\t */\n\t\t\t\tthis.trigger('refresh_node', { 'node' : obj, 'nodes' : nodes });\n\t\t\t}, this));\n\t\t},\n\t\t/**\n\t\t * set (change) the ID of a node\n\t\t * @name set_id(obj, id)\n\t\t * @param {mixed} obj the node\n\t\t * @param {String} id the new ID\n\t\t * @return {Boolean}\n\t\t */\n\t\tset_id : function (obj, id) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\t\t\tvar i, j, m = this._model.data;\n\t\t\tid = id.toString();\n\t\t\t// update parents (replace current ID with new one in children and children_d)\n\t\t\tm[obj.parent].children[$.inArray(obj.id, m[obj.parent].children)] = id;\n\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\tm[obj.parents[i]].children_d[$.inArray(obj.id, m[obj.parents[i]].children_d)] = id;\n\t\t\t}\n\t\t\t// update children (replace current ID with new one in parent and parents)\n\t\t\tfor(i = 0, j = obj.children.length; i < j; i++) {\n\t\t\t\tm[obj.children[i]].parent = id;\n\t\t\t}\n\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\tm[obj.children_d[i]].parents[$.inArray(obj.id, m[obj.children_d[i]].parents)] = id;\n\t\t\t}\n\t\t\ti = $.inArray(obj.id, this._data.core.selected);\n\t\t\tif(i !== -1) { this._data.core.selected[i] = id; }\n\t\t\t// update model and obj itself (obj.id, this._model.data[KEY])\n\t\t\ti = this.get_node(obj.id, true);\n\t\t\tif(i) {\n\t\t\t\ti.attr('id', id);\n\t\t\t}\n\t\t\tdelete m[obj.id];\n\t\t\tobj.id = id;\n\t\t\tm[id] = obj;\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * get the text value of a node\n\t\t * @name get_text(obj)\n\t\t * @param {mixed} obj the node\n\t\t * @return {String}\n\t\t */\n\t\tget_text : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn (!obj || obj.id === '#') ? false : obj.text;\n\t\t},\n\t\t/**\n\t\t * set the text value of a node. Used internally, please use `rename_node(obj, val)`.\n\t\t * @private\n\t\t * @name set_text(obj, val)\n\t\t * @param {mixed} obj the node, you can pass an array to set the text on multiple nodes\n\t\t * @param {String} val the new text value\n\t\t * @return {Boolean}\n\t\t * @trigger set_text.jstree\n\t\t */\n\t\tset_text : function (obj, val) {\n\t\t\tvar t1, t2;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.set_text(obj[t1], val);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\t\t\tobj.text = val;\n\t\t\tif(this.get_node(obj, true).length) {\n\t\t\t\tthis.redraw_node(obj.id);\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered when a node text value is changed\n\t\t\t * @event\n\t\t\t * @name set_text.jstree\n\t\t\t * @param {Object} obj\n\t\t\t * @param {String} text the new value\n\t\t\t */\n\t\t\tthis.trigger('set_text',{ \"obj\" : obj, \"text\" : val });\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * gets a JSON representation of a node (or the whole tree)\n\t\t * @name get_json([obj, options])\n\t\t * @param {mixed} obj\n\t\t * @param {Object} options\n\t\t * @param {Boolean} options.no_state do not return state information\n\t\t * @param {Boolean} options.no_id do not return ID\n\t\t * @param {Boolean} options.no_children do not include children\n\t\t * @param {Boolean} options.no_data do not include node data\n\t\t * @param {Boolean} options.flat return flat JSON instead of nested\n\t\t * @return {Object}\n\t\t */\n\t\tget_json : function (obj, options, flat) {\n\t\t\tobj = this.get_node(obj || '#');\n\t\t\tif(!obj) { return false; }\n\t\t\tif(options && options.flat && !flat) { flat = []; }\n\t\t\tvar tmp = {\n\t\t\t\t'id' : obj.id,\n\t\t\t\t'text' : obj.text,\n\t\t\t\t'icon' : this.get_icon(obj),\n\t\t\t\t'li_attr' : obj.li_attr,\n\t\t\t\t'a_attr' : obj.a_attr,\n\t\t\t\t'state' : {},\n\t\t\t\t'data' : options && options.no_data ? false : obj.data\n\t\t\t\t//( this.get_node(obj, true).length ? this.get_node(obj, true).data() : obj.data ),\n\t\t\t}, i, j;\n\t\t\tif(options && options.flat) {\n\t\t\t\ttmp.parent = obj.parent;\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttmp.children = [];\n\t\t\t}\n\t\t\tif(!options || !options.no_state) {\n\t\t\t\tfor(i in obj.state) {\n\t\t\t\t\tif(obj.state.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.state[i] = obj.state[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(options && options.no_id) {\n\t\t\t\tdelete tmp.id;\n\t\t\t\tif(tmp.li_attr && tmp.li_attr.id) {\n\t\t\t\t\tdelete tmp.li_attr.id;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(options && options.flat && obj.id !== '#') {\n\t\t\t\tflat.push(tmp);\n\t\t\t}\n\t\t\tif(!options || !options.no_children) {\n\t\t\t\tfor(i = 0, j = obj.children.length; i < j; i++) {\n\t\t\t\t\tif(options && options.flat) {\n\t\t\t\t\t\tthis.get_json(obj.children[i], options, flat);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\ttmp.children.push(this.get_json(obj.children[i], options));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn options && options.flat ? flat : (obj.id === '#' ? tmp.children : tmp);\n\t\t},\n\t\t/**\n\t\t * create a new node (do not confuse with load_node)\n\t\t * @name create_node([obj, node, pos, callback, is_loaded])\n\t\t * @param {mixed} par the parent node (to create a root node use either \"#\" (string) or `null`)\n\t\t * @param {mixed} node the data for the new node (a valid JSON object, or a simple string with the name)\n\t\t * @param {mixed} pos the index at which to insert the node, \"first\" and \"last\" are also supported, default is \"last\"\n\t\t * @param {Function} callback a function to be called once the node is created\n\t\t * @param {Boolean} is_loaded internal argument indicating if the parent node was succesfully loaded\n\t\t * @return {String} the ID of the newly create node\n\t\t * @trigger model.jstree, create_node.jstree\n\t\t */\n\t\tcreate_node : function (par, node, pos, callback, is_loaded) {\n\t\t\tif(par === null) { par = \"#\"; }\n\t\t\tpar = this.get_node(par);\n\t\t\tif(!par) { return false; }\n\t\t\tpos = pos === undefined ? \"last\" : pos;\n\t\t\tif(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) {\n\t\t\t\treturn this.load_node(par, function () { this.create_node(par, node, pos, callback, true); });\n\t\t\t}\n\t\t\tif(!node) { node = { \"text\" : this.get_string('New node') }; }\n\t\t\tif(node.text === undefined) { node.text = this.get_string('New node'); }\n\t\t\tvar tmp, dpc, i, j;\n\n\t\t\tif(par.id === '#') {\n\t\t\t\tif(pos === \"before\") { pos = \"first\"; }\n\t\t\t\tif(pos === \"after\") { pos = \"last\"; }\n\t\t\t}\n\t\t\tswitch(pos) {\n\t\t\t\tcase \"before\":\n\t\t\t\t\ttmp = this.get_node(par.parent);\n\t\t\t\t\tpos = $.inArray(par.id, tmp.children);\n\t\t\t\t\tpar = tmp;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"after\" :\n\t\t\t\t\ttmp = this.get_node(par.parent);\n\t\t\t\t\tpos = $.inArray(par.id, tmp.children) + 1;\n\t\t\t\t\tpar = tmp;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"inside\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\tpos = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"last\":\n\t\t\t\t\tpos = par.children.length;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif(!pos) { pos = 0; }\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(pos > par.children.length) { pos = par.children.length; }\n\t\t\tif(!node.id) { node.id = true; }\n\t\t\tif(!this.check(\"create_node\", node, par, pos)) {\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(node.id === true) { delete node.id; }\n\t\t\tnode = this._parse_model_from_json(node, par.id, par.parents.concat());\n\t\t\tif(!node) { return false; }\n\t\t\ttmp = this.get_node(node);\n\t\t\tdpc = [];\n\t\t\tdpc.push(node);\n\t\t\tdpc = dpc.concat(tmp.children_d);\n\t\t\tthis.trigger('model', { \"nodes\" : dpc, \"parent\" : par.id });\n\n\t\t\tpar.children_d = par.children_d.concat(dpc);\n\t\t\tfor(i = 0, j = par.parents.length; i < j; i++) {\n\t\t\t\tthis._model.data[par.parents[i]].children_d = this._model.data[par.parents[i]].children_d.concat(dpc);\n\t\t\t}\n\t\t\tnode = tmp;\n\t\t\ttmp = [];\n\t\t\tfor(i = 0, j = par.children.length; i < j; i++) {\n\t\t\t\ttmp[i >= pos ? i+1 : i] = par.children[i];\n\t\t\t}\n\t\t\ttmp[pos] = node.id;\n\t\t\tpar.children = tmp;\n\n\t\t\tthis.redraw_node(par, true);\n\t\t\tif(callback) { callback.call(this, this.get_node(node)); }\n\t\t\t/**\n\t\t\t * triggered when a node is created\n\t\t\t * @event\n\t\t\t * @name create_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t * @param {String} parent the parent's ID\n\t\t\t * @param {Number} position the position of the new node among the parent's children\n\t\t\t */\n\t\t\tthis.trigger('create_node', { \"node\" : this.get_node(node), \"parent\" : par.id, \"position\" : pos });\n\t\t\treturn node.id;\n\t\t},\n\t\t/**\n\t\t * set the text value of a node\n\t\t * @name rename_node(obj, val)\n\t\t * @param {mixed} obj the node, you can pass an array to rename multiple nodes to the same name\n\t\t * @param {String} val the new text value\n\t\t * @return {Boolean}\n\t\t * @trigger rename_node.jstree\n\t\t */\n\t\trename_node : function (obj, val) {\n\t\t\tvar t1, t2, old;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.rename_node(obj[t1], val);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\t\t\told = obj.text;\n\t\t\tif(!this.check(\"rename_node\", obj, this.get_parent(obj), val)) {\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.set_text(obj, val); // .apply(this, Array.prototype.slice.call(arguments))\n\t\t\t/**\n\t\t\t * triggered when a node is renamed\n\t\t\t * @event\n\t\t\t * @name rename_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t * @param {String} text the new value\n\t\t\t * @param {String} old the old value\n\t\t\t */\n\t\t\tthis.trigger('rename_node', { \"node\" : obj, \"text\" : val, \"old\" : old });\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * remove a node\n\t\t * @name delete_node(obj)\n\t\t * @param {mixed} obj the node, you can pass an array to delete multiple nodes\n\t\t * @return {Boolean}\n\t\t * @trigger delete_node.jstree, changed.jstree\n\t\t */\n\t\tdelete_node : function (obj) {\n\t\t\tvar t1, t2, par, pos, tmp, i, j, k, l, c;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.delete_node(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\t\t\tpar = this.get_node(obj.parent);\n\t\t\tpos = $.inArray(obj.id, par.children);\n\t\t\tc = false;\n\t\t\tif(!this.check(\"delete_node\", obj, par, pos)) {\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(pos !== -1) {\n\t\t\t\tpar.children = $.vakata.array_remove(par.children, pos);\n\t\t\t}\n\t\t\ttmp = obj.children_d.concat([]);\n\t\t\ttmp.push(obj.id);\n\t\t\tfor(k = 0, l = tmp.length; k < l; k++) {\n\t\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\t\tpos = $.inArray(tmp[k], this._model.data[obj.parents[i]].children_d);\n\t\t\t\t\tif(pos !== -1) {\n\t\t\t\t\t\tthis._model.data[obj.parents[i]].children_d = $.vakata.array_remove(this._model.data[obj.parents[i]].children_d, pos);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(this._model.data[tmp[k]].state.selected) {\n\t\t\t\t\tc = true;\n\t\t\t\t\tpos = $.inArray(tmp[k], this._data.core.selected);\n\t\t\t\t\tif(pos !== -1) {\n\t\t\t\t\t\tthis._data.core.selected = $.vakata.array_remove(this._data.core.selected, pos);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered when a node is deleted\n\t\t\t * @event\n\t\t\t * @name delete_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t * @param {String} parent the parent's ID\n\t\t\t */\n\t\t\tthis.trigger('delete_node', { \"node\" : obj, \"parent\" : par.id });\n\t\t\tif(c) {\n\t\t\t\tthis.trigger('changed', { 'action' : 'delete_node', 'node' : obj, 'selected' : this._data.core.selected, 'parent' : par.id });\n\t\t\t}\n\t\t\tfor(k = 0, l = tmp.length; k < l; k++) {\n\t\t\t\tdelete this._model.data[tmp[k]];\n\t\t\t}\n\t\t\tthis.redraw_node(par, true);\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * check if an operation is premitted on the tree. Used internally.\n\t\t * @private\n\t\t * @name check(chk, obj, par, pos)\n\t\t * @param {String} chk the operation to check, can be \"create_node\", \"rename_node\", \"delete_node\", \"copy_node\" or \"move_node\"\n\t\t * @param {mixed} obj the node\n\t\t * @param {mixed} par the parent\n\t\t * @param {mixed} pos the position to insert at, or if \"rename_node\" - the new name\n\t\t * @param {mixed} more some various additional information, for example if a \"move_node\" operations is triggered by DND this will be the hovered node\n\t\t * @return {Boolean}\n\t\t */\n\t\tcheck : function (chk, obj, par, pos, more) {\n\t\t\tobj = obj && obj.id ? obj : this.get_node(obj);\n\t\t\tpar = par && par.id ? par : this.get_node(par);\n\t\t\tvar tmp = chk.match(/^move_node|copy_node|create_node$/i) ? par : obj,\n\t\t\t\tchc = this.settings.core.check_callback;\n\t\t\tif(chk === \"move_node\" || chk === \"copy_node\") {\n\t\t\t\tif((!more || !more.is_multi) && (obj.id === par.id || $.inArray(obj.id, par.children) === pos || $.inArray(par.id, obj.children_d) !== -1)) {\n\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_01', 'reason' : 'Moving parent inside child', 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(tmp && tmp.data) { tmp = tmp.data; }\n\t\t\tif(tmp && tmp.functions && (tmp.functions[chk] === false || tmp.functions[chk] === true)) {\n\t\t\t\tif(tmp.functions[chk] === false) {\n\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_02', 'reason' : 'Node data prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t}\n\t\t\t\treturn tmp.functions[chk];\n\t\t\t}\n\t\t\tif(chc === false || ($.isFunction(chc) && chc.call(this, chk, obj, par, pos, more) === false) || (chc && chc[chk] === false)) {\n\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_03', 'reason' : 'User config for core.check_callback prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * get the last error\n\t\t * @name last_error()\n\t\t * @return {Object}\n\t\t */\n\t\tlast_error : function () {\n\t\t\treturn this._data.core.last_error;\n\t\t},\n\t\t/**\n\t\t * move a node to a new parent\n\t\t * @name move_node(obj, par [, pos, callback, is_loaded])\n\t\t * @param {mixed} obj the node to move, pass an array to move multiple nodes\n\t\t * @param {mixed} par the new parent\n\t\t * @param {mixed} pos the position to insert at (besides integer values, \"first\" and \"last\" are supported, as well as \"before\" and \"after\"), defaults to integer `0`\n\t\t * @param {function} callback a function to call once the move is completed, receives 3 arguments - the node, the new parent and the position\n\t\t * @param {Boolean} internal parameter indicating if the parent node has been loaded\n\t\t * @trigger move_node.jstree\n\t\t */\n\t\tmove_node : function (obj, par, pos, callback, is_loaded) {\n\t\t\tvar t1, t2, old_par, old_pos, new_par, old_ins, is_multi, dpc, tmp, i, j, k, l, p;\n\n\t\t\tpar = this.get_node(par);\n\t\t\tpos = pos === undefined ? 0 : pos;\n\t\t\tif(!par) { return false; }\n\t\t\tif(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) {\n\t\t\t\treturn this.load_node(par, function () { this.move_node(obj, par, pos, callback, true); });\n\t\t\t}\n\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.reverse().slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.move_node(obj[t1], par, pos, callback, is_loaded);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = obj && obj.id ? obj : this.get_node(obj);\n\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\n\t\t\told_par = (obj.parent || '#').toString();\n\t\t\tnew_par = (!pos.toString().match(/^(before|after)$/) || par.id === '#') ? par : this.get_node(par.parent);\n\t\t\told_ins = obj.instance ? obj.instance : (this._model.data[obj.id] ? this : $.jstree.reference(obj.id));\n\t\t\tis_multi = !old_ins || !old_ins._id || (this._id !== old_ins._id);\n\t\t\told_pos = old_ins && old_ins._id && old_par && old_ins._model.data[old_par] && old_ins._model.data[old_par].children ? $.inArray(obj.id, old_ins._model.data[old_par].children) : -1;\n\t\t\tif(is_multi) {\n\t\t\t\tif(this.copy_node(obj, par, pos, callback, is_loaded)) {\n\t\t\t\t\tif(old_ins) { old_ins.delete_node(obj); }\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t//var m = this._model.data;\n\t\t\tif(new_par.id === '#') {\n\t\t\t\tif(pos === \"before\") { pos = \"first\"; }\n\t\t\t\tif(pos === \"after\") { pos = \"last\"; }\n\t\t\t}\n\t\t\tswitch(pos) {\n\t\t\t\tcase \"before\":\n\t\t\t\t\tpos = $.inArray(par.id, new_par.children);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"after\" :\n\t\t\t\t\tpos = $.inArray(par.id, new_par.children) + 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"inside\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\tpos = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"last\":\n\t\t\t\t\tpos = new_par.children.length;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif(!pos) { pos = 0; }\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(pos > new_par.children.length) { pos = new_par.children.length; }\n\t\t\tif(!this.check(\"move_node\", obj, new_par, pos, { 'core' : true, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id) })) {\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(obj.parent === new_par.id) {\n\t\t\t\tdpc = new_par.children.concat();\n\t\t\t\ttmp = $.inArray(obj.id, dpc);\n\t\t\t\tif(tmp !== -1) {\n\t\t\t\t\tdpc = $.vakata.array_remove(dpc, tmp);\n\t\t\t\t\tif(pos > tmp) { pos--; }\n\t\t\t\t}\n\t\t\t\ttmp = [];\n\t\t\t\tfor(i = 0, j = dpc.length; i < j; i++) {\n\t\t\t\t\ttmp[i >= pos ? i+1 : i] = dpc[i];\n\t\t\t\t}\n\t\t\t\ttmp[pos] = obj.id;\n\t\t\t\tnew_par.children = tmp;\n\t\t\t\tthis._node_changed(new_par.id);\n\t\t\t\tthis.redraw(new_par.id === '#');\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// clean old parent and up\n\t\t\t\ttmp = obj.children_d.concat();\n\t\t\t\ttmp.push(obj.id);\n\t\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\t\tdpc = [];\n\t\t\t\t\tp = old_ins._model.data[obj.parents[i]].children_d;\n\t\t\t\t\tfor(k = 0, l = p.length; k < l; k++) {\n\t\t\t\t\t\tif($.inArray(p[k], tmp) === -1) {\n\t\t\t\t\t\t\tdpc.push(p[k]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\told_ins._model.data[obj.parents[i]].children_d = dpc;\n\t\t\t\t}\n\t\t\t\told_ins._model.data[old_par].children = $.vakata.array_remove_item(old_ins._model.data[old_par].children, obj.id);\n\n\t\t\t\t// insert into new parent and up\n\t\t\t\tfor(i = 0, j = new_par.parents.length; i < j; i++) {\n\t\t\t\t\tthis._model.data[new_par.parents[i]].children_d = this._model.data[new_par.parents[i]].children_d.concat(tmp);\n\t\t\t\t}\n\t\t\t\tdpc = [];\n\t\t\t\tfor(i = 0, j = new_par.children.length; i < j; i++) {\n\t\t\t\t\tdpc[i >= pos ? i+1 : i] = new_par.children[i];\n\t\t\t\t}\n\t\t\t\tdpc[pos] = obj.id;\n\t\t\t\tnew_par.children = dpc;\n\t\t\t\tnew_par.children_d.push(obj.id);\n\t\t\t\tnew_par.children_d = new_par.children_d.concat(obj.children_d);\n\n\t\t\t\t// update object\n\t\t\t\tobj.parent = new_par.id;\n\t\t\t\ttmp = new_par.parents.concat();\n\t\t\t\ttmp.unshift(new_par.id);\n\t\t\t\tp = obj.parents.length;\n\t\t\t\tobj.parents = tmp;\n\n\t\t\t\t// update object children\n\t\t\t\ttmp = tmp.concat();\n\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\tthis._model.data[obj.children_d[i]].parents = this._model.data[obj.children_d[i]].parents.slice(0,p*-1);\n\t\t\t\t\tArray.prototype.push.apply(this._model.data[obj.children_d[i]].parents, tmp);\n\t\t\t\t}\n\n\t\t\t\tthis._node_changed(old_par);\n\t\t\t\tthis._node_changed(new_par.id);\n\t\t\t\tthis.redraw(old_par === '#' || new_par.id === '#');\n\t\t\t}\n\t\t\tif(callback) { callback.call(this, obj, new_par, pos); }\n\t\t\t/**\n\t\t\t * triggered when a node is moved\n\t\t\t * @event\n\t\t\t * @name move_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t * @param {String} parent the parent's ID\n\t\t\t * @param {Number} position the position of the node among the parent's children\n\t\t\t * @param {String} old_parent the old parent of the node\n\t\t\t * @param {Number} old_position the old position of the node\n\t\t\t * @param {Boolean} is_multi do the node and new parent belong to different instances\n\t\t\t * @param {jsTree} old_instance the instance the node came from\n\t\t\t * @param {jsTree} new_instance the instance of the new parent\n\t\t\t */\n\t\t\tthis.trigger('move_node', { \"node\" : obj, \"parent\" : new_par.id, \"position\" : pos, \"old_parent\" : old_par, \"old_position\" : old_pos, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id), 'old_instance' : old_ins, 'new_instance' : this });\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * copy a node to a new parent\n\t\t * @name copy_node(obj, par [, pos, callback, is_loaded])\n\t\t * @param {mixed} obj the node to copy, pass an array to copy multiple nodes\n\t\t * @param {mixed} par the new parent\n\t\t * @param {mixed} pos the position to insert at (besides integer values, \"first\" and \"last\" are supported, as well as \"before\" and \"after\"), defaults to integer `0`\n\t\t * @param {function} callback a function to call once the move is completed, receives 3 arguments - the node, the new parent and the position\n\t\t * @param {Boolean} internal parameter indicating if the parent node has been loaded\n\t\t * @trigger model.jstree copy_node.jstree\n\t\t */\n\t\tcopy_node : function (obj, par, pos, callback, is_loaded) {\n\t\t\tvar t1, t2, dpc, tmp, i, j, node, old_par, new_par, old_ins, is_multi;\n\n\t\t\tpar = this.get_node(par);\n\t\t\tpos = pos === undefined ? 0 : pos;\n\t\t\tif(!par) { return false; }\n\t\t\tif(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) {\n\t\t\t\treturn this.load_node(par, function () { this.copy_node(obj, par, pos, callback, true); });\n\t\t\t}\n\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.reverse().slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.copy_node(obj[t1], par, pos, callback, is_loaded);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = obj && obj.id ? obj : this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\n\t\t\told_par = (obj.parent || '#').toString();\n\t\t\tnew_par = (!pos.toString().match(/^(before|after)$/) || par.id === '#') ? par : this.get_node(par.parent);\n\t\t\told_ins = obj.instance ? obj.instance : (this._model.data[obj.id] ? this : $.jstree.reference(obj.id));\n\t\t\tis_multi = !old_ins || !old_ins._id || (this._id !== old_ins._id);\n\t\t\tif(new_par.id === '#') {\n\t\t\t\tif(pos === \"before\") { pos = \"first\"; }\n\t\t\t\tif(pos === \"after\") { pos = \"last\"; }\n\t\t\t}\n\t\t\tswitch(pos) {\n\t\t\t\tcase \"before\":\n\t\t\t\t\tpos = $.inArray(par.id, new_par.children);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"after\" :\n\t\t\t\t\tpos = $.inArray(par.id, new_par.children) + 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"inside\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\tpos = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"last\":\n\t\t\t\t\tpos = new_par.children.length;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif(!pos) { pos = 0; }\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(pos > new_par.children.length) { pos = new_par.children.length; }\n\t\t\tif(!this.check(\"copy_node\", obj, new_par, pos, { 'core' : true, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id) })) {\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tnode = old_ins ? old_ins.get_json(obj, { no_id : true, no_data : true, no_state : true }) : obj;\n\t\t\tif(!node) { return false; }\n\t\t\tif(node.id === true) { delete node.id; }\n\t\t\tnode = this._parse_model_from_json(node, new_par.id, new_par.parents.concat());\n\t\t\tif(!node) { return false; }\n\t\t\ttmp = this.get_node(node);\n\t\t\tif(obj && obj.state && obj.state.loaded === false) { tmp.state.loaded = false; }\n\t\t\tdpc = [];\n\t\t\tdpc.push(node);\n\t\t\tdpc = dpc.concat(tmp.children_d);\n\t\t\tthis.trigger('model', { \"nodes\" : dpc, \"parent\" : new_par.id });\n\n\t\t\t// insert into new parent and up\n\t\t\tfor(i = 0, j = new_par.parents.length; i < j; i++) {\n\t\t\t\tthis._model.data[new_par.parents[i]].children_d = this._model.data[new_par.parents[i]].children_d.concat(dpc);\n\t\t\t}\n\t\t\tdpc = [];\n\t\t\tfor(i = 0, j = new_par.children.length; i < j; i++) {\n\t\t\t\tdpc[i >= pos ? i+1 : i] = new_par.children[i];\n\t\t\t}\n\t\t\tdpc[pos] = tmp.id;\n\t\t\tnew_par.children = dpc;\n\t\t\tnew_par.children_d.push(tmp.id);\n\t\t\tnew_par.children_d = new_par.children_d.concat(tmp.children_d);\n\n\t\t\tthis._node_changed(new_par.id);\n\t\t\tthis.redraw(new_par.id === '#');\n\t\t\tif(callback) { callback.call(this, tmp, new_par, pos); }\n\t\t\t/**\n\t\t\t * triggered when a node is copied\n\t\t\t * @event\n\t\t\t * @name copy_node.jstree\n\t\t\t * @param {Object} node the copied node\n\t\t\t * @param {Object} original the original node\n\t\t\t * @param {String} parent the parent's ID\n\t\t\t * @param {Number} position the position of the node among the parent's children\n\t\t\t * @param {String} old_parent the old parent of the node\n\t\t\t * @param {Number} old_position the position of the original node\n\t\t\t * @param {Boolean} is_multi do the node and new parent belong to different instances\n\t\t\t * @param {jsTree} old_instance the instance the node came from\n\t\t\t * @param {jsTree} new_instance the instance of the new parent\n\t\t\t */\n\t\t\tthis.trigger('copy_node', { \"node\" : tmp, \"original\" : obj, \"parent\" : new_par.id, \"position\" : pos, \"old_parent\" : old_par, \"old_position\" : old_ins && old_ins._id && old_par && old_ins._model.data[old_par] && old_ins._model.data[old_par].children ? $.inArray(obj.id, old_ins._model.data[old_par].children) : -1,'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id), 'old_instance' : old_ins, 'new_instance' : this });\n\t\t\treturn tmp.id;\n\t\t},\n\t\t/**\n\t\t * cut a node (a later call to `paste(obj)` would move the node)\n\t\t * @name cut(obj)\n\t\t * @param {mixed} obj multiple objects can be passed using an array\n\t\t * @trigger cut.jstree\n\t\t */\n\t\tcut : function (obj) {\n\t\t\tif(!obj) { obj = this._data.core.selected.concat(); }\n\t\t\tif(!$.isArray(obj)) { obj = [obj]; }\n\t\t\tif(!obj.length) { return false; }\n\t\t\tvar tmp = [], o, t1, t2;\n\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\to = this.get_node(obj[t1]);\n\t\t\t\tif(o && o.id && o.id !== '#') { tmp.push(o); }\n\t\t\t}\n\t\t\tif(!tmp.length) { return false; }\n\t\t\tccp_node = tmp;\n\t\t\tccp_inst = this;\n\t\t\tccp_mode = 'move_node';\n\t\t\t/**\n\t\t\t * triggered when nodes are added to the buffer for moving\n\t\t\t * @event\n\t\t\t * @name cut.jstree\n\t\t\t * @param {Array} node\n\t\t\t */\n\t\t\tthis.trigger('cut', { \"node\" : obj });\n\t\t},\n\t\t/**\n\t\t * copy a node (a later call to `paste(obj)` would copy the node)\n\t\t * @name copy(obj)\n\t\t * @param {mixed} obj multiple objects can be passed using an array\n\t\t * @trigger copy.jstre\n\t\t */\n\t\tcopy : function (obj) {\n\t\t\tif(!obj) { obj = this._data.core.selected.concat(); }\n\t\t\tif(!$.isArray(obj)) { obj = [obj]; }\n\t\t\tif(!obj.length) { return false; }\n\t\t\tvar tmp = [], o, t1, t2;\n\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\to = this.get_node(obj[t1]);\n\t\t\t\tif(o && o.id && o.id !== '#') { tmp.push(o); }\n\t\t\t}\n\t\t\tif(!tmp.length) { return false; }\n\t\t\tccp_node = tmp;\n\t\t\tccp_inst = this;\n\t\t\tccp_mode = 'copy_node';\n\t\t\t/**\n\t\t\t * triggered when nodes are added to the buffer for copying\n\t\t\t * @event\n\t\t\t * @name copy.jstree\n\t\t\t * @param {Array} node\n\t\t\t */\n\t\t\tthis.trigger('copy', { \"node\" : obj });\n\t\t},\n\t\t/**\n\t\t * get the current buffer (any nodes that are waiting for a paste operation)\n\t\t * @name get_buffer()\n\t\t * @return {Object} an object consisting of `mode` (\"copy_node\" or \"move_node\"), `node` (an array of objects) and `inst` (the instance)\n\t\t */\n\t\tget_buffer : function () {\n\t\t\treturn { 'mode' : ccp_mode, 'node' : ccp_node, 'inst' : ccp_inst };\n\t\t},\n\t\t/**\n\t\t * check if there is something in the buffer to paste\n\t\t * @name can_paste()\n\t\t * @return {Boolean}\n\t\t */\n\t\tcan_paste : function () {\n\t\t\treturn ccp_mode !== false && ccp_node !== false; // && ccp_inst._model.data[ccp_node];\n\t\t},\n\t\t/**\n\t\t * copy or move the previously cut or copied nodes to a new parent\n\t\t * @name paste(obj [, pos])\n\t\t * @param {mixed} obj the new parent\n\t\t * @param {mixed} pos the position to insert at (besides integer, \"first\" and \"last\" are supported), defaults to integer `0`\n\t\t * @trigger paste.jstree\n\t\t */\n\t\tpaste : function (obj, pos) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || !ccp_mode || !ccp_mode.match(/^(copy_node|move_node)$/) || !ccp_node) { return false; }\n\t\t\tif(this[ccp_mode](ccp_node, obj, pos)) {\n\t\t\t\t/**\n\t\t\t\t * triggered when paste is invoked\n\t\t\t\t * @event\n\t\t\t\t * @name paste.jstree\n\t\t\t\t * @param {String} parent the ID of the receiving node\n\t\t\t\t * @param {Array} node the nodes in the buffer\n\t\t\t\t * @param {String} mode the performed operation - \"copy_node\" or \"move_node\"\n\t\t\t\t */\n\t\t\t\tthis.trigger('paste', { \"parent\" : obj.id, \"node\" : ccp_node, \"mode\" : ccp_mode });\n\t\t\t}\n\t\t\tccp_node = false;\n\t\t\tccp_mode = false;\n\t\t\tccp_inst = false;\n\t\t},\n\t\t/**\n\t\t * put a node in edit mode (input field to rename the node)\n\t\t * @name edit(obj [, default_text])\n\t\t * @param {mixed} obj\n\t\t * @param {String} default_text the text to populate the input with (if omitted the node text value is used)\n\t\t */\n\t\tedit : function (obj, default_text) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj) { return false; }\n\t\t\tif(this.settings.core.check_callback === false) {\n\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_07', 'reason' : 'Could not edit node because of check_callback' };\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdefault_text = typeof default_text === 'string' ? default_text : obj.text;\n\t\t\tthis.set_text(obj, \"\");\n\t\t\tobj = this._open_to(obj);\n\n\t\t\tvar rtl = this._data.core.rtl,\n\t\t\t\tw = this.element.width(),\n\t\t\t\ta = obj.children('.jstree-anchor'),\n\t\t\t\ts = $(''),\n\t\t\t\t/*!\n\t\t\t\toi = obj.children(\"i:visible\"),\n\t\t\t\tai = a.children(\"i:visible\"),\n\t\t\t\tw1 = oi.width() * oi.length,\n\t\t\t\tw2 = ai.width() * ai.length,\n\t\t\t\t*/\n\t\t\t\tt = default_text,\n\t\t\t\th1 = $(\"<\"+\"div />\", { css : { \"position\" : \"absolute\", \"top\" : \"-200px\", \"left\" : (rtl ? \"0px\" : \"-1000px\"), \"visibility\" : \"hidden\" } }).appendTo(\"body\"),\n\t\t\t\th2 = $(\"<\"+\"input />\", {\n\t\t\t\t\t\t\"value\" : t,\n\t\t\t\t\t\t\"class\" : \"jstree-rename-input\",\n\t\t\t\t\t\t// \"size\" : t.length,\n\t\t\t\t\t\t\"css\" : {\n\t\t\t\t\t\t\t\"padding\" : \"0\",\n\t\t\t\t\t\t\t\"border\" : \"1px solid silver\",\n\t\t\t\t\t\t\t\"box-sizing\" : \"border-box\",\n\t\t\t\t\t\t\t\"display\" : \"inline-block\",\n\t\t\t\t\t\t\t\"height\" : (this._data.core.li_height) + \"px\",\n\t\t\t\t\t\t\t\"lineHeight\" : (this._data.core.li_height) + \"px\",\n\t\t\t\t\t\t\t\"width\" : \"150px\" // will be set a bit further down\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"blur\" : $.proxy(function () {\n\t\t\t\t\t\t\tvar i = s.children(\".jstree-rename-input\"),\n\t\t\t\t\t\t\t\tv = i.val();\n\t\t\t\t\t\t\tif(v === \"\") { v = t; }\n\t\t\t\t\t\t\th1.remove();\n\t\t\t\t\t\t\ts.replaceWith(a);\n\t\t\t\t\t\t\ts.remove();\n\t\t\t\t\t\t\tthis.set_text(obj, t);\n\t\t\t\t\t\t\tif(this.rename_node(obj, $('
    ').text(v)[this.settings.core.force_text ? 'text' : 'html']()) === false) {\n\t\t\t\t\t\t\t\tthis.set_text(obj, t); // move this up? and fix #483\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this),\n\t\t\t\t\t\t\"keydown\" : function (event) {\n\t\t\t\t\t\t\tvar key = event.which;\n\t\t\t\t\t\t\tif(key === 27) {\n\t\t\t\t\t\t\t\tthis.value = t;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(key === 27 || key === 13 || key === 37 || key === 38 || key === 39 || key === 40 || key === 32) {\n\t\t\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(key === 27 || key === 13) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tthis.blur();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"click\" : function (e) { e.stopImmediatePropagation(); },\n\t\t\t\t\t\t\"mousedown\" : function (e) { e.stopImmediatePropagation(); },\n\t\t\t\t\t\t\"keyup\" : function (event) {\n\t\t\t\t\t\t\th2.width(Math.min(h1.text(\"pW\" + this.value).width(),w));\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"keypress\" : function(event) {\n\t\t\t\t\t\t\tif(event.which === 13) { return false; }\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\tfn = {\n\t\t\t\t\t\tfontFamily\t\t: a.css('fontFamily')\t\t|| '',\n\t\t\t\t\t\tfontSize\t\t: a.css('fontSize')\t\t\t|| '',\n\t\t\t\t\t\tfontWeight\t\t: a.css('fontWeight')\t\t|| '',\n\t\t\t\t\t\tfontStyle\t\t: a.css('fontStyle')\t\t|| '',\n\t\t\t\t\t\tfontStretch\t\t: a.css('fontStretch')\t\t|| '',\n\t\t\t\t\t\tfontVariant\t\t: a.css('fontVariant')\t\t|| '',\n\t\t\t\t\t\tletterSpacing\t: a.css('letterSpacing')\t|| '',\n\t\t\t\t\t\twordSpacing\t\t: a.css('wordSpacing')\t\t|| ''\n\t\t\t\t};\n\t\t\ts.attr('class', a.attr('class')).append(a.contents().clone()).append(h2);\n\t\t\ta.replaceWith(s);\n\t\t\th1.css(fn);\n\t\t\th2.css(fn).width(Math.min(h1.text(\"pW\" + h2[0].value).width(),w))[0].select();\n\t\t},\n\n\n\t\t/**\n\t\t * changes the theme\n\t\t * @name set_theme(theme_name [, theme_url])\n\t\t * @param {String} theme_name the name of the new theme to apply\n\t\t * @param {mixed} theme_url the location of the CSS file for this theme. Omit or set to `false` if you manually included the file. Set to `true` to autoload from the `core.themes.dir` directory.\n\t\t * @trigger set_theme.jstree\n\t\t */\n\t\tset_theme : function (theme_name, theme_url) {\n\t\t\tif(!theme_name) { return false; }\n\t\t\tif(theme_url === true) {\n\t\t\t\tvar dir = this.settings.core.themes.dir;\n\t\t\t\tif(!dir) { dir = $.jstree.path + '/themes'; }\n\t\t\t\ttheme_url = dir + '/' + theme_name + '/style.css';\n\t\t\t}\n\t\t\tif(theme_url && $.inArray(theme_url, themes_loaded) === -1) {\n\t\t\t\t$('head').append('<'+'link rel=\"stylesheet\" href=\"' + theme_url + '\" type=\"text/css\" />');\n\t\t\t\tthemes_loaded.push(theme_url);\n\t\t\t}\n\t\t\tif(this._data.core.themes.name) {\n\t\t\t\tthis.element.removeClass('jstree-' + this._data.core.themes.name);\n\t\t\t}\n\t\t\tthis._data.core.themes.name = theme_name;\n\t\t\tthis.element.addClass('jstree-' + theme_name);\n\t\t\tthis.element[this.settings.core.themes.responsive ? 'addClass' : 'removeClass' ]('jstree-' + theme_name + '-responsive');\n\t\t\t/**\n\t\t\t * triggered when a theme is set\n\t\t\t * @event\n\t\t\t * @name set_theme.jstree\n\t\t\t * @param {String} theme the new theme\n\t\t\t */\n\t\t\tthis.trigger('set_theme', { 'theme' : theme_name });\n\t\t},\n\t\t/**\n\t\t * gets the name of the currently applied theme name\n\t\t * @name get_theme()\n\t\t * @return {String}\n\t\t */\n\t\tget_theme : function () { return this._data.core.themes.name; },\n\t\t/**\n\t\t * changes the theme variant (if the theme has variants)\n\t\t * @name set_theme_variant(variant_name)\n\t\t * @param {String|Boolean} variant_name the variant to apply (if `false` is used the current variant is removed)\n\t\t */\n\t\tset_theme_variant : function (variant_name) {\n\t\t\tif(this._data.core.themes.variant) {\n\t\t\t\tthis.element.removeClass('jstree-' + this._data.core.themes.name + '-' + this._data.core.themes.variant);\n\t\t\t}\n\t\t\tthis._data.core.themes.variant = variant_name;\n\t\t\tif(variant_name) {\n\t\t\t\tthis.element.addClass('jstree-' + this._data.core.themes.name + '-' + this._data.core.themes.variant);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * gets the name of the currently applied theme variant\n\t\t * @name get_theme()\n\t\t * @return {String}\n\t\t */\n\t\tget_theme_variant : function () { return this._data.core.themes.variant; },\n\t\t/**\n\t\t * shows a striped background on the container (if the theme supports it)\n\t\t * @name show_stripes()\n\t\t */\n\t\tshow_stripes : function () { this._data.core.themes.stripes = true; this.get_container_ul().addClass(\"jstree-striped\"); },\n\t\t/**\n\t\t * hides the striped background on the container\n\t\t * @name hide_stripes()\n\t\t */\n\t\thide_stripes : function () { this._data.core.themes.stripes = false; this.get_container_ul().removeClass(\"jstree-striped\"); },\n\t\t/**\n\t\t * toggles the striped background on the container\n\t\t * @name toggle_stripes()\n\t\t */\n\t\ttoggle_stripes : function () { if(this._data.core.themes.stripes) { this.hide_stripes(); } else { this.show_stripes(); } },\n\t\t/**\n\t\t * shows the connecting dots (if the theme supports it)\n\t\t * @name show_dots()\n\t\t */\n\t\tshow_dots : function () { this._data.core.themes.dots = true; this.get_container_ul().removeClass(\"jstree-no-dots\"); },\n\t\t/**\n\t\t * hides the connecting dots\n\t\t * @name hide_dots()\n\t\t */\n\t\thide_dots : function () { this._data.core.themes.dots = false; this.get_container_ul().addClass(\"jstree-no-dots\"); },\n\t\t/**\n\t\t * toggles the connecting dots\n\t\t * @name toggle_dots()\n\t\t */\n\t\ttoggle_dots : function () { if(this._data.core.themes.dots) { this.hide_dots(); } else { this.show_dots(); } },\n\t\t/**\n\t\t * show the node icons\n\t\t * @name show_icons()\n\t\t */\n\t\tshow_icons : function () { this._data.core.themes.icons = true; this.get_container_ul().removeClass(\"jstree-no-icons\"); },\n\t\t/**\n\t\t * hide the node icons\n\t\t * @name hide_icons()\n\t\t */\n\t\thide_icons : function () { this._data.core.themes.icons = false; this.get_container_ul().addClass(\"jstree-no-icons\"); },\n\t\t/**\n\t\t * toggle the node icons\n\t\t * @name toggle_icons()\n\t\t */\n\t\ttoggle_icons : function () { if(this._data.core.themes.icons) { this.hide_icons(); } else { this.show_icons(); } },\n\t\t/**\n\t\t * set the node icon for a node\n\t\t * @name set_icon(obj, icon)\n\t\t * @param {mixed} obj\n\t\t * @param {String} icon the new icon - can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class\n\t\t */\n\t\tset_icon : function (obj, icon) {\n\t\t\tvar t1, t2, dom, old;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.set_icon(obj[t1], icon);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\t\t\told = obj.icon;\n\t\t\tobj.icon = icon;\n\t\t\tdom = this.get_node(obj, true).children(\".jstree-anchor\").children(\".jstree-themeicon\");\n\t\t\tif(icon === false) {\n\t\t\t\tthis.hide_icon(obj);\n\t\t\t}\n\t\t\telse if(icon === true) {\n\t\t\t\tdom.removeClass('jstree-themeicon-custom ' + old).css(\"background\",\"\").removeAttr(\"rel\");\n\t\t\t}\n\t\t\telse if(icon.indexOf(\"/\") === -1 && icon.indexOf(\".\") === -1) {\n\t\t\t\tdom.removeClass(old).css(\"background\",\"\");\n\t\t\t\tdom.addClass(icon + ' jstree-themeicon-custom').attr(\"rel\",icon);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdom.removeClass(old).css(\"background\",\"\");\n\t\t\t\tdom.addClass('jstree-themeicon-custom').css(\"background\", \"url('\" + icon + \"') center center no-repeat\").attr(\"rel\",icon);\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * get the node icon for a node\n\t\t * @name get_icon(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {String}\n\t\t */\n\t\tget_icon : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn (!obj || obj.id === '#') ? false : obj.icon;\n\t\t},\n\t\t/**\n\t\t * hide the icon on an individual node\n\t\t * @name hide_icon(obj)\n\t\t * @param {mixed} obj\n\t\t */\n\t\thide_icon : function (obj) {\n\t\t\tvar t1, t2;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.hide_icon(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj === '#') { return false; }\n\t\t\tobj.icon = false;\n\t\t\tthis.get_node(obj, true).children(\".jstree-anchor\").children(\".jstree-themeicon\").addClass('jstree-themeicon-hidden');\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * show the icon on an individual node\n\t\t * @name show_icon(obj)\n\t\t * @param {mixed} obj\n\t\t */\n\t\tshow_icon : function (obj) {\n\t\t\tvar t1, t2, dom;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.show_icon(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj === '#') { return false; }\n\t\t\tdom = this.get_node(obj, true);\n\t\t\tobj.icon = dom.length ? dom.children(\".jstree-anchor\").children(\".jstree-themeicon\").attr('rel') : true;\n\t\t\tif(!obj.icon) { obj.icon = true; }\n\t\t\tdom.children(\".jstree-anchor\").children(\".jstree-themeicon\").removeClass('jstree-themeicon-hidden');\n\t\t\treturn true;\n\t\t}\n\t};\n\n\t// helpers\n\t$.vakata = {};\n\t// collect attributes\n\t$.vakata.attributes = function(node, with_values) {\n\t\tnode = $(node)[0];\n\t\tvar attr = with_values ? {} : [];\n\t\tif(node && node.attributes) {\n\t\t\t$.each(node.attributes, function (i, v) {\n\t\t\t\tif($.inArray(v.nodeName.toLowerCase(),['style','contenteditable','hasfocus','tabindex']) !== -1) { return; }\n\t\t\t\tif(v.nodeValue !== null && $.trim(v.nodeValue) !== '') {\n\t\t\t\t\tif(with_values) { attr[v.nodeName] = v.nodeValue; }\n\t\t\t\t\telse { attr.push(v.nodeName); }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn attr;\n\t};\n\t$.vakata.array_unique = function(array) {\n\t\tvar a = [], i, j, l;\n\t\tfor(i = 0, l = array.length; i < l; i++) {\n\t\t\tfor(j = 0; j <= i; j++) {\n\t\t\t\tif(array[i] === array[j]) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(j === i) { a.push(array[i]); }\n\t\t}\n\t\treturn a;\n\t};\n\t// remove item from array\n\t$.vakata.array_remove = function(array, from, to) {\n\t\tvar rest = array.slice((to || from) + 1 || array.length);\n\t\tarray.length = from < 0 ? array.length + from : from;\n\t\tarray.push.apply(array, rest);\n\t\treturn array;\n\t};\n\t// remove item from array\n\t$.vakata.array_remove_item = function(array, item) {\n\t\tvar tmp = $.inArray(item, array);\n\t\treturn tmp !== -1 ? $.vakata.array_remove(array, tmp) : array;\n\t};\n\n/**\n * ### Checkbox plugin\n *\n * This plugin renders checkbox icons in front of each node, making multiple selection much easier. \n * It also supports tri-state behavior, meaning that if a node has a few of its children checked it will be rendered as undetermined, and state will be propagated up.\n */\n\n\tvar _i = document.createElement('I');\n\t_i.className = 'jstree-icon jstree-checkbox';\n\t/**\n\t * stores all defaults for the checkbox plugin\n\t * @name $.jstree.defaults.checkbox\n\t * @plugin checkbox\n\t */\n\t$.jstree.defaults.checkbox = {\n\t\t/**\n\t\t * a boolean indicating if checkboxes should be visible (can be changed at a later time using `show_checkboxes()` and `hide_checkboxes`). Defaults to `true`.\n\t\t * @name $.jstree.defaults.checkbox.visible\n\t\t * @plugin checkbox\n\t\t */\n\t\tvisible\t\t\t\t: true,\n\t\t/**\n\t\t * a boolean indicating if checkboxes should cascade down and have an undetermined state. Defaults to `true`.\n\t\t * @name $.jstree.defaults.checkbox.three_state\n\t\t * @plugin checkbox\n\t\t */\n\t\tthree_state\t\t\t: true,\n\t\t/**\n\t\t * a boolean indicating if clicking anywhere on the node should act as clicking on the checkbox. Defaults to `true`.\n\t\t * @name $.jstree.defaults.checkbox.whole_node\n\t\t * @plugin checkbox\n\t\t */\n\t\twhole_node\t\t\t: true,\n\t\t/**\n\t\t * a boolean indicating if the selected style of a node should be kept, or removed. Defaults to `true`.\n\t\t * @name $.jstree.defaults.checkbox.keep_selected_style\n\t\t * @plugin checkbox\n\t\t */\n\t\tkeep_selected_style\t: true,\n\t\t/**\n\t\t * This setting controls how cascading and undetermined nodes are applied. \n\t\t * If 'up' is in the string - cascading up is enabled, if 'down' is in the string - cascading down is enabled, if 'undetermined' is in the string - undetermined nodes will be used. \n\t\t * If `three_state` is set to `true` this setting is automatically set to 'up+down+undetermined'. Defaults to ''.\n\t\t * @name $.jstree.defaults.checkbox.cascade\n\t\t * @plugin checkbox\n\t\t */\n\t\tcascade\t\t\t\t: '',\n\t\t/**\n\t\t * This setting controls if checkbox are bound to the general tree selection or to an internal array maintained by the checkbox plugin. Defaults to `true`, only set to `false` if you know exactly what you are doing. \n\t\t * @name $.jstree.defaults.checkbox.tie_selection\n\t\t * @plugin checkbox\n\t\t */\n\t\ttie_selection\t\t: true\n\t};\n\t$.jstree.plugins.checkbox = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\t\t\tthis._data.checkbox.uto = false;\n\t\t\tthis._data.checkbox.selected = [];\n\t\t\tif(this.settings.checkbox.three_state) {\n\t\t\t\tthis.settings.checkbox.cascade = 'up+down+undetermined';\n\t\t\t}\n\t\t\tthis.element\n\t\t\t\t.on(\"init.jstree\", $.proxy(function () {\n\t\t\t\t\t\tthis._data.checkbox.visible = this.settings.checkbox.visible;\n\t\t\t\t\t\tif(!this.settings.checkbox.keep_selected_style) {\n\t\t\t\t\t\t\tthis.element.addClass('jstree-checkbox-no-clicked');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(this.settings.checkbox.tie_selection) {\n\t\t\t\t\t\t\tthis.element.addClass('jstree-checkbox-selection');\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"loading.jstree\", $.proxy(function () {\n\t\t\t\t\t\tthis[ this._data.checkbox.visible ? 'show_checkboxes' : 'hide_checkboxes' ]();\n\t\t\t\t\t}, this));\n\t\t\tif(this.settings.checkbox.cascade.indexOf('undetermined') !== -1) {\n\t\t\t\tthis.element\n\t\t\t\t\t.on('changed.jstree uncheck_node.jstree check_node.jstree uncheck_all.jstree check_all.jstree move_node.jstree copy_node.jstree redraw.jstree open_node.jstree', $.proxy(function () {\n\t\t\t\t\t\t\t// only if undetermined is in setting\n\t\t\t\t\t\t\tif(this._data.checkbox.uto) { clearTimeout(this._data.checkbox.uto); }\n\t\t\t\t\t\t\tthis._data.checkbox.uto = setTimeout($.proxy(this._undetermined, this), 50);\n\t\t\t\t\t\t}, this));\n\t\t\t}\n\t\t\tif(!this.settings.checkbox.tie_selection) {\n\t\t\t\tthis.element\n\t\t\t\t\t.on('model.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\tvar m = this._model.data,\n\t\t\t\t\t\t\tp = m[data.parent],\n\t\t\t\t\t\t\tdpc = data.nodes,\n\t\t\t\t\t\t\ti, j;\n\t\t\t\t\t\tfor(i = 0, j = dpc.length; i < j; i++) {\n\t\t\t\t\t\t\tm[dpc[i]].state.checked = (m[dpc[i]].original && m[dpc[i]].original.state && m[dpc[i]].original.state.checked);\n\t\t\t\t\t\t\tif(m[dpc[i]].state.checked) {\n\t\t\t\t\t\t\t\tthis._data.checkbox.selected.push(dpc[i]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this));\n\t\t\t}\n\t\t\tif(this.settings.checkbox.cascade.indexOf('up') !== -1 || this.settings.checkbox.cascade.indexOf('down') !== -1) {\n\t\t\t\tthis.element\n\t\t\t\t\t.on('model.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\tvar m = this._model.data,\n\t\t\t\t\t\t\t\tp = m[data.parent],\n\t\t\t\t\t\t\t\tdpc = data.nodes,\n\t\t\t\t\t\t\t\tchd = [],\n\t\t\t\t\t\t\t\tc, i, j, k, l, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection;\n\n\t\t\t\t\t\t\tif(s.indexOf('down') !== -1) {\n\t\t\t\t\t\t\t\t// apply down\n\t\t\t\t\t\t\t\tif(p.state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\t\t\t\t\tfor(i = 0, j = dpc.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\tm[dpc[i]].state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(dpc);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tfor(i = 0, j = dpc.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\tif(m[dpc[i]].state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\t\t\t\t\t\t\tfor(k = 0, l = m[dpc[i]].children_d.length; k < l; k++) {\n\t\t\t\t\t\t\t\t\t\t\t\tm[m[dpc[i]].children_d[k]].state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(m[dpc[i]].children_d);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif(s.indexOf('up') !== -1) {\n\t\t\t\t\t\t\t\t// apply up\n\t\t\t\t\t\t\t\tfor(i = 0, j = p.children_d.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\tif(!m[p.children_d[i]].children.length) {\n\t\t\t\t\t\t\t\t\t\tchd.push(m[p.children_d[i]].parent);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchd = $.vakata.array_unique(chd);\n\t\t\t\t\t\t\t\tfor(k = 0, l = chd.length; k < l; k++) {\n\t\t\t\t\t\t\t\t\tp = m[chd[k]];\n\t\t\t\t\t\t\t\t\twhile(p && p.id !== '#') {\n\t\t\t\t\t\t\t\t\t\tc = 0;\n\t\t\t\t\t\t\t\t\t\tfor(i = 0, j = p.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\t\tc += m[p.children[i]].state[ t ? 'selected' : 'checked' ];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif(c === j) {\n\t\t\t\t\t\t\t\t\t\t\tp.state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected.push(p.id);\n\t\t\t\t\t\t\t\t\t\t\ttmp = this.get_node(p, true);\n\t\t\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\t\t\ttmp.children('.jstree-anchor').addClass( t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tp = this.get_node(p.parent);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected);\n\t\t\t\t\t\t}, this))\n\t\t\t\t\t.on(this.settings.checkbox.tie_selection ? 'select_node.jstree' : 'check_node.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\tvar obj = data.node,\n\t\t\t\t\t\t\t\tm = this._model.data,\n\t\t\t\t\t\t\t\tpar = this.get_node(obj.parent),\n\t\t\t\t\t\t\t\tdom = this.get_node(obj, true),\n\t\t\t\t\t\t\t\ti, j, c, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection;\n\n\t\t\t\t\t\t\t// apply down\n\t\t\t\t\t\t\tif(s.indexOf('down') !== -1) {\n\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected.concat(obj.children_d));\n\t\t\t\t\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\ttmp = m[obj.children_d[i]];\n\t\t\t\t\t\t\t\t\ttmp.state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\tif(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) {\n\t\t\t\t\t\t\t\t\t\ttmp.original.state.undetermined = false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// apply up\n\t\t\t\t\t\t\tif(s.indexOf('up') !== -1) {\n\t\t\t\t\t\t\t\twhile(par && par.id !== '#') {\n\t\t\t\t\t\t\t\t\tc = 0;\n\t\t\t\t\t\t\t\t\tfor(i = 0, j = par.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\tc += m[par.children[i]].state[ t ? 'selected' : 'checked' ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif(c === j) {\n\t\t\t\t\t\t\t\t\t\tpar.state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected.push(par.id);\n\t\t\t\t\t\t\t\t\t\ttmp = this.get_node(par, true);\n\t\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tpar = this.get_node(par.parent);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// apply down (process .children separately?)\n\t\t\t\t\t\t\tif(s.indexOf('down') !== -1 && dom.length) {\n\t\t\t\t\t\t\t\tdom.find('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this))\n\t\t\t\t\t.on(this.settings.checkbox.tie_selection ? 'deselect_all.jstree' : 'uncheck_all.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\tvar obj = this.get_node('#'),\n\t\t\t\t\t\t\t\tm = this._model.data,\n\t\t\t\t\t\t\t\ti, j, tmp;\n\t\t\t\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\t\t\t\ttmp = m[obj.children_d[i]];\n\t\t\t\t\t\t\t\tif(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) {\n\t\t\t\t\t\t\t\t\ttmp.original.state.undetermined = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this))\n\t\t\t\t\t.on(this.settings.checkbox.tie_selection ? 'deselect_node.jstree' : 'uncheck_node.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\tvar obj = data.node,\n\t\t\t\t\t\t\t\tdom = this.get_node(obj, true),\n\t\t\t\t\t\t\t\ti, j, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection;\n\t\t\t\t\t\t\tif(obj && obj.original && obj.original.state && obj.original.state.undetermined) {\n\t\t\t\t\t\t\t\tobj.original.state.undetermined = false;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// apply down\n\t\t\t\t\t\t\tif(s.indexOf('down') !== -1) {\n\t\t\t\t\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\ttmp = this._model.data[obj.children_d[i]];\n\t\t\t\t\t\t\t\t\ttmp.state[ t ? 'selected' : 'checked' ] = false;\n\t\t\t\t\t\t\t\t\tif(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) {\n\t\t\t\t\t\t\t\t\t\ttmp.original.state.undetermined = false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// apply up\n\t\t\t\t\t\t\tif(s.indexOf('up') !== -1) {\n\t\t\t\t\t\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\ttmp = this._model.data[obj.parents[i]];\n\t\t\t\t\t\t\t\t\ttmp.state[ t ? 'selected' : 'checked' ] = false;\n\t\t\t\t\t\t\t\t\tif(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) {\n\t\t\t\t\t\t\t\t\t\ttmp.original.state.undetermined = false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\ttmp = this.get_node(obj.parents[i], true);\n\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\ttmp.children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttmp = [];\n\t\t\t\t\t\t\tfor(i = 0, j = this._data[ t ? 'core' : 'checkbox' ].selected.length; i < j; i++) {\n\t\t\t\t\t\t\t\t// apply down + apply up\n\t\t\t\t\t\t\t\tif(\n\t\t\t\t\t\t\t\t\t(s.indexOf('down') === -1 || $.inArray(this._data[ t ? 'core' : 'checkbox' ].selected[i], obj.children_d) === -1) &&\n\t\t\t\t\t\t\t\t\t(s.indexOf('up') === -1 || $.inArray(this._data[ t ? 'core' : 'checkbox' ].selected[i], obj.parents) === -1)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\ttmp.push(this._data[ t ? 'core' : 'checkbox' ].selected[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(tmp);\n\n\t\t\t\t\t\t\t// apply down (process .children separately?)\n\t\t\t\t\t\t\tif(s.indexOf('down') !== -1 && dom.length) {\n\t\t\t\t\t\t\t\tdom.find('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this));\n\t\t\t}\n\t\t\tif(this.settings.checkbox.cascade.indexOf('up') !== -1) {\n\t\t\t\tthis.element\n\t\t\t\t\t.on('delete_node.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\t// apply up (whole handler)\n\t\t\t\t\t\t\tvar p = this.get_node(data.parent),\n\t\t\t\t\t\t\t\tm = this._model.data,\n\t\t\t\t\t\t\t\ti, j, c, tmp, t = this.settings.checkbox.tie_selection;\n\t\t\t\t\t\t\twhile(p && p.id !== '#') {\n\t\t\t\t\t\t\t\tc = 0;\n\t\t\t\t\t\t\t\tfor(i = 0, j = p.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\tc += m[p.children[i]].state[ t ? 'selected' : 'checked' ];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(c === j) {\n\t\t\t\t\t\t\t\t\tp.state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected.push(p.id);\n\t\t\t\t\t\t\t\t\ttmp = this.get_node(p, true);\n\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\ttmp.children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tp = this.get_node(p.parent);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this))\n\t\t\t\t\t.on('move_node.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\t// apply up (whole handler)\n\t\t\t\t\t\t\tvar is_multi = data.is_multi,\n\t\t\t\t\t\t\t\told_par = data.old_parent,\n\t\t\t\t\t\t\t\tnew_par = this.get_node(data.parent),\n\t\t\t\t\t\t\t\tm = this._model.data,\n\t\t\t\t\t\t\t\tp, c, i, j, tmp, t = this.settings.checkbox.tie_selection;\n\t\t\t\t\t\t\tif(!is_multi) {\n\t\t\t\t\t\t\t\tp = this.get_node(old_par);\n\t\t\t\t\t\t\t\twhile(p && p.id !== '#') {\n\t\t\t\t\t\t\t\t\tc = 0;\n\t\t\t\t\t\t\t\t\tfor(i = 0, j = p.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\tc += m[p.children[i]].state[ t ? 'selected' : 'checked' ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif(c === j) {\n\t\t\t\t\t\t\t\t\t\tp.state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected.push(p.id);\n\t\t\t\t\t\t\t\t\t\ttmp = this.get_node(p, true);\n\t\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tp = this.get_node(p.parent);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tp = new_par;\n\t\t\t\t\t\t\twhile(p && p.id !== '#') {\n\t\t\t\t\t\t\t\tc = 0;\n\t\t\t\t\t\t\t\tfor(i = 0, j = p.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\tc += m[p.children[i]].state[ t ? 'selected' : 'checked' ];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(c === j) {\n\t\t\t\t\t\t\t\t\tif(!p.state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\t\t\t\t\t\tp.state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected.push(p.id);\n\t\t\t\t\t\t\t\t\t\ttmp = this.get_node(p, true);\n\t\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif(p.state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\t\t\t\t\t\tp.state[ t ? 'selected' : 'checked' ] = false;\n\t\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_remove_item(this._data[ t ? 'core' : 'checkbox' ].selected, p.id);\n\t\t\t\t\t\t\t\t\t\ttmp = this.get_node(p, true);\n\t\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tp = this.get_node(p.parent);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this));\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * set the undetermined state where and if necessary. Used internally.\n\t\t * @private\n\t\t * @name _undetermined()\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis._undetermined = function () {\n\t\t\tvar i, j, m = this._model.data, t = this.settings.checkbox.tie_selection, s = this._data[ t ? 'core' : 'checkbox' ].selected, p = [], tt = this;\n\t\t\tfor(i = 0, j = s.length; i < j; i++) {\n\t\t\t\tif(m[s[i]] && m[s[i]].parents) {\n\t\t\t\t\tp = p.concat(m[s[i]].parents);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// attempt for server side undetermined state\n\t\t\tthis.element.find('.jstree-closed').not(':has(.jstree-children)')\n\t\t\t\t.each(function () {\n\t\t\t\t\tvar tmp = tt.get_node(this), tmp2;\n\t\t\t\t\tif(!tmp.state.loaded) {\n\t\t\t\t\t\tif(tmp.original && tmp.original.state && tmp.original.state.undetermined && tmp.original.state.undetermined === true) {\n\t\t\t\t\t\t\tp.push(tmp.id);\n\t\t\t\t\t\t\tp = p.concat(tmp.parents);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tfor(i = 0, j = tmp.children_d.length; i < j; i++) {\n\t\t\t\t\t\t\ttmp2 = m[tmp.children_d[i]];\n\t\t\t\t\t\t\tif(!tmp2.state.loaded && tmp2.original && tmp2.original.state && tmp2.original.state.undetermined && tmp2.original.state.undetermined === true) {\n\t\t\t\t\t\t\t\tp.push(tmp2.id);\n\t\t\t\t\t\t\t\tp = p.concat(tmp2.parents);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\tp = $.vakata.array_unique(p);\n\t\t\tp = $.vakata.array_remove_item(p,'#');\n\n\t\t\tthis.element.find('.jstree-undetermined').removeClass('jstree-undetermined');\n\t\t\tfor(i = 0, j = p.length; i < j; i++) {\n\t\t\t\tif(!m[p[i]].state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\ts = this.get_node(p[i], true);\n\t\t\t\t\tif(s && s.length) {\n\t\t\t\t\t\ts.children('.jstree-anchor').children('.jstree-checkbox').addClass('jstree-undetermined');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tthis.redraw_node = function(obj, deep, is_callback) {\n\t\t\tobj = parent.redraw_node.call(this, obj, deep, is_callback);\n\t\t\tif(obj) {\n\t\t\t\tvar i, j, tmp = null;\n\t\t\t\tfor(i = 0, j = obj.childNodes.length; i < j; i++) {\n\t\t\t\t\tif(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf(\"jstree-anchor\") !== -1) {\n\t\t\t\t\t\ttmp = obj.childNodes[i];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(tmp) {\n\t\t\t\t\tif(!this.settings.checkbox.tie_selection && this._model.data[obj.id].state.checked) { tmp.className += ' jstree-checked'; }\n\t\t\t\t\ttmp.insertBefore(_i.cloneNode(false), tmp.childNodes[0]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(!is_callback && this.settings.checkbox.cascade.indexOf('undetermined') !== -1) {\n\t\t\t\tif(this._data.checkbox.uto) { clearTimeout(this._data.checkbox.uto); }\n\t\t\t\tthis._data.checkbox.uto = setTimeout($.proxy(this._undetermined, this), 50);\n\t\t\t}\n\t\t\treturn obj;\n\t\t};\n\t\t/**\n\t\t * show the node checkbox icons\n\t\t * @name show_checkboxes()\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.show_checkboxes = function () { this._data.core.themes.checkboxes = true; this.get_container_ul().removeClass(\"jstree-no-checkboxes\"); };\n\t\t/**\n\t\t * hide the node checkbox icons\n\t\t * @name hide_checkboxes()\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.hide_checkboxes = function () { this._data.core.themes.checkboxes = false; this.get_container_ul().addClass(\"jstree-no-checkboxes\"); };\n\t\t/**\n\t\t * toggle the node icons\n\t\t * @name toggle_checkboxes()\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.toggle_checkboxes = function () { if(this._data.core.themes.checkboxes) { this.hide_checkboxes(); } else { this.show_checkboxes(); } };\n\t\t/**\n\t\t * checks if a node is in an undetermined state\n\t\t * @name is_undetermined(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tthis.is_undetermined = function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tvar s = this.settings.checkbox.cascade, i, j, t = this.settings.checkbox.tie_selection, d = this._data[ t ? 'core' : 'checkbox' ].selected, m = this._model.data;\n\t\t\tif(!obj || obj.state[ t ? 'selected' : 'checked' ] === true || s.indexOf('undetermined') === -1 || (s.indexOf('down') === -1 && s.indexOf('up') === -1)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(!obj.state.loaded && obj.original.state.undetermined === true) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\tif($.inArray(obj.children_d[i], d) !== -1 || (!m[obj.children_d[i]].state.loaded && m[obj.children_d[i]].original.state.undetermined)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t\tthis.activate_node = function (obj, e) {\n\t\t\tif(this.settings.checkbox.tie_selection && (this.settings.checkbox.whole_node || $(e.target).hasClass('jstree-checkbox'))) {\n\t\t\t\te.ctrlKey = true;\n\t\t\t}\n\t\t\tif(this.settings.checkbox.tie_selection || (!this.settings.checkbox.whole_node && !$(e.target).hasClass('jstree-checkbox'))) {\n\t\t\t\treturn parent.activate_node.call(this, obj, e);\n\t\t\t}\n\t\t\tif(this.is_checked(obj)) {\n\t\t\t\tthis.uncheck_node(obj, e);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.check_node(obj, e);\n\t\t\t}\n\t\t\tthis.trigger('activate_node', { 'node' : this.get_node(obj) });\n\t\t};\n\n\t\t/**\n\t\t * check a node (only if tie_selection in checkbox settings is false, otherwise select_node will be called internally)\n\t\t * @name check_node(obj)\n\t\t * @param {mixed} obj an array can be used to check multiple nodes\n\t\t * @trigger check_node.jstree\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.check_node = function (obj, e) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.select_node(obj, false, true, e); }\n\t\t\tvar dom, t1, t2, th;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.check_node(obj[t1], e);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdom = this.get_node(obj, true);\n\t\t\tif(!obj.state.checked) {\n\t\t\t\tobj.state.checked = true;\n\t\t\t\tthis._data.checkbox.selected.push(obj.id);\n\t\t\t\tif(dom && dom.length) {\n\t\t\t\t\tdom.children('.jstree-anchor').addClass('jstree-checked');\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when an node is checked (only if tie_selection in checkbox settings is false)\n\t\t\t\t * @event\n\t\t\t\t * @name check_node.jstree\n\t\t\t\t * @param {Object} node\n\t\t\t\t * @param {Array} selected the current selection\n\t\t\t\t * @param {Object} event the event (if any) that triggered this check_node\n\t\t\t\t * @plugin checkbox\n\t\t\t\t */\n\t\t\t\tthis.trigger('check_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e });\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * uncheck a node (only if tie_selection in checkbox settings is false, otherwise deselect_node will be called internally)\n\t\t * @name deselect_node(obj)\n\t\t * @param {mixed} obj an array can be used to deselect multiple nodes\n\t\t * @trigger uncheck_node.jstree\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.uncheck_node = function (obj, e) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.deselect_node(obj, false, e); }\n\t\t\tvar t1, t2, dom;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.uncheck_node(obj[t1], e);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdom = this.get_node(obj, true);\n\t\t\tif(obj.state.checked) {\n\t\t\t\tobj.state.checked = false;\n\t\t\t\tthis._data.checkbox.selected = $.vakata.array_remove_item(this._data.checkbox.selected, obj.id);\n\t\t\t\tif(dom.length) {\n\t\t\t\t\tdom.children('.jstree-anchor').removeClass('jstree-checked');\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when an node is unchecked (only if tie_selection in checkbox settings is false)\n\t\t\t\t * @event\n\t\t\t\t * @name uncheck_node.jstree\n\t\t\t\t * @param {Object} node\n\t\t\t\t * @param {Array} selected the current selection\n\t\t\t\t * @param {Object} event the event (if any) that triggered this uncheck_node\n\t\t\t\t * @plugin checkbox\n\t\t\t\t */\n\t\t\t\tthis.trigger('uncheck_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e });\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * checks all nodes in the tree (only if tie_selection in checkbox settings is false, otherwise select_all will be called internally)\n\t\t * @name check_all()\n\t\t * @trigger check_all.jstree, changed.jstree\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.check_all = function () {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.select_all(); }\n\t\t\tvar tmp = this._data.checkbox.selected.concat([]), i, j;\n\t\t\tthis._data.checkbox.selected = this._model.data['#'].children_d.concat();\n\t\t\tfor(i = 0, j = this._data.checkbox.selected.length; i < j; i++) {\n\t\t\t\tif(this._model.data[this._data.checkbox.selected[i]]) {\n\t\t\t\t\tthis._model.data[this._data.checkbox.selected[i]].state.checked = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.redraw(true);\n\t\t\t/**\n\t\t\t * triggered when all nodes are checked (only if tie_selection in checkbox settings is false)\n\t\t\t * @event\n\t\t\t * @name check_all.jstree\n\t\t\t * @param {Array} selected the current selection\n\t\t\t * @plugin checkbox\n\t\t\t */\n\t\t\tthis.trigger('check_all', { 'selected' : this._data.checkbox.selected });\n\t\t};\n\t\t/**\n\t\t * uncheck all checked nodes (only if tie_selection in checkbox settings is false, otherwise deselect_all will be called internally)\n\t\t * @name uncheck_all()\n\t\t * @trigger uncheck_all.jstree\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.uncheck_all = function () {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.deselect_all(); }\n\t\t\tvar tmp = this._data.checkbox.selected.concat([]), i, j;\n\t\t\tfor(i = 0, j = this._data.checkbox.selected.length; i < j; i++) {\n\t\t\t\tif(this._model.data[this._data.checkbox.selected[i]]) {\n\t\t\t\t\tthis._model.data[this._data.checkbox.selected[i]].state.checked = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._data.checkbox.selected = [];\n\t\t\tthis.element.find('.jstree-checked').removeClass('jstree-checked');\n\t\t\t/**\n\t\t\t * triggered when all nodes are unchecked (only if tie_selection in checkbox settings is false)\n\t\t\t * @event\n\t\t\t * @name uncheck_all.jstree\n\t\t\t * @param {Object} node the previous selection\n\t\t\t * @param {Array} selected the current selection\n\t\t\t * @plugin checkbox\n\t\t\t */\n\t\t\tthis.trigger('uncheck_all', { 'selected' : this._data.checkbox.selected, 'node' : tmp });\n\t\t};\n\t\t/**\n\t\t * checks if a node is checked (if tie_selection is on in the settings this function will return the same as is_selected)\n\t\t * @name is_checked(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {Boolean}\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.is_checked = function (obj) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.is_selected(obj); }\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\t\t\treturn obj.state.checked;\n\t\t};\n\t\t/**\n\t\t * get an array of all checked nodes (if tie_selection is on in the settings this function will return the same as get_selected)\n\t\t * @name get_checked([full])\n\t\t * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.get_checked = function (full) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.get_selected(full); }\n\t\t\treturn full ? $.map(this._data.checkbox.selected, $.proxy(function (i) { return this.get_node(i); }, this)) : this._data.checkbox.selected;\n\t\t};\n\t\t/**\n\t\t * get an array of all top level checked nodes (ignoring children of checked nodes) (if tie_selection is on in the settings this function will return the same as get_top_selected)\n\t\t * @name get_top_checked([full])\n\t\t * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.get_top_checked = function (full) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.get_top_selected(full); }\n\t\t\tvar tmp = this.get_checked(true),\n\t\t\t\tobj = {}, i, j, k, l;\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tobj[tmp[i].id] = tmp[i];\n\t\t\t}\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tfor(k = 0, l = tmp[i].children_d.length; k < l; k++) {\n\t\t\t\t\tif(obj[tmp[i].children_d[k]]) {\n\t\t\t\t\t\tdelete obj[tmp[i].children_d[k]];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttmp = [];\n\t\t\tfor(i in obj) {\n\t\t\t\tif(obj.hasOwnProperty(i)) {\n\t\t\t\t\ttmp.push(i);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn full ? $.map(tmp, $.proxy(function (i) { return this.get_node(i); }, this)) : tmp;\n\t\t};\n\t\t/**\n\t\t * get an array of all bottom level checked nodes (ignoring selected parents) (if tie_selection is on in the settings this function will return the same as get_bottom_selected)\n\t\t * @name get_bottom_checked([full])\n\t\t * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.get_bottom_checked = function (full) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.get_bottom_selected(full); }\n\t\t\tvar tmp = this.get_checked(true),\n\t\t\t\tobj = [], i, j;\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tif(!tmp[i].children.length) {\n\t\t\t\t\tobj.push(tmp[i].id);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn full ? $.map(obj, $.proxy(function (i) { return this.get_node(i); }, this)) : obj;\n\t\t};\n\t};\n\n\t// include the checkbox plugin by default\n\t// $.jstree.defaults.plugins.push(\"checkbox\");\n\n/**\n * ### Contextmenu plugin\n *\n * Shows a context menu when a node is right-clicked.\n */\n// TODO: move logic outside of function + check multiple move\n\n\t/**\n\t * stores all defaults for the contextmenu plugin\n\t * @name $.jstree.defaults.contextmenu\n\t * @plugin contextmenu\n\t */\n\t$.jstree.defaults.contextmenu = {\n\t\t/**\n\t\t * a boolean indicating if the node should be selected when the context menu is invoked on it. Defaults to `true`.\n\t\t * @name $.jstree.defaults.contextmenu.select_node\n\t\t * @plugin contextmenu\n\t\t */\n\t\tselect_node : true,\n\t\t/**\n\t\t * a boolean indicating if the menu should be shown aligned with the node. Defaults to `true`, otherwise the mouse coordinates are used.\n\t\t * @name $.jstree.defaults.contextmenu.show_at_node\n\t\t * @plugin contextmenu\n\t\t */\n\t\tshow_at_node : true,\n\t\t/**\n\t\t * an object of actions, or a function that accepts a node and a callback function and calls the callback function with an object of actions available for that node (you can also return the items too).\n\t\t * \n\t\t * Each action consists of a key (a unique name) and a value which is an object with the following properties (only label and action are required):\n\t\t * \n\t\t * * `separator_before` - a boolean indicating if there should be a separator before this item\n\t\t * * `separator_after` - a boolean indicating if there should be a separator after this item\n\t\t * * `_disabled` - a boolean indicating if this action should be disabled\n\t\t * * `label` - a string - the name of the action (could be a function returning a string)\n\t\t * * `action` - a function to be executed if this item is chosen\n\t\t * * `icon` - a string, can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class\n\t\t * * `shortcut` - keyCode which will trigger the action if the menu is open (for example `113` for rename, which equals F2)\n\t\t * * `shortcut_label` - shortcut label (like for example `F2` for rename)\n\t\t * \n\t\t * @name $.jstree.defaults.contextmenu.items\n\t\t * @plugin contextmenu\n\t\t */\n\t\titems : function (o, cb) { // Could be an object directly\n\t\t\treturn {\n\t\t\t\t\"create\" : {\n\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\"separator_after\"\t: true,\n\t\t\t\t\t\"_disabled\"\t\t\t: false, //(this.check(\"create_node\", data.reference, {}, \"last\")),\n\t\t\t\t\t\"label\"\t\t\t\t: \"Create\",\n\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\tinst.create_node(obj, {}, \"last\", function (new_node) {\n\t\t\t\t\t\t\tsetTimeout(function () { inst.edit(new_node); },0);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"rename\" : {\n\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\"_disabled\"\t\t\t: false, //(this.check(\"rename_node\", data.reference, this.get_parent(data.reference), \"\")),\n\t\t\t\t\t\"label\"\t\t\t\t: \"Rename\",\n\t\t\t\t\t/*\n\t\t\t\t\t\"shortcut\"\t\t\t: 113,\n\t\t\t\t\t\"shortcut_label\"\t: 'F2',\n\t\t\t\t\t\"icon\"\t\t\t\t: \"glyphicon glyphicon-leaf\",\n\t\t\t\t\t*/\n\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\tinst.edit(obj);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"remove\" : {\n\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\"icon\"\t\t\t\t: false,\n\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\"_disabled\"\t\t\t: false, //(this.check(\"delete_node\", data.reference, this.get_parent(data.reference), \"\")),\n\t\t\t\t\t\"label\"\t\t\t\t: \"Delete\",\n\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\tif(inst.is_selected(obj)) {\n\t\t\t\t\t\t\tinst.delete_node(inst.get_selected());\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tinst.delete_node(obj);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"ccp\" : {\n\t\t\t\t\t\"separator_before\"\t: true,\n\t\t\t\t\t\"icon\"\t\t\t\t: false,\n\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\"label\"\t\t\t\t: \"Edit\",\n\t\t\t\t\t\"action\"\t\t\t: false,\n\t\t\t\t\t\"submenu\" : {\n\t\t\t\t\t\t\"cut\" : {\n\t\t\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\t\t\"label\"\t\t\t\t: \"Cut\",\n\t\t\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\t\t\tif(inst.is_selected(obj)) {\n\t\t\t\t\t\t\t\t\tinst.cut(inst.get_selected());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tinst.cut(obj);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"copy\" : {\n\t\t\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\t\t\"icon\"\t\t\t\t: false,\n\t\t\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\t\t\"label\"\t\t\t\t: \"Copy\",\n\t\t\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\t\t\tif(inst.is_selected(obj)) {\n\t\t\t\t\t\t\t\t\tinst.copy(inst.get_selected());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tinst.copy(obj);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"paste\" : {\n\t\t\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\t\t\"icon\"\t\t\t\t: false,\n\t\t\t\t\t\t\t\"_disabled\"\t\t\t: function (data) {\n\t\t\t\t\t\t\t\treturn !$.jstree.reference(data.reference).can_paste();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\t\t\"label\"\t\t\t\t: \"Paste\",\n\t\t\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\t\t\tinst.paste(obj);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t};\n\n\t$.jstree.plugins.contextmenu = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\n\t\t\tvar last_ts = 0;\n\t\t\tthis.element\n\t\t\t\t.on(\"contextmenu.jstree\", \".jstree-anchor\", $.proxy(function (e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tlast_ts = e.ctrlKey ? e.timeStamp : 0;\n\t\t\t\t\t\tif(!this.is_loading(e.currentTarget)) {\n\t\t\t\t\t\t\tthis.show_contextmenu(e.currentTarget, e.pageX, e.pageY, e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"click.jstree\", \".jstree-anchor\", $.proxy(function (e) {\n\t\t\t\t\t\tif(this._data.contextmenu.visible && (!last_ts || e.timeStamp - last_ts > 250)) { // work around safari & macOS ctrl+click\n\t\t\t\t\t\t\t$.vakata.context.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this));\n\t\t\t/*\n\t\t\tif(!('oncontextmenu' in document.body) && ('ontouchstart' in document.body)) {\n\t\t\t\tvar el = null, tm = null;\n\t\t\t\tthis.element\n\t\t\t\t\t.on(\"touchstart\", \".jstree-anchor\", function (e) {\n\t\t\t\t\t\tel = e.currentTarget;\n\t\t\t\t\t\ttm = +new Date();\n\t\t\t\t\t\t$(document).one(\"touchend\", function (e) {\n\t\t\t\t\t\t\te.target = document.elementFromPoint(e.originalEvent.targetTouches[0].pageX - window.pageXOffset, e.originalEvent.targetTouches[0].pageY - window.pageYOffset);\n\t\t\t\t\t\t\te.currentTarget = e.target;\n\t\t\t\t\t\t\ttm = ((+(new Date())) - tm);\n\t\t\t\t\t\t\tif(e.target === el && tm > 600 && tm < 1000) {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t$(el).trigger('contextmenu', e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tel = null;\n\t\t\t\t\t\t\ttm = null;\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t}\n\t\t\t*/\n\t\t\t$(document).on(\"context_hide.vakata\", $.proxy(function () { this._data.contextmenu.visible = false; }, this));\n\t\t};\n\t\tthis.teardown = function () {\n\t\t\tif(this._data.contextmenu.visible) {\n\t\t\t\t$.vakata.context.hide();\n\t\t\t}\n\t\t\tparent.teardown.call(this);\n\t\t};\n\n\t\t/**\n\t\t * prepare and show the context menu for a node\n\t\t * @name show_contextmenu(obj [, x, y])\n\t\t * @param {mixed} obj the node\n\t\t * @param {Number} x the x-coordinate relative to the document to show the menu at\n\t\t * @param {Number} y the y-coordinate relative to the document to show the menu at\n\t\t * @param {Object} e the event if available that triggered the contextmenu\n\t\t * @plugin contextmenu\n\t\t * @trigger show_contextmenu.jstree\n\t\t */\n\t\tthis.show_contextmenu = function (obj, x, y, e) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\t\t\tvar s = this.settings.contextmenu,\n\t\t\t\td = this.get_node(obj, true),\n\t\t\t\ta = d.children(\".jstree-anchor\"),\n\t\t\t\to = false,\n\t\t\t\ti = false;\n\t\t\tif(s.show_at_node || x === undefined || y === undefined) {\n\t\t\t\to = a.offset();\n\t\t\t\tx = o.left;\n\t\t\t\ty = o.top + this._data.core.li_height;\n\t\t\t}\n\t\t\tif(this.settings.contextmenu.select_node && !this.is_selected(obj)) {\n\t\t\t\tthis.activate_node(obj, e);\n\t\t\t}\n\n\t\t\ti = s.items;\n\t\t\tif($.isFunction(i)) {\n\t\t\t\ti = i.call(this, obj, $.proxy(function (i) {\n\t\t\t\t\tthis._show_contextmenu(obj, x, y, i);\n\t\t\t\t}, this));\n\t\t\t}\n\t\t\tif($.isPlainObject(i)) {\n\t\t\t\tthis._show_contextmenu(obj, x, y, i);\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * show the prepared context menu for a node\n\t\t * @name _show_contextmenu(obj, x, y, i)\n\t\t * @param {mixed} obj the node\n\t\t * @param {Number} x the x-coordinate relative to the document to show the menu at\n\t\t * @param {Number} y the y-coordinate relative to the document to show the menu at\n\t\t * @param {Number} i the object of items to show\n\t\t * @plugin contextmenu\n\t\t * @trigger show_contextmenu.jstree\n\t\t * @private\n\t\t */\n\t\tthis._show_contextmenu = function (obj, x, y, i) {\n\t\t\tvar d = this.get_node(obj, true),\n\t\t\t\ta = d.children(\".jstree-anchor\");\n\t\t\t$(document).one(\"context_show.vakata\", $.proxy(function (e, data) {\n\t\t\t\tvar cls = 'jstree-contextmenu jstree-' + this.get_theme() + '-contextmenu';\n\t\t\t\t$(data.element).addClass(cls);\n\t\t\t}, this));\n\t\t\tthis._data.contextmenu.visible = true;\n\t\t\t$.vakata.context.show(a, { 'x' : x, 'y' : y }, i);\n\t\t\t/**\n\t\t\t * triggered when the contextmenu is shown for a node\n\t\t\t * @event\n\t\t\t * @name show_contextmenu.jstree\n\t\t\t * @param {Object} node the node\n\t\t\t * @param {Number} x the x-coordinate of the menu relative to the document\n\t\t\t * @param {Number} y the y-coordinate of the menu relative to the document\n\t\t\t * @plugin contextmenu\n\t\t\t */\n\t\t\tthis.trigger('show_contextmenu', { \"node\" : obj, \"x\" : x, \"y\" : y });\n\t\t};\n\t};\n\n\t// contextmenu helper\n\t(function ($) {\n\t\tvar right_to_left = false,\n\t\t\tvakata_context = {\n\t\t\t\telement\t\t: false,\n\t\t\t\treference\t: false,\n\t\t\t\tposition_x\t: 0,\n\t\t\t\tposition_y\t: 0,\n\t\t\t\titems\t\t: [],\n\t\t\t\thtml\t\t: \"\",\n\t\t\t\tis_visible\t: false\n\t\t\t};\n\n\t\t$.vakata.context = {\n\t\t\tsettings : {\n\t\t\t\thide_onmouseleave\t: 0,\n\t\t\t\ticons\t\t\t\t: true\n\t\t\t},\n\t\t\t_trigger : function (event_name) {\n\t\t\t\t$(document).triggerHandler(\"context_\" + event_name + \".vakata\", {\n\t\t\t\t\t\"reference\"\t: vakata_context.reference,\n\t\t\t\t\t\"element\"\t: vakata_context.element,\n\t\t\t\t\t\"position\"\t: {\n\t\t\t\t\t\t\"x\" : vakata_context.position_x,\n\t\t\t\t\t\t\"y\" : vakata_context.position_y\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t_execute : function (i) {\n\t\t\t\ti = vakata_context.items[i];\n\t\t\t\treturn i && (!i._disabled || ($.isFunction(i._disabled) && !i._disabled({ \"item\" : i, \"reference\" : vakata_context.reference, \"element\" : vakata_context.element }))) && i.action ? i.action.call(null, {\n\t\t\t\t\t\t\t\"item\"\t\t: i,\n\t\t\t\t\t\t\t\"reference\"\t: vakata_context.reference,\n\t\t\t\t\t\t\t\"element\"\t: vakata_context.element,\n\t\t\t\t\t\t\t\"position\"\t: {\n\t\t\t\t\t\t\t\t\"x\" : vakata_context.position_x,\n\t\t\t\t\t\t\t\t\"y\" : vakata_context.position_y\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}) : false;\n\t\t\t},\n\t\t\t_parse : function (o, is_callback) {\n\t\t\t\tif(!o) { return false; }\n\t\t\t\tif(!is_callback) {\n\t\t\t\t\tvakata_context.html\t\t= \"\";\n\t\t\t\t\tvakata_context.items\t= [];\n\t\t\t\t}\n\t\t\t\tvar str = \"\",\n\t\t\t\t\tsep = false,\n\t\t\t\t\ttmp;\n\n\t\t\t\tif(is_callback) { str += \"<\"+\"ul>\"; }\n\t\t\t\t$.each(o, function (i, val) {\n\t\t\t\t\tif(!val) { return true; }\n\t\t\t\t\tvakata_context.items.push(val);\n\t\t\t\t\tif(!sep && val.separator_before) {\n\t\t\t\t\t\tstr += \"<\"+\"li class='vakata-context-separator'><\"+\"a href='#' \" + ($.vakata.context.settings.icons ? '' : 'style=\"margin-left:0px;\"') + \"> <\"+\"/a><\"+\"/li>\";\n\t\t\t\t\t}\n\t\t\t\t\tsep = false;\n\t\t\t\t\tstr += \"<\"+\"li class='\" + (val._class || \"\") + (val._disabled === true || ($.isFunction(val._disabled) && val._disabled({ \"item\" : val, \"reference\" : vakata_context.reference, \"element\" : vakata_context.element })) ? \" vakata-contextmenu-disabled \" : \"\") + \"' \"+(val.shortcut?\" data-shortcut='\"+val.shortcut+\"' \":'')+\">\";\n\t\t\t\t\tstr += \"<\"+\"a href='#' rel='\" + (vakata_context.items.length - 1) + \"'>\";\n\t\t\t\t\tif($.vakata.context.settings.icons) {\n\t\t\t\t\t\tstr += \"<\"+\"i \";\n\t\t\t\t\t\tif(val.icon) {\n\t\t\t\t\t\t\tif(val.icon.indexOf(\"/\") !== -1 || val.icon.indexOf(\".\") !== -1) { str += \" style='background:url(\\\"\" + val.icon + \"\\\") center center no-repeat' \"; }\n\t\t\t\t\t\t\telse { str += \" class='\" + val.icon + \"' \"; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstr += \"><\"+\"/i><\"+\"span class='vakata-contextmenu-sep'> <\"+\"/span>\";\n\t\t\t\t\t}\n\t\t\t\t\tstr += ($.isFunction(val.label) ? val.label({ \"item\" : i, \"reference\" : vakata_context.reference, \"element\" : vakata_context.element }) : val.label) + (val.shortcut?' '+ (val.shortcut_label || '') +'':'') + \"<\"+\"/a>\";\n\t\t\t\t\tif(val.submenu) {\n\t\t\t\t\t\ttmp = $.vakata.context._parse(val.submenu, true);\n\t\t\t\t\t\tif(tmp) { str += tmp; }\n\t\t\t\t\t}\n\t\t\t\t\tstr += \"<\"+\"/li>\";\n\t\t\t\t\tif(val.separator_after) {\n\t\t\t\t\t\tstr += \"<\"+\"li class='vakata-context-separator'><\"+\"a href='#' \" + ($.vakata.context.settings.icons ? '' : 'style=\"margin-left:0px;\"') + \"> <\"+\"/a><\"+\"/li>\";\n\t\t\t\t\t\tsep = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tstr = str.replace(/
  • <\\/li\\>$/,\"\");\n\t\t\t\tif(is_callback) { str += \"\"; }\n\t\t\t\t/**\n\t\t\t\t * triggered on the document when the contextmenu is parsed (HTML is built)\n\t\t\t\t * @event\n\t\t\t\t * @plugin contextmenu\n\t\t\t\t * @name context_parse.vakata\n\t\t\t\t * @param {jQuery} reference the element that was right clicked\n\t\t\t\t * @param {jQuery} element the DOM element of the menu itself\n\t\t\t\t * @param {Object} position the x & y coordinates of the menu\n\t\t\t\t */\n\t\t\t\tif(!is_callback) { vakata_context.html = str; $.vakata.context._trigger(\"parse\"); }\n\t\t\t\treturn str.length > 10 ? str : false;\n\t\t\t},\n\t\t\t_show_submenu : function (o) {\n\t\t\t\to = $(o);\n\t\t\t\tif(!o.length || !o.children(\"ul\").length) { return; }\n\t\t\t\tvar e = o.children(\"ul\"),\n\t\t\t\t\tx = o.offset().left + o.outerWidth(),\n\t\t\t\t\ty = o.offset().top,\n\t\t\t\t\tw = e.width(),\n\t\t\t\t\th = e.height(),\n\t\t\t\t\tdw = $(window).width() + $(window).scrollLeft(),\n\t\t\t\t\tdh = $(window).height() + $(window).scrollTop();\n\t\t\t\t// може да се спести е една проверка - дали няма някой от класовете вече нагоре\n\t\t\t\tif(right_to_left) {\n\t\t\t\t\to[x - (w + 10 + o.outerWidth()) < 0 ? \"addClass\" : \"removeClass\"](\"vakata-context-left\");\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to[x + w + 10 > dw ? \"addClass\" : \"removeClass\"](\"vakata-context-right\");\n\t\t\t\t}\n\t\t\t\tif(y + h + 10 > dh) {\n\t\t\t\t\te.css(\"bottom\",\"-1px\");\n\t\t\t\t}\n\t\t\t\te.show();\n\t\t\t},\n\t\t\tshow : function (reference, position, data) {\n\t\t\t\tvar o, e, x, y, w, h, dw, dh, cond = true;\n\t\t\t\tif(vakata_context.element && vakata_context.element.length) {\n\t\t\t\t\tvakata_context.element.width('');\n\t\t\t\t}\n\t\t\t\tswitch(cond) {\n\t\t\t\t\tcase (!position && !reference):\n\t\t\t\t\t\treturn false;\n\t\t\t\t\tcase (!!position && !!reference):\n\t\t\t\t\t\tvakata_context.reference\t= reference;\n\t\t\t\t\t\tvakata_context.position_x\t= position.x;\n\t\t\t\t\t\tvakata_context.position_y\t= position.y;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase (!position && !!reference):\n\t\t\t\t\t\tvakata_context.reference\t= reference;\n\t\t\t\t\t\to = reference.offset();\n\t\t\t\t\t\tvakata_context.position_x\t= o.left + reference.outerHeight();\n\t\t\t\t\t\tvakata_context.position_y\t= o.top;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase (!!position && !reference):\n\t\t\t\t\t\tvakata_context.position_x\t= position.x;\n\t\t\t\t\t\tvakata_context.position_y\t= position.y;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!!reference && !data && $(reference).data('vakata_contextmenu')) {\n\t\t\t\t\tdata = $(reference).data('vakata_contextmenu');\n\t\t\t\t}\n\t\t\t\tif($.vakata.context._parse(data)) {\n\t\t\t\t\tvakata_context.element.html(vakata_context.html);\n\t\t\t\t}\n\t\t\t\tif(vakata_context.items.length) {\n\t\t\t\t\te = vakata_context.element;\n\t\t\t\t\tx = vakata_context.position_x;\n\t\t\t\t\ty = vakata_context.position_y;\n\t\t\t\t\tw = e.width();\n\t\t\t\t\th = e.height();\n\t\t\t\t\tdw = $(window).width() + $(window).scrollLeft();\n\t\t\t\t\tdh = $(window).height() + $(window).scrollTop();\n\t\t\t\t\tif(right_to_left) {\n\t\t\t\t\t\tx -= e.outerWidth();\n\t\t\t\t\t\tif(x < $(window).scrollLeft() + 20) {\n\t\t\t\t\t\t\tx = $(window).scrollLeft() + 20;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(x + w + 20 > dw) {\n\t\t\t\t\t\tx = dw - (w + 20);\n\t\t\t\t\t}\n\t\t\t\t\tif(y + h + 20 > dh) {\n\t\t\t\t\t\ty = dh - (h + 20);\n\t\t\t\t\t}\n\n\t\t\t\t\tvakata_context.element\n\t\t\t\t\t\t.css({ \"left\" : x, \"top\" : y })\n\t\t\t\t\t\t.show()\n\t\t\t\t\t\t.find('a:eq(0)').focus().parent().addClass(\"vakata-context-hover\");\n\t\t\t\t\tvakata_context.is_visible = true;\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered on the document when the contextmenu is shown\n\t\t\t\t\t * @event\n\t\t\t\t\t * @plugin contextmenu\n\t\t\t\t\t * @name context_show.vakata\n\t\t\t\t\t * @param {jQuery} reference the element that was right clicked\n\t\t\t\t\t * @param {jQuery} element the DOM element of the menu itself\n\t\t\t\t\t * @param {Object} position the x & y coordinates of the menu\n\t\t\t\t\t */\n\t\t\t\t\t$.vakata.context._trigger(\"show\");\n\t\t\t\t}\n\t\t\t},\n\t\t\thide : function () {\n\t\t\t\tif(vakata_context.is_visible) {\n\t\t\t\t\tvakata_context.element.hide().find(\"ul\").hide().end().find(':focus').blur();\n\t\t\t\t\tvakata_context.is_visible = false;\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered on the document when the contextmenu is hidden\n\t\t\t\t\t * @event\n\t\t\t\t\t * @plugin contextmenu\n\t\t\t\t\t * @name context_hide.vakata\n\t\t\t\t\t * @param {jQuery} reference the element that was right clicked\n\t\t\t\t\t * @param {jQuery} element the DOM element of the menu itself\n\t\t\t\t\t * @param {Object} position the x & y coordinates of the menu\n\t\t\t\t\t */\n\t\t\t\t\t$.vakata.context._trigger(\"hide\");\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\t$(function () {\n\t\t\tright_to_left = $(\"body\").css(\"direction\") === \"rtl\";\n\t\t\tvar to = false;\n\n\t\t\tvakata_context.element = $(\"
      \");\n\t\t\tvakata_context.element\n\t\t\t\t.on(\"mouseenter\", \"li\", function (e) {\n\t\t\t\t\te.stopImmediatePropagation();\n\n\t\t\t\t\tif($.contains(this, e.relatedTarget)) {\n\t\t\t\t\t\t// премахнато заради delegate mouseleave по-долу\n\t\t\t\t\t\t// $(this).find(\".vakata-context-hover\").removeClass(\"vakata-context-hover\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(to) { clearTimeout(to); }\n\t\t\t\t\tvakata_context.element.find(\".vakata-context-hover\").removeClass(\"vakata-context-hover\").end();\n\n\t\t\t\t\t$(this)\n\t\t\t\t\t\t.siblings().find(\"ul\").hide().end().end()\n\t\t\t\t\t\t.parentsUntil(\".vakata-context\", \"li\").addBack().addClass(\"vakata-context-hover\");\n\t\t\t\t\t$.vakata.context._show_submenu(this);\n\t\t\t\t})\n\t\t\t\t// тестово - дали не натоварва?\n\t\t\t\t.on(\"mouseleave\", \"li\", function (e) {\n\t\t\t\t\tif($.contains(this, e.relatedTarget)) { return; }\n\t\t\t\t\t$(this).find(\".vakata-context-hover\").addBack().removeClass(\"vakata-context-hover\");\n\t\t\t\t})\n\t\t\t\t.on(\"mouseleave\", function (e) {\n\t\t\t\t\t$(this).find(\".vakata-context-hover\").removeClass(\"vakata-context-hover\");\n\t\t\t\t\tif($.vakata.context.settings.hide_onmouseleave) {\n\t\t\t\t\t\tto = setTimeout(\n\t\t\t\t\t\t\t(function (t) {\n\t\t\t\t\t\t\t\treturn function () { $.vakata.context.hide(); };\n\t\t\t\t\t\t\t}(this)), $.vakata.context.settings.hide_onmouseleave);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on(\"click\", \"a\", function (e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t//})\n\t\t\t\t//.on(\"mouseup\", \"a\", function (e) {\n\t\t\t\t\tif(!$(this).blur().parent().hasClass(\"vakata-context-disabled\") && $.vakata.context._execute($(this).attr(\"rel\")) !== false) {\n\t\t\t\t\t\t$.vakata.context.hide();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on('keydown', 'a', function (e) {\n\t\t\t\t\t\tvar o = null;\n\t\t\t\t\t\tswitch(e.which) {\n\t\t\t\t\t\t\tcase 13:\n\t\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\t\te.type = \"mouseup\";\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t$(e.currentTarget).trigger(e);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 37:\n\t\t\t\t\t\t\t\tif(vakata_context.is_visible) {\n\t\t\t\t\t\t\t\t\tvakata_context.element.find(\".vakata-context-hover\").last().parents(\"li:eq(0)\").find(\"ul\").hide().find(\".vakata-context-hover\").removeClass(\"vakata-context-hover\").end().end().children('a').focus();\n\t\t\t\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 38:\n\t\t\t\t\t\t\t\tif(vakata_context.is_visible) {\n\t\t\t\t\t\t\t\t\to = vakata_context.element.find(\"ul:visible\").addBack().last().children(\".vakata-context-hover\").removeClass(\"vakata-context-hover\").prevAll(\"li:not(.vakata-context-separator)\").first();\n\t\t\t\t\t\t\t\t\tif(!o.length) { o = vakata_context.element.find(\"ul:visible\").addBack().last().children(\"li:not(.vakata-context-separator)\").last(); }\n\t\t\t\t\t\t\t\t\to.addClass(\"vakata-context-hover\").children('a').focus();\n\t\t\t\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 39:\n\t\t\t\t\t\t\t\tif(vakata_context.is_visible) {\n\t\t\t\t\t\t\t\t\tvakata_context.element.find(\".vakata-context-hover\").last().children(\"ul\").show().children(\"li:not(.vakata-context-separator)\").removeClass(\"vakata-context-hover\").first().addClass(\"vakata-context-hover\").children('a').focus();\n\t\t\t\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 40:\n\t\t\t\t\t\t\t\tif(vakata_context.is_visible) {\n\t\t\t\t\t\t\t\t\to = vakata_context.element.find(\"ul:visible\").addBack().last().children(\".vakata-context-hover\").removeClass(\"vakata-context-hover\").nextAll(\"li:not(.vakata-context-separator)\").first();\n\t\t\t\t\t\t\t\t\tif(!o.length) { o = vakata_context.element.find(\"ul:visible\").addBack().last().children(\"li:not(.vakata-context-separator)\").first(); }\n\t\t\t\t\t\t\t\t\to.addClass(\"vakata-context-hover\").children('a').focus();\n\t\t\t\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 27:\n\t\t\t\t\t\t\t\t$.vakata.context.hide();\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t//console.log(e.which);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t.on('keydown', function (e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvar a = vakata_context.element.find('.vakata-contextmenu-shortcut-' + e.which).parent();\n\t\t\t\t\tif(a.parent().not('.vakata-context-disabled')) {\n\t\t\t\t\t\ta.mouseup();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.appendTo(\"body\");\n\n\t\t\t$(document)\n\t\t\t\t.on(\"mousedown\", function (e) {\n\t\t\t\t\tif(vakata_context.is_visible && !$.contains(vakata_context.element[0], e.target)) { $.vakata.context.hide(); }\n\t\t\t\t})\n\t\t\t\t.on(\"context_show.vakata\", function (e, data) {\n\t\t\t\t\tvakata_context.element.find(\"li:has(ul)\").children(\"a\").addClass(\"vakata-context-parent\");\n\t\t\t\t\tif(right_to_left) {\n\t\t\t\t\t\tvakata_context.element.addClass(\"vakata-context-rtl\").css(\"direction\", \"rtl\");\n\t\t\t\t\t}\n\t\t\t\t\t// also apply a RTL class?\n\t\t\t\t\tvakata_context.element.find(\"ul\").hide().end();\n\t\t\t\t});\n\t\t});\n\t}($));\n\t// $.jstree.defaults.plugins.push(\"contextmenu\");\n\n/**\n * ### Drag'n'drop plugin\n *\n * Enables dragging and dropping of nodes in the tree, resulting in a move or copy operations.\n */\n\n\t/**\n\t * stores all defaults for the drag'n'drop plugin\n\t * @name $.jstree.defaults.dnd\n\t * @plugin dnd\n\t */\n\t$.jstree.defaults.dnd = {\n\t\t/**\n\t\t * a boolean indicating if a copy should be possible while dragging (by pressint the meta key or Ctrl). Defaults to `true`.\n\t\t * @name $.jstree.defaults.dnd.copy\n\t\t * @plugin dnd\n\t\t */\n\t\tcopy : true,\n\t\t/**\n\t\t * a number indicating how long a node should remain hovered while dragging to be opened. Defaults to `500`.\n\t\t * @name $.jstree.defaults.dnd.open_timeout\n\t\t * @plugin dnd\n\t\t */\n\t\topen_timeout : 500,\n\t\t/**\n\t\t * a function invoked each time a node is about to be dragged, invoked in the tree's scope and receives the nodes about to be dragged as an argument (array) - return `false` to prevent dragging\n\t\t * @name $.jstree.defaults.dnd.is_draggable\n\t\t * @plugin dnd\n\t\t */\n\t\tis_draggable : true,\n\t\t/**\n\t\t * a boolean indicating if checks should constantly be made while the user is dragging the node (as opposed to checking only on drop), default is `true`\n\t\t * @name $.jstree.defaults.dnd.check_while_dragging\n\t\t * @plugin dnd\n\t\t */\n\t\tcheck_while_dragging : true,\n\t\t/**\n\t\t * a boolean indicating if nodes from this tree should only be copied with dnd (as opposed to moved), default is `false`\n\t\t * @name $.jstree.defaults.dnd.always_copy\n\t\t * @plugin dnd\n\t\t */\n\t\talways_copy : false,\n\t\t/**\n\t\t * when dropping a node \"inside\", this setting indicates the position the node should go to - it can be an integer or a string: \"first\" (same as 0) or \"last\", default is `0`\n\t\t * @name $.jstree.defaults.dnd.inside_pos\n\t\t * @plugin dnd\n\t\t */\n\t\tinside_pos : 0\n\t};\n\t// TODO: now check works by checking for each node individually, how about max_children, unique, etc?\n\t// TODO: drop somewhere else - maybe demo only?\n\t$.jstree.plugins.dnd = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\n\t\t\tthis.element\n\t\t\t\t.on('mousedown.jstree touchstart.jstree', '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\tvar obj = this.get_node(e.target),\n\t\t\t\t\t\tmlt = this.is_selected(obj) ? this.get_selected().length : 1;\n\t\t\t\t\tif(obj && obj.id && obj.id !== \"#\" && (e.which === 1 || e.type === \"touchstart\") &&\n\t\t\t\t\t\t(this.settings.dnd.is_draggable === true || ($.isFunction(this.settings.dnd.is_draggable) && this.settings.dnd.is_draggable.call(this, (mlt > 1 ? this.get_selected(true) : [obj]))))\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.element.trigger('mousedown.jstree');\n\t\t\t\t\t\treturn $.vakata.dnd.start(e, { 'jstree' : true, 'origin' : this, 'obj' : this.get_node(obj,true), 'nodes' : mlt > 1 ? this.get_selected() : [obj.id] }, '
      ' + (mlt > 1 ? mlt + ' ' + this.get_string('nodes') : this.get_text(e.currentTarget, true)) + '+
      ');\n\t\t\t\t\t}\n\t\t\t\t}, this));\n\t\t};\n\t};\n\n\t$(function() {\n\t\t// bind only once for all instances\n\t\tvar lastmv = false,\n\t\t\tlaster = false,\n\t\t\topento = false,\n\t\t\tmarker = $('
       
      ').hide().appendTo('body');\n\n\t\t$(document)\n\t\t\t.bind('dnd_start.vakata', function (e, data) {\n\t\t\t\tlastmv = false;\n\t\t\t})\n\t\t\t.bind('dnd_move.vakata', function (e, data) {\n\t\t\t\tif(opento) { clearTimeout(opento); }\n\t\t\t\tif(!data || !data.data || !data.data.jstree) { return; }\n\n\t\t\t\t// if we are hovering the marker image do nothing (can happen on \"inside\" drags)\n\t\t\t\tif(data.event.target.id && data.event.target.id === 'jstree-marker') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar ins = $.jstree.reference(data.event.target),\n\t\t\t\t\tref = false,\n\t\t\t\t\toff = false,\n\t\t\t\t\trel = false,\n\t\t\t\t\tl, t, h, p, i, o, ok, t1, t2, op, ps, pr, ip, tm;\n\t\t\t\t// if we are over an instance\n\t\t\t\tif(ins && ins._data && ins._data.dnd) {\n\t\t\t\t\tmarker.attr('class', 'jstree-' + ins.get_theme() + ( ins.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' ));\n\t\t\t\t\tdata.helper\n\t\t\t\t\t\t.children().attr('class', 'jstree-' + ins.get_theme() + ( ins.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' ))\n\t\t\t\t\t\t.find('.jstree-copy:eq(0)')[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? 'show' : 'hide' ]();\n\n\n\t\t\t\t\t// if are hovering the container itself add a new root node\n\t\t\t\t\tif( (data.event.target === ins.element[0] || data.event.target === ins.get_container_ul()[0]) && ins.get_container_ul().children().length === 0) {\n\t\t\t\t\t\tok = true;\n\t\t\t\t\t\tfor(t1 = 0, t2 = data.data.nodes.length; t1 < t2; t1++) {\n\t\t\t\t\t\t\tok = ok && ins.check( (data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey)) ) ? \"copy_node\" : \"move_node\"), (data.data.origin && data.data.origin !== ins ? data.data.origin.get_node(data.data.nodes[t1]) : data.data.nodes[t1]), '#', 'last', { 'dnd' : true, 'ref' : ins.get_node('#'), 'pos' : 'i', 'is_multi' : (data.data.origin && data.data.origin !== ins), 'is_foreign' : (!data.data.origin) });\n\t\t\t\t\t\t\tif(!ok) { break; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ok) {\n\t\t\t\t\t\t\tlastmv = { 'ins' : ins, 'par' : '#', 'pos' : 'last' };\n\t\t\t\t\t\t\tmarker.hide();\n\t\t\t\t\t\t\tdata.helper.find('.jstree-icon:eq(0)').removeClass('jstree-er').addClass('jstree-ok');\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// if we are hovering a tree node\n\t\t\t\t\t\tref = $(data.event.target).closest('.jstree-anchor');\n\t\t\t\t\t\tif(ref && ref.length && ref.parent().is('.jstree-closed, .jstree-open, .jstree-leaf')) {\n\t\t\t\t\t\t\toff = ref.offset();\n\t\t\t\t\t\t\trel = data.event.pageY - off.top;\n\t\t\t\t\t\t\th = ref.height();\n\t\t\t\t\t\t\tif(rel < h / 3) {\n\t\t\t\t\t\t\t\to = ['b', 'i', 'a'];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if(rel > h - h / 3) {\n\t\t\t\t\t\t\t\to = ['a', 'i', 'b'];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\to = rel > h / 2 ? ['i', 'a', 'b'] : ['i', 'b', 'a'];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$.each(o, function (j, v) {\n\t\t\t\t\t\t\t\tswitch(v) {\n\t\t\t\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\t\t\t\t\tl = off.left - 6;\n\t\t\t\t\t\t\t\t\t\tt = off.top;\n\t\t\t\t\t\t\t\t\t\tp = ins.get_parent(ref);\n\t\t\t\t\t\t\t\t\t\ti = ref.parent().index();\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 'i':\n\t\t\t\t\t\t\t\t\t\tip = ins.settings.dnd.inside_pos;\n\t\t\t\t\t\t\t\t\t\ttm = ins.get_node(ref.parent());\n\t\t\t\t\t\t\t\t\t\tl = off.left - 2;\n\t\t\t\t\t\t\t\t\t\tt = off.top + h / 2 + 1;\n\t\t\t\t\t\t\t\t\t\tp = tm.id;\n\t\t\t\t\t\t\t\t\t\ti = ip === 'first' ? 0 : (ip === 'last' ? tm.children.length : Math.min(ip, tm.children.length));\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 'a':\n\t\t\t\t\t\t\t\t\t\tl = off.left - 6;\n\t\t\t\t\t\t\t\t\t\tt = off.top + h;\n\t\t\t\t\t\t\t\t\t\tp = ins.get_parent(ref);\n\t\t\t\t\t\t\t\t\t\ti = ref.parent().index() + 1;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/*!\n\t\t\t\t\t\t\t\t// TODO: moving inside, but the node is not yet loaded?\n\t\t\t\t\t\t\t\t// the check will work anyway, as when moving the node will be loaded first and checked again\n\t\t\t\t\t\t\t\tif(v === 'i' && !ins.is_loaded(p)) { }\n\t\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t\t\tok = true;\n\t\t\t\t\t\t\t\tfor(t1 = 0, t2 = data.data.nodes.length; t1 < t2; t1++) {\n\t\t\t\t\t\t\t\t\top = data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? \"copy_node\" : \"move_node\";\n\t\t\t\t\t\t\t\t\tps = i;\n\t\t\t\t\t\t\t\t\tif(op === \"move_node\" && v === 'a' && (data.data.origin && data.data.origin === ins) && p === ins.get_parent(data.data.nodes[t1])) {\n\t\t\t\t\t\t\t\t\t\tpr = ins.get_node(p);\n\t\t\t\t\t\t\t\t\t\tif(ps > $.inArray(data.data.nodes[t1], pr.children)) {\n\t\t\t\t\t\t\t\t\t\t\tps -= 1;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tok = ok && ( (ins && ins.settings && ins.settings.dnd && ins.settings.dnd.check_while_dragging === false) || ins.check(op, (data.data.origin && data.data.origin !== ins ? data.data.origin.get_node(data.data.nodes[t1]) : data.data.nodes[t1]), p, ps, { 'dnd' : true, 'ref' : ins.get_node(ref.parent()), 'pos' : v, 'is_multi' : (data.data.origin && data.data.origin !== ins), 'is_foreign' : (!data.data.origin) }) );\n\t\t\t\t\t\t\t\t\tif(!ok) {\n\t\t\t\t\t\t\t\t\t\tif(ins && ins.last_error) { laster = ins.last_error(); }\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(ok) {\n\t\t\t\t\t\t\t\t\tif(v === 'i' && ref.parent().is('.jstree-closed') && ins.settings.dnd.open_timeout) {\n\t\t\t\t\t\t\t\t\t\topento = setTimeout((function (x, z) { return function () { x.open_node(z); }; }(ins, ref)), ins.settings.dnd.open_timeout);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tlastmv = { 'ins' : ins, 'par' : p, 'pos' : v === 'i' && ip === 'last' && i === 0 && !ins.is_loaded(tm) ? 'last' : i };\n\t\t\t\t\t\t\t\t\tmarker.css({ 'left' : l + 'px', 'top' : t + 'px' }).show();\n\t\t\t\t\t\t\t\t\tdata.helper.find('.jstree-icon:eq(0)').removeClass('jstree-er').addClass('jstree-ok');\n\t\t\t\t\t\t\t\t\tlaster = {};\n\t\t\t\t\t\t\t\t\to = true;\n\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif(o === true) { return; }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastmv = false;\n\t\t\t\tdata.helper.find('.jstree-icon').removeClass('jstree-ok').addClass('jstree-er');\n\t\t\t\tmarker.hide();\n\t\t\t})\n\t\t\t.bind('dnd_scroll.vakata', function (e, data) {\n\t\t\t\tif(!data || !data.data || !data.data.jstree) { return; }\n\t\t\t\tmarker.hide();\n\t\t\t\tlastmv = false;\n\t\t\t\tdata.helper.find('.jstree-icon:eq(0)').removeClass('jstree-ok').addClass('jstree-er');\n\t\t\t})\n\t\t\t.bind('dnd_stop.vakata', function (e, data) {\n\t\t\t\tif(opento) { clearTimeout(opento); }\n\t\t\t\tif(!data || !data.data || !data.data.jstree) { return; }\n\t\t\t\tmarker.hide();\n\t\t\t\tvar i, j, nodes = [];\n\t\t\t\tif(lastmv) {\n\t\t\t\t\tfor(i = 0, j = data.data.nodes.length; i < j; i++) {\n\t\t\t\t\t\tnodes[i] = data.data.origin ? data.data.origin.get_node(data.data.nodes[i]) : data.data.nodes[i];\n\t\t\t\t\t\tif(data.data.origin) {\n\t\t\t\t\t\t\tnodes[i].instance = data.data.origin;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlastmv.ins[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? 'copy_node' : 'move_node' ](nodes, lastmv.par, lastmv.pos);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ti = $(data.event.target).closest('.jstree');\n\t\t\t\t\tif(i.length && laster && laster.error && laster.error === 'check') {\n\t\t\t\t\t\ti = i.jstree(true);\n\t\t\t\t\t\tif(i) {\n\t\t\t\t\t\t\ti.settings.core.error.call(this, laster);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t.bind('keyup keydown', function (e, data) {\n\t\t\t\tdata = $.vakata.dnd._get();\n\t\t\t\tif(data && data.data && data.data.jstree) {\n\t\t\t\t\tdata.helper.find('.jstree-copy:eq(0)')[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (e.metaKey || e.ctrlKey))) ? 'show' : 'hide' ]();\n\t\t\t\t}\n\t\t\t});\n\t});\n\n\t// helpers\n\t(function ($) {\n\t\t// private variable\n\t\tvar vakata_dnd = {\n\t\t\telement\t: false,\n\t\t\ttarget\t: false,\n\t\t\tis_down\t: false,\n\t\t\tis_drag\t: false,\n\t\t\thelper\t: false,\n\t\t\thelper_w: 0,\n\t\t\tdata\t: false,\n\t\t\tinit_x\t: 0,\n\t\t\tinit_y\t: 0,\n\t\t\tscroll_l: 0,\n\t\t\tscroll_t: 0,\n\t\t\tscroll_e: false,\n\t\t\tscroll_i: false,\n\t\t\tis_touch: false\n\t\t};\n\t\t$.vakata.dnd = {\n\t\t\tsettings : {\n\t\t\t\tscroll_speed\t\t: 10,\n\t\t\t\tscroll_proximity\t: 20,\n\t\t\t\thelper_left\t\t\t: 5,\n\t\t\t\thelper_top\t\t\t: 10,\n\t\t\t\tthreshold\t\t\t: 5,\n\t\t\t\tthreshold_touch\t\t: 50\n\t\t\t},\n\t\t\t_trigger : function (event_name, e) {\n\t\t\t\tvar data = $.vakata.dnd._get();\n\t\t\t\tdata.event = e;\n\t\t\t\t$(document).triggerHandler(\"dnd_\" + event_name + \".vakata\", data);\n\t\t\t},\n\t\t\t_get : function () {\n\t\t\t\treturn {\n\t\t\t\t\t\"data\"\t\t: vakata_dnd.data,\n\t\t\t\t\t\"element\"\t: vakata_dnd.element,\n\t\t\t\t\t\"helper\"\t: vakata_dnd.helper\n\t\t\t\t};\n\t\t\t},\n\t\t\t_clean : function () {\n\t\t\t\tif(vakata_dnd.helper) { vakata_dnd.helper.remove(); }\n\t\t\t\tif(vakata_dnd.scroll_i) { clearInterval(vakata_dnd.scroll_i); vakata_dnd.scroll_i = false; }\n\t\t\t\tvakata_dnd = {\n\t\t\t\t\telement\t: false,\n\t\t\t\t\ttarget\t: false,\n\t\t\t\t\tis_down\t: false,\n\t\t\t\t\tis_drag\t: false,\n\t\t\t\t\thelper\t: false,\n\t\t\t\t\thelper_w: 0,\n\t\t\t\t\tdata\t: false,\n\t\t\t\t\tinit_x\t: 0,\n\t\t\t\t\tinit_y\t: 0,\n\t\t\t\t\tscroll_l: 0,\n\t\t\t\t\tscroll_t: 0,\n\t\t\t\t\tscroll_e: false,\n\t\t\t\t\tscroll_i: false,\n\t\t\t\t\tis_touch: false\n\t\t\t\t};\n\t\t\t\t$(document).off(\"mousemove touchmove\", $.vakata.dnd.drag);\n\t\t\t\t$(document).off(\"mouseup touchend\", $.vakata.dnd.stop);\n\t\t\t},\n\t\t\t_scroll : function (init_only) {\n\t\t\t\tif(!vakata_dnd.scroll_e || (!vakata_dnd.scroll_l && !vakata_dnd.scroll_t)) {\n\t\t\t\t\tif(vakata_dnd.scroll_i) { clearInterval(vakata_dnd.scroll_i); vakata_dnd.scroll_i = false; }\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif(!vakata_dnd.scroll_i) {\n\t\t\t\t\tvakata_dnd.scroll_i = setInterval($.vakata.dnd._scroll, 100);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif(init_only === true) { return false; }\n\n\t\t\t\tvar i = vakata_dnd.scroll_e.scrollTop(),\n\t\t\t\t\tj = vakata_dnd.scroll_e.scrollLeft();\n\t\t\t\tvakata_dnd.scroll_e.scrollTop(i + vakata_dnd.scroll_t * $.vakata.dnd.settings.scroll_speed);\n\t\t\t\tvakata_dnd.scroll_e.scrollLeft(j + vakata_dnd.scroll_l * $.vakata.dnd.settings.scroll_speed);\n\t\t\t\tif(i !== vakata_dnd.scroll_e.scrollTop() || j !== vakata_dnd.scroll_e.scrollLeft()) {\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered on the document when a drag causes an element to scroll\n\t\t\t\t\t * @event\n\t\t\t\t\t * @plugin dnd\n\t\t\t\t\t * @name dnd_scroll.vakata\n\t\t\t\t\t * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start\n\t\t\t\t\t * @param {DOM} element the DOM element being dragged\n\t\t\t\t\t * @param {jQuery} helper the helper shown next to the mouse\n\t\t\t\t\t * @param {jQuery} event the element that is scrolling\n\t\t\t\t\t */\n\t\t\t\t\t$.vakata.dnd._trigger(\"scroll\", vakata_dnd.scroll_e);\n\t\t\t\t}\n\t\t\t},\n\t\t\tstart : function (e, data, html) {\n\t\t\t\tif(e.type === \"touchstart\" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) {\n\t\t\t\t\te.pageX = e.originalEvent.changedTouches[0].pageX;\n\t\t\t\t\te.pageY = e.originalEvent.changedTouches[0].pageY;\n\t\t\t\t\te.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset);\n\t\t\t\t}\n\t\t\t\tif(vakata_dnd.is_drag) { $.vakata.dnd.stop({}); }\n\t\t\t\ttry {\n\t\t\t\t\te.currentTarget.unselectable = \"on\";\n\t\t\t\t\te.currentTarget.onselectstart = function() { return false; };\n\t\t\t\t\tif(e.currentTarget.style) { e.currentTarget.style.MozUserSelect = \"none\"; }\n\t\t\t\t} catch(ignore) { }\n\t\t\t\tvakata_dnd.init_x\t= e.pageX;\n\t\t\t\tvakata_dnd.init_y\t= e.pageY;\n\t\t\t\tvakata_dnd.data\t\t= data;\n\t\t\t\tvakata_dnd.is_down\t= true;\n\t\t\t\tvakata_dnd.element\t= e.currentTarget;\n\t\t\t\tvakata_dnd.target\t= e.target;\n\t\t\t\tvakata_dnd.is_touch\t= e.type === \"touchstart\";\n\t\t\t\tif(html !== false) {\n\t\t\t\t\tvakata_dnd.helper = $(\"
      \").html(html).css({\n\t\t\t\t\t\t\"display\"\t\t: \"block\",\n\t\t\t\t\t\t\"margin\"\t\t: \"0\",\n\t\t\t\t\t\t\"padding\"\t\t: \"0\",\n\t\t\t\t\t\t\"position\"\t\t: \"absolute\",\n\t\t\t\t\t\t\"top\"\t\t\t: \"-2000px\",\n\t\t\t\t\t\t\"lineHeight\"\t: \"16px\",\n\t\t\t\t\t\t\"zIndex\"\t\t: \"10000\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t$(document).bind(\"mousemove touchmove\", $.vakata.dnd.drag);\n\t\t\t\t$(document).bind(\"mouseup touchend\", $.vakata.dnd.stop);\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tdrag : function (e) {\n\t\t\t\tif(e.type === \"touchmove\" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) {\n\t\t\t\t\te.pageX = e.originalEvent.changedTouches[0].pageX;\n\t\t\t\t\te.pageY = e.originalEvent.changedTouches[0].pageY;\n\t\t\t\t\te.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset);\n\t\t\t\t}\n\t\t\t\tif(!vakata_dnd.is_down) { return; }\n\t\t\t\tif(!vakata_dnd.is_drag) {\n\t\t\t\t\tif(\n\t\t\t\t\t\tMath.abs(e.pageX - vakata_dnd.init_x) > (vakata_dnd.is_touch ? $.vakata.dnd.settings.threshold_touch : $.vakata.dnd.settings.threshold) ||\n\t\t\t\t\t\tMath.abs(e.pageY - vakata_dnd.init_y) > (vakata_dnd.is_touch ? $.vakata.dnd.settings.threshold_touch : $.vakata.dnd.settings.threshold)\n\t\t\t\t\t) {\n\t\t\t\t\t\tif(vakata_dnd.helper) {\n\t\t\t\t\t\t\tvakata_dnd.helper.appendTo(\"body\");\n\t\t\t\t\t\t\tvakata_dnd.helper_w = vakata_dnd.helper.outerWidth();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvakata_dnd.is_drag = true;\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * triggered on the document when a drag starts\n\t\t\t\t\t\t * @event\n\t\t\t\t\t\t * @plugin dnd\n\t\t\t\t\t\t * @name dnd_start.vakata\n\t\t\t\t\t\t * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start\n\t\t\t\t\t\t * @param {DOM} element the DOM element being dragged\n\t\t\t\t\t\t * @param {jQuery} helper the helper shown next to the mouse\n\t\t\t\t\t\t * @param {Object} event the event that caused the start (probably mousemove)\n\t\t\t\t\t\t */\n\t\t\t\t\t\t$.vakata.dnd._trigger(\"start\", e);\n\t\t\t\t\t}\n\t\t\t\t\telse { return; }\n\t\t\t\t}\n\n\t\t\t\tvar d = false, w = false,\n\t\t\t\t\tdh = false, wh = false,\n\t\t\t\t\tdw = false, ww = false,\n\t\t\t\t\tdt = false, dl = false,\n\t\t\t\t\tht = false, hl = false;\n\n\t\t\t\tvakata_dnd.scroll_t = 0;\n\t\t\t\tvakata_dnd.scroll_l = 0;\n\t\t\t\tvakata_dnd.scroll_e = false;\n\t\t\t\t$($(e.target).parentsUntil(\"body\").addBack().get().reverse())\n\t\t\t\t\t.filter(function () {\n\t\t\t\t\t\treturn\t(/^auto|scroll$/).test($(this).css(\"overflow\")) &&\n\t\t\t\t\t\t\t\t(this.scrollHeight > this.offsetHeight || this.scrollWidth > this.offsetWidth);\n\t\t\t\t\t})\n\t\t\t\t\t.each(function () {\n\t\t\t\t\t\tvar t = $(this), o = t.offset();\n\t\t\t\t\t\tif(this.scrollHeight > this.offsetHeight) {\n\t\t\t\t\t\t\tif(o.top + t.height() - e.pageY < $.vakata.dnd.settings.scroll_proximity)\t{ vakata_dnd.scroll_t = 1; }\n\t\t\t\t\t\t\tif(e.pageY - o.top < $.vakata.dnd.settings.scroll_proximity)\t\t\t\t{ vakata_dnd.scroll_t = -1; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(this.scrollWidth > this.offsetWidth) {\n\t\t\t\t\t\t\tif(o.left + t.width() - e.pageX < $.vakata.dnd.settings.scroll_proximity)\t{ vakata_dnd.scroll_l = 1; }\n\t\t\t\t\t\t\tif(e.pageX - o.left < $.vakata.dnd.settings.scroll_proximity)\t\t\t\t{ vakata_dnd.scroll_l = -1; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(vakata_dnd.scroll_t || vakata_dnd.scroll_l) {\n\t\t\t\t\t\t\tvakata_dnd.scroll_e = $(this);\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\tif(!vakata_dnd.scroll_e) {\n\t\t\t\t\td = $(document); w = $(window);\n\t\t\t\t\tdh = d.height(); wh = w.height();\n\t\t\t\t\tdw = d.width(); ww = w.width();\n\t\t\t\t\tdt = d.scrollTop(); dl = d.scrollLeft();\n\t\t\t\t\tif(dh > wh && e.pageY - dt < $.vakata.dnd.settings.scroll_proximity)\t\t{ vakata_dnd.scroll_t = -1; }\n\t\t\t\t\tif(dh > wh && wh - (e.pageY - dt) < $.vakata.dnd.settings.scroll_proximity)\t{ vakata_dnd.scroll_t = 1; }\n\t\t\t\t\tif(dw > ww && e.pageX - dl < $.vakata.dnd.settings.scroll_proximity)\t\t{ vakata_dnd.scroll_l = -1; }\n\t\t\t\t\tif(dw > ww && ww - (e.pageX - dl) < $.vakata.dnd.settings.scroll_proximity)\t{ vakata_dnd.scroll_l = 1; }\n\t\t\t\t\tif(vakata_dnd.scroll_t || vakata_dnd.scroll_l) {\n\t\t\t\t\t\tvakata_dnd.scroll_e = d;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(vakata_dnd.scroll_e) { $.vakata.dnd._scroll(true); }\n\n\t\t\t\tif(vakata_dnd.helper) {\n\t\t\t\t\tht = parseInt(e.pageY + $.vakata.dnd.settings.helper_top, 10);\n\t\t\t\t\thl = parseInt(e.pageX + $.vakata.dnd.settings.helper_left, 10);\n\t\t\t\t\tif(dh && ht + 25 > dh) { ht = dh - 50; }\n\t\t\t\t\tif(dw && hl + vakata_dnd.helper_w > dw) { hl = dw - (vakata_dnd.helper_w + 2); }\n\t\t\t\t\tvakata_dnd.helper.css({\n\t\t\t\t\t\tleft\t: hl + \"px\",\n\t\t\t\t\t\ttop\t\t: ht + \"px\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered on the document when a drag is in progress\n\t\t\t\t * @event\n\t\t\t\t * @plugin dnd\n\t\t\t\t * @name dnd_move.vakata\n\t\t\t\t * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start\n\t\t\t\t * @param {DOM} element the DOM element being dragged\n\t\t\t\t * @param {jQuery} helper the helper shown next to the mouse\n\t\t\t\t * @param {Object} event the event that caused this to trigger (most likely mousemove)\n\t\t\t\t */\n\t\t\t\t$.vakata.dnd._trigger(\"move\", e);\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tstop : function (e) {\n\t\t\t\tif(e.type === \"touchend\" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) {\n\t\t\t\t\te.pageX = e.originalEvent.changedTouches[0].pageX;\n\t\t\t\t\te.pageY = e.originalEvent.changedTouches[0].pageY;\n\t\t\t\t\te.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset);\n\t\t\t\t}\n\t\t\t\tif(vakata_dnd.is_drag) {\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered on the document when a drag stops (the dragged element is dropped)\n\t\t\t\t\t * @event\n\t\t\t\t\t * @plugin dnd\n\t\t\t\t\t * @name dnd_stop.vakata\n\t\t\t\t\t * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start\n\t\t\t\t\t * @param {DOM} element the DOM element being dragged\n\t\t\t\t\t * @param {jQuery} helper the helper shown next to the mouse\n\t\t\t\t\t * @param {Object} event the event that caused the stop\n\t\t\t\t\t */\n\t\t\t\t\t$.vakata.dnd._trigger(\"stop\", e);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif(e.type === \"touchend\" && e.target === vakata_dnd.target) {\n\t\t\t\t\t\tvar to = setTimeout(function () { $(e.target).click(); }, 100);\n\t\t\t\t\t\t$(e.target).one('click', function() { if(to) { clearTimeout(to); } });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$.vakata.dnd._clean();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\t}($));\n\n\t// include the dnd plugin by default\n\t// $.jstree.defaults.plugins.push(\"dnd\");\n\n\n/**\n * ### Search plugin\n *\n * Adds search functionality to jsTree.\n */\n\n\t/**\n\t * stores all defaults for the search plugin\n\t * @name $.jstree.defaults.search\n\t * @plugin search\n\t */\n\t$.jstree.defaults.search = {\n\t\t/**\n\t\t * a jQuery-like AJAX config, which jstree uses if a server should be queried for results. \n\t\t * \n\t\t * A `str` (which is the search string) parameter will be added with the request. The expected result is a JSON array with nodes that need to be opened so that matching nodes will be revealed.\n\t\t * Leave this setting as `false` to not query the server. You can also set this to a function, which will be invoked in the instance's scope and receive 2 parameters - the search string and the callback to call with the array of nodes to load.\n\t\t * @name $.jstree.defaults.search.ajax\n\t\t * @plugin search\n\t\t */\n\t\tajax : false,\n\t\t/**\n\t\t * Indicates if the search should be fuzzy or not (should `chnd3` match `child node 3`). Default is `false`.\n\t\t * @name $.jstree.defaults.search.fuzzy\n\t\t * @plugin search\n\t\t */\n\t\tfuzzy : false,\n\t\t/**\n\t\t * Indicates if the search should be case sensitive. Default is `false`.\n\t\t * @name $.jstree.defaults.search.case_sensitive\n\t\t * @plugin search\n\t\t */\n\t\tcase_sensitive : false,\n\t\t/**\n\t\t * Indicates if the tree should be filtered to show only matching nodes (keep in mind this can be a heavy on large trees in old browsers). Default is `false`.\n\t\t * @name $.jstree.defaults.search.show_only_matches\n\t\t * @plugin search\n\t\t */\n\t\tshow_only_matches : false,\n\t\t/**\n\t\t * Indicates if all nodes opened to reveal the search result, should be closed when the search is cleared or a new search is performed. Default is `true`.\n\t\t * @name $.jstree.defaults.search.close_opened_onclear\n\t\t * @plugin search\n\t\t */\n\t\tclose_opened_onclear : true,\n\t\t/**\n\t\t * Indicates if only leaf nodes should be included in search results. Default is `false`.\n\t\t * @name $.jstree.defaults.search.search_leaves_only\n\t\t * @plugin search\n\t\t */\n\t\tsearch_leaves_only : false,\n\t\t/**\n\t\t * If set to a function it wil be called in the instance's scope with two arguments - search string and node (where node will be every node in the structure, so use with caution).\n\t\t * If the function returns a truthy value the node will be considered a match (it might not be displayed if search_only_leaves is set to true and the node is not a leaf). Default is `false`.\n\t\t * @name $.jstree.defaults.search.search_callback\n\t\t * @plugin search\n\t\t */\n\t\tsearch_callback : false\n\t};\n\n\t$.jstree.plugins.search = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\n\t\t\tthis._data.search.str = \"\";\n\t\t\tthis._data.search.dom = $();\n\t\t\tthis._data.search.res = [];\n\t\t\tthis._data.search.opn = [];\n\n\t\t\tthis.element.on('before_open.jstree', $.proxy(function (e, data) {\n\t\t\t\tvar i, j, f, r = this._data.search.res, s = [], o = $();\n\t\t\t\tif(r && r.length) {\n\t\t\t\t\tthis._data.search.dom = $(this.element[0].querySelectorAll('#' + $.map(r, function (v) { return \"0123456789\".indexOf(v[0]) !== -1 ? '\\\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\\\$&') : v.replace($.jstree.idregex,'\\\\$&'); }).join(', #')));\n\t\t\t\t\tthis._data.search.dom.children(\".jstree-anchor\").addClass('jstree-search');\n\t\t\t\t\tif(this.settings.search.show_only_matches && this._data.search.res.length) {\n\t\t\t\t\t\tfor(i = 0, j = r.length; i < j; i++) {\n\t\t\t\t\t\t\ts = s.concat(this.get_node(r[i]).parents);\n\t\t\t\t\t\t}\n\t\t\t\t\t\ts = $.vakata.array_remove_item($.vakata.array_unique(s),'#');\n\t\t\t\t\t\to = s.length ? $(this.element[0].querySelectorAll('#' + $.map(s, function (v) { return \"0123456789\".indexOf(v[0]) !== -1 ? '\\\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\\\$&') : v.replace($.jstree.idregex,'\\\\$&'); }).join(', #'))) : $();\n\n\t\t\t\t\t\tthis.element.find(\".jstree-node\").hide().filter('.jstree-last').filter(function() { return this.nextSibling; }).removeClass('jstree-last');\n\t\t\t\t\t\to = o.add(this._data.search.dom);\n\t\t\t\t\t\to.parentsUntil(\".jstree\").addBack().show()\n\t\t\t\t\t\t\t.filter(\".jstree-children\").each(function () { $(this).children(\".jstree-node:visible\").eq(-1).addClass(\"jstree-last\"); });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this));\n\t\t\tif(this.settings.search.show_only_matches) {\n\t\t\t\tthis.element\n\t\t\t\t\t.on(\"search.jstree\", function (e, data) {\n\t\t\t\t\t\tif(data.nodes.length) {\n\t\t\t\t\t\t\t$(this).find(\".jstree-node\").hide().filter('.jstree-last').filter(function() { return this.nextSibling; }).removeClass('jstree-last');\n\t\t\t\t\t\t\tdata.nodes.parentsUntil(\".jstree\").addBack().show()\n\t\t\t\t\t\t\t\t.filter(\".jstree-children\").each(function () { $(this).children(\".jstree-node:visible\").eq(-1).addClass(\"jstree-last\"); });\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.on(\"clear_search.jstree\", function (e, data) {\n\t\t\t\t\t\tif(data.nodes.length) {\n\t\t\t\t\t\t\t$(this).find(\".jstree-node\").css(\"display\",\"\").filter('.jstree-last').filter(function() { return this.nextSibling; }).removeClass('jstree-last');\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * used to search the tree nodes for a given string\n\t\t * @name search(str [, skip_async])\n\t\t * @param {String} str the search string\n\t\t * @param {Boolean} skip_async if set to true server will not be queried even if configured\n\t\t * @plugin search\n\t\t * @trigger search.jstree\n\t\t */\n\t\tthis.search = function (str, skip_async) {\n\t\t\tif(str === false || $.trim(str.toString()) === \"\") {\n\t\t\t\treturn this.clear_search();\n\t\t\t}\n\t\t\tstr = str.toString();\n\t\t\tvar s = this.settings.search,\n\t\t\t\ta = s.ajax ? s.ajax : false,\n\t\t\t\tf = null,\n\t\t\t\tr = [],\n\t\t\t\tp = [], i, j;\n\t\t\tif(this._data.search.res.length) {\n\t\t\t\tthis.clear_search();\n\t\t\t}\n\t\t\tif(!skip_async && a !== false) {\n\t\t\t\tif($.isFunction(a)) {\n\t\t\t\t\treturn a.call(this, str, $.proxy(function (d) {\n\t\t\t\t\t\t\tif(d && d.d) { d = d.d; }\n\t\t\t\t\t\t\tthis._load_nodes(!$.isArray(d) ? [] : $.vakata.array_unique(d), function () {\n\t\t\t\t\t\t\t\tthis.search(str, true);\n\t\t\t\t\t\t\t}, true);\n\t\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ta = $.extend({}, a);\n\t\t\t\t\tif(!a.data) { a.data = {}; }\n\t\t\t\t\ta.data.str = str;\n\t\t\t\t\treturn $.ajax(a)\n\t\t\t\t\t\t.fail($.proxy(function () {\n\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'search', 'id' : 'search_01', 'reason' : 'Could not load search parents', 'data' : JSON.stringify(a) };\n\t\t\t\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\t\t\t}, this))\n\t\t\t\t\t\t.done($.proxy(function (d) {\n\t\t\t\t\t\t\tif(d && d.d) { d = d.d; }\n\t\t\t\t\t\t\tthis._load_nodes(!$.isArray(d) ? [] : $.vakata.array_unique(d), function () {\n\t\t\t\t\t\t\t\tthis.search(str, true);\n\t\t\t\t\t\t\t}, true);\n\t\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._data.search.str = str;\n\t\t\tthis._data.search.dom = $();\n\t\t\tthis._data.search.res = [];\n\t\t\tthis._data.search.opn = [];\n\n\t\t\tf = new $.vakata.search(str, true, { caseSensitive : s.case_sensitive, fuzzy : s.fuzzy });\n\n\t\t\t$.each(this._model.data, function (i, v) {\n\t\t\t\tif(v.text && ( (s.search_callback && s.search_callback.call(this, str, v)) || (!s.search_callback && f.search(v.text).isMatch) ) && (!s.search_leaves_only || (v.state.loaded && v.children.length === 0)) ) {\n\t\t\t\t\tr.push(i);\n\t\t\t\t\tp = p.concat(v.parents);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(r.length) {\n\t\t\t\tp = $.vakata.array_unique(p);\n\t\t\t\tthis._search_open(p);\n\t\t\t\tthis._data.search.dom = $(this.element[0].querySelectorAll('#' + $.map(r, function (v) { return \"0123456789\".indexOf(v[0]) !== -1 ? '\\\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\\\$&') : v.replace($.jstree.idregex,'\\\\$&'); }).join(', #')));\n\t\t\t\tthis._data.search.res = r;\n\t\t\t\tthis._data.search.dom.children(\".jstree-anchor\").addClass('jstree-search');\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered after search is complete\n\t\t\t * @event\n\t\t\t * @name search.jstree\n\t\t\t * @param {jQuery} nodes a jQuery collection of matching nodes\n\t\t\t * @param {String} str the search string\n\t\t\t * @param {Array} res a collection of objects represeing the matching nodes\n\t\t\t * @plugin search\n\t\t\t */\n\t\t\tthis.trigger('search', { nodes : this._data.search.dom, str : str, res : this._data.search.res });\n\t\t};\n\t\t/**\n\t\t * used to clear the last search (removes classes and shows all nodes if filtering is on)\n\t\t * @name clear_search()\n\t\t * @plugin search\n\t\t * @trigger clear_search.jstree\n\t\t */\n\t\tthis.clear_search = function () {\n\t\t\tthis._data.search.dom.children(\".jstree-anchor\").removeClass(\"jstree-search\");\n\t\t\tif(this.settings.search.close_opened_onclear) {\n\t\t\t\tthis.close_node(this._data.search.opn, 0);\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered after search is complete\n\t\t\t * @event\n\t\t\t * @name clear_search.jstree\n\t\t\t * @param {jQuery} nodes a jQuery collection of matching nodes (the result from the last search)\n\t\t\t * @param {String} str the search string (the last search string)\n\t\t\t * @param {Array} res a collection of objects represeing the matching nodes (the result from the last search)\n\t\t\t * @plugin search\n\t\t\t */\n\t\t\tthis.trigger('clear_search', { 'nodes' : this._data.search.dom, str : this._data.search.str, res : this._data.search.res });\n\t\t\tthis._data.search.str = \"\";\n\t\t\tthis._data.search.res = [];\n\t\t\tthis._data.search.opn = [];\n\t\t\tthis._data.search.dom = $();\n\t\t};\n\t\t/**\n\t\t * opens nodes that need to be opened to reveal the search results. Used only internally.\n\t\t * @private\n\t\t * @name _search_open(d)\n\t\t * @param {Array} d an array of node IDs\n\t\t * @plugin search\n\t\t */\n\t\tthis._search_open = function (d) {\n\t\t\tvar t = this;\n\t\t\t$.each(d.concat([]), function (i, v) {\n\t\t\t\tif(v === \"#\") { return true; }\n\t\t\t\ttry { v = $('#' + v.replace($.jstree.idregex,'\\\\$&'), t.element); } catch(ignore) { }\n\t\t\t\tif(v && v.length) {\n\t\t\t\t\tif(t.is_closed(v)) {\n\t\t\t\t\t\tt._data.search.opn.push(v[0].id);\n\t\t\t\t\t\tt.open_node(v, function () { t._search_open(d); }, 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t};\n\n\t// helpers\n\t(function ($) {\n\t\t// from http://kiro.me/projects/fuse.html\n\t\t$.vakata.search = function(pattern, txt, options) {\n\t\t\toptions = options || {};\n\t\t\tif(options.fuzzy !== false) {\n\t\t\t\toptions.fuzzy = true;\n\t\t\t}\n\t\t\tpattern = options.caseSensitive ? pattern : pattern.toLowerCase();\n\t\t\tvar MATCH_LOCATION\t= options.location || 0,\n\t\t\t\tMATCH_DISTANCE\t= options.distance || 100,\n\t\t\t\tMATCH_THRESHOLD\t= options.threshold || 0.6,\n\t\t\t\tpatternLen = pattern.length,\n\t\t\t\tmatchmask, pattern_alphabet, match_bitapScore, search;\n\t\t\tif(patternLen > 32) {\n\t\t\t\toptions.fuzzy = false;\n\t\t\t}\n\t\t\tif(options.fuzzy) {\n\t\t\t\tmatchmask = 1 << (patternLen - 1);\n\t\t\t\tpattern_alphabet = (function () {\n\t\t\t\t\tvar mask = {},\n\t\t\t\t\t\ti = 0;\n\t\t\t\t\tfor (i = 0; i < patternLen; i++) {\n\t\t\t\t\t\tmask[pattern.charAt(i)] = 0;\n\t\t\t\t\t}\n\t\t\t\t\tfor (i = 0; i < patternLen; i++) {\n\t\t\t\t\t\tmask[pattern.charAt(i)] |= 1 << (patternLen - i - 1);\n\t\t\t\t\t}\n\t\t\t\t\treturn mask;\n\t\t\t\t}());\n\t\t\t\tmatch_bitapScore = function (e, x) {\n\t\t\t\t\tvar accuracy = e / patternLen,\n\t\t\t\t\t\tproximity = Math.abs(MATCH_LOCATION - x);\n\t\t\t\t\tif(!MATCH_DISTANCE) {\n\t\t\t\t\t\treturn proximity ? 1.0 : accuracy;\n\t\t\t\t\t}\n\t\t\t\t\treturn accuracy + (proximity / MATCH_DISTANCE);\n\t\t\t\t};\n\t\t\t}\n\t\t\tsearch = function (text) {\n\t\t\t\ttext = options.caseSensitive ? text : text.toLowerCase();\n\t\t\t\tif(pattern === text || text.indexOf(pattern) !== -1) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tisMatch: true,\n\t\t\t\t\t\tscore: 0\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif(!options.fuzzy) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tisMatch: false,\n\t\t\t\t\t\tscore: 1\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tvar i, j,\n\t\t\t\t\ttextLen = text.length,\n\t\t\t\t\tscoreThreshold = MATCH_THRESHOLD,\n\t\t\t\t\tbestLoc = text.indexOf(pattern, MATCH_LOCATION),\n\t\t\t\t\tbinMin, binMid,\n\t\t\t\t\tbinMax = patternLen + textLen,\n\t\t\t\t\tlastRd, start, finish, rd, charMatch,\n\t\t\t\t\tscore = 1,\n\t\t\t\t\tlocations = [];\n\t\t\t\tif (bestLoc !== -1) {\n\t\t\t\t\tscoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold);\n\t\t\t\t\tbestLoc = text.lastIndexOf(pattern, MATCH_LOCATION + patternLen);\n\t\t\t\t\tif (bestLoc !== -1) {\n\t\t\t\t\t\tscoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbestLoc = -1;\n\t\t\t\tfor (i = 0; i < patternLen; i++) {\n\t\t\t\t\tbinMin = 0;\n\t\t\t\t\tbinMid = binMax;\n\t\t\t\t\twhile (binMin < binMid) {\n\t\t\t\t\t\tif (match_bitapScore(i, MATCH_LOCATION + binMid) <= scoreThreshold) {\n\t\t\t\t\t\t\tbinMin = binMid;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbinMax = binMid;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbinMid = Math.floor((binMax - binMin) / 2 + binMin);\n\t\t\t\t\t}\n\t\t\t\t\tbinMax = binMid;\n\t\t\t\t\tstart = Math.max(1, MATCH_LOCATION - binMid + 1);\n\t\t\t\t\tfinish = Math.min(MATCH_LOCATION + binMid, textLen) + patternLen;\n\t\t\t\t\trd = new Array(finish + 2);\n\t\t\t\t\trd[finish + 1] = (1 << i) - 1;\n\t\t\t\t\tfor (j = finish; j >= start; j--) {\n\t\t\t\t\t\tcharMatch = pattern_alphabet[text.charAt(j - 1)];\n\t\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\t\trd[j] = ((rd[j + 1] << 1) | 1) & charMatch;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trd[j] = ((rd[j + 1] << 1) | 1) & charMatch | (((lastRd[j + 1] | lastRd[j]) << 1) | 1) | lastRd[j + 1];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (rd[j] & matchmask) {\n\t\t\t\t\t\t\tscore = match_bitapScore(i, j - 1);\n\t\t\t\t\t\t\tif (score <= scoreThreshold) {\n\t\t\t\t\t\t\t\tscoreThreshold = score;\n\t\t\t\t\t\t\t\tbestLoc = j - 1;\n\t\t\t\t\t\t\t\tlocations.push(bestLoc);\n\t\t\t\t\t\t\t\tif (bestLoc > MATCH_LOCATION) {\n\t\t\t\t\t\t\t\t\tstart = Math.max(1, 2 * MATCH_LOCATION - bestLoc);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (match_bitapScore(i + 1, MATCH_LOCATION) > scoreThreshold) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tlastRd = rd;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tisMatch: bestLoc >= 0,\n\t\t\t\t\tscore: score\n\t\t\t\t};\n\t\t\t};\n\t\t\treturn txt === true ? { 'search' : search } : search(txt);\n\t\t};\n\t}($));\n\n\t// include the search plugin by default\n\t// $.jstree.defaults.plugins.push(\"search\");\n\n/**\n * ### Sort plugin\n *\n * Autmatically sorts all siblings in the tree according to a sorting function.\n */\n\n\t/**\n\t * the settings function used to sort the nodes.\n\t * It is executed in the tree's context, accepts two nodes as arguments and should return `1` or `-1`.\n\t * @name $.jstree.defaults.sort\n\t * @plugin sort\n\t */\n\t$.jstree.defaults.sort = function (a, b) {\n\t\t//return this.get_type(a) === this.get_type(b) ? (this.get_text(a) > this.get_text(b) ? 1 : -1) : this.get_type(a) >= this.get_type(b);\n\t\treturn this.get_text(a) > this.get_text(b) ? 1 : -1;\n\t};\n\t$.jstree.plugins.sort = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\t\t\tthis.element\n\t\t\t\t.on(\"model.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.sort(data.parent, true);\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"rename_node.jstree create_node.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.sort(data.parent || data.node.parent, false);\n\t\t\t\t\t\tthis.redraw_node(data.parent || data.node.parent, true);\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"move_node.jstree copy_node.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.sort(data.parent, false);\n\t\t\t\t\t\tthis.redraw_node(data.parent, true);\n\t\t\t\t\t}, this));\n\t\t};\n\t\t/**\n\t\t * used to sort a node's children\n\t\t * @private\n\t\t * @name sort(obj [, deep])\n\t\t * @param {mixed} obj the node\n\t\t * @param {Boolean} deep if set to `true` nodes are sorted recursively.\n\t\t * @plugin sort\n\t\t * @trigger search.jstree\n\t\t */\n\t\tthis.sort = function (obj, deep) {\n\t\t\tvar i, j;\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(obj && obj.children && obj.children.length) {\n\t\t\t\tobj.children.sort($.proxy(this.settings.sort, this));\n\t\t\t\tif(deep) {\n\t\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\t\tthis.sort(obj.children_d[i], false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t};\n\n\t// include the sort plugin by default\n\t// $.jstree.defaults.plugins.push(\"sort\");\n\n/**\n * ### State plugin\n *\n * Saves the state of the tree (selected nodes, opened nodes) on the user's computer using available options (localStorage, cookies, etc)\n */\n\n\tvar to = false;\n\t/**\n\t * stores all defaults for the state plugin\n\t * @name $.jstree.defaults.state\n\t * @plugin state\n\t */\n\t$.jstree.defaults.state = {\n\t\t/**\n\t\t * A string for the key to use when saving the current tree (change if using multiple trees in your project). Defaults to `jstree`.\n\t\t * @name $.jstree.defaults.state.key\n\t\t * @plugin state\n\t\t */\n\t\tkey\t\t: 'jstree',\n\t\t/**\n\t\t * A space separated list of events that trigger a state save. Defaults to `changed.jstree open_node.jstree close_node.jstree`.\n\t\t * @name $.jstree.defaults.state.events\n\t\t * @plugin state\n\t\t */\n\t\tevents\t: 'changed.jstree open_node.jstree close_node.jstree',\n\t\t/**\n\t\t * Time in milliseconds after which the state will expire. Defaults to 'false' meaning - no expire.\n\t\t * @name $.jstree.defaults.state.ttl\n\t\t * @plugin state\n\t\t */\n\t\tttl\t\t: false,\n\t\t/**\n\t\t * A function that will be executed prior to restoring state with one argument - the state object. Can be used to clear unwanted parts of the state.\n\t\t * @name $.jstree.defaults.state.filter\n\t\t * @plugin state\n\t\t */\n\t\tfilter\t: false\n\t};\n\t$.jstree.plugins.state = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\t\t\tvar bind = $.proxy(function () {\n\t\t\t\tthis.element.on(this.settings.state.events, $.proxy(function () {\n\t\t\t\t\tif(to) { clearTimeout(to); }\n\t\t\t\t\tto = setTimeout($.proxy(function () { this.save_state(); }, this), 100);\n\t\t\t\t}, this));\n\t\t\t}, this);\n\t\t\tthis.element\n\t\t\t\t.on(\"ready.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.element.one(\"restore_state.jstree\", bind);\n\t\t\t\t\t\tif(!this.restore_state()) { bind(); }\n\t\t\t\t\t}, this));\n\t\t};\n\t\t/**\n\t\t * save the state\n\t\t * @name save_state()\n\t\t * @plugin state\n\t\t */\n\t\tthis.save_state = function () {\n\t\t\tvar st = { 'state' : this.get_state(), 'ttl' : this.settings.state.ttl, 'sec' : +(new Date()) };\n\t\t\t$.vakata.storage.set(this.settings.state.key, JSON.stringify(st));\n\t\t};\n\t\t/**\n\t\t * restore the state from the user's computer\n\t\t * @name restore_state()\n\t\t * @plugin state\n\t\t */\n\t\tthis.restore_state = function () {\n\t\t\tvar k = $.vakata.storage.get(this.settings.state.key);\n\t\t\tif(!!k) { try { k = JSON.parse(k); } catch(ex) { return false; } }\n\t\t\tif(!!k && k.ttl && k.sec && +(new Date()) - k.sec > k.ttl) { return false; }\n\t\t\tif(!!k && k.state) { k = k.state; }\n\t\t\tif(!!k && $.isFunction(this.settings.state.filter)) { k = this.settings.state.filter.call(this, k); }\n\t\t\tif(!!k) {\n\t\t\t\tthis.element.one(\"set_state.jstree\", function (e, data) { data.instance.trigger('restore_state', { 'state' : $.extend(true, {}, k) }); });\n\t\t\t\tthis.set_state(k);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t\t/**\n\t\t * clear the state on the user's computer\n\t\t * @name clear_state()\n\t\t * @plugin state\n\t\t */\n\t\tthis.clear_state = function () {\n\t\t\treturn $.vakata.storage.del(this.settings.state.key);\n\t\t};\n\t};\n\n\t(function ($, undefined) {\n\t\t$.vakata.storage = {\n\t\t\t// simply specifying the functions in FF throws an error\n\t\t\tset : function (key, val) { return window.localStorage.setItem(key, val); },\n\t\t\tget : function (key) { return window.localStorage.getItem(key); },\n\t\t\tdel : function (key) { return window.localStorage.removeItem(key); }\n\t\t};\n\t}($));\n\n\t// include the state plugin by default\n\t// $.jstree.defaults.plugins.push(\"state\");\n\n/**\n * ### Types plugin\n *\n * Makes it possible to add predefined types for groups of nodes, which make it possible to easily control nesting rules and icon for each group.\n */\n\n\t/**\n\t * An object storing all types as key value pairs, where the key is the type name and the value is an object that could contain following keys (all optional).\n\t * \n\t * * `max_children` the maximum number of immediate children this node type can have. Do not specify or set to `-1` for unlimited.\n\t * * `max_depth` the maximum number of nesting this node type can have. A value of `1` would mean that the node can have children, but no grandchildren. Do not specify or set to `-1` for unlimited.\n\t * * `valid_children` an array of node type strings, that nodes of this type can have as children. Do not specify or set to `-1` for no limits.\n\t * * `icon` a string - can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class. Omit to use the default icon from your theme.\n\t *\n\t * There are two predefined types:\n\t * \n\t * * `#` represents the root of the tree, for example `max_children` would control the maximum number of root nodes.\n\t * * `default` represents the default node - any settings here will be applied to all nodes that do not have a type specified.\n\t * \n\t * @name $.jstree.defaults.types\n\t * @plugin types\n\t */\n\t$.jstree.defaults.types = {\n\t\t'#' : {},\n\t\t'default' : {}\n\t};\n\n\t$.jstree.plugins.types = function (options, parent) {\n\t\tthis.init = function (el, options) {\n\t\t\tvar i, j;\n\t\t\tif(options && options.types && options.types['default']) {\n\t\t\t\tfor(i in options.types) {\n\t\t\t\t\tif(i !== \"default\" && i !== \"#\" && options.types.hasOwnProperty(i)) {\n\t\t\t\t\t\tfor(j in options.types['default']) {\n\t\t\t\t\t\t\tif(options.types['default'].hasOwnProperty(j) && options.types[i][j] === undefined) {\n\t\t\t\t\t\t\t\toptions.types[i][j] = options.types['default'][j];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tparent.init.call(this, el, options);\n\t\t\tthis._model.data['#'].type = '#';\n\t\t};\n\t\tthis.refresh = function (skip_loading, forget_state) {\n\t\t\tparent.refresh.call(this, skip_loading, forget_state);\n\t\t\tthis._model.data['#'].type = '#';\n\t\t};\n\t\tthis.bind = function () {\n\t\t\tthis.element\n\t\t\t\t.on('model.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\tvar m = this._model.data,\n\t\t\t\t\t\t\tdpc = data.nodes,\n\t\t\t\t\t\t\tt = this.settings.types,\n\t\t\t\t\t\t\ti, j, c = 'default';\n\t\t\t\t\t\tfor(i = 0, j = dpc.length; i < j; i++) {\n\t\t\t\t\t\t\tc = 'default';\n\t\t\t\t\t\t\tif(m[dpc[i]].original && m[dpc[i]].original.type && t[m[dpc[i]].original.type]) {\n\t\t\t\t\t\t\t\tc = m[dpc[i]].original.type;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(m[dpc[i]].data && m[dpc[i]].data.jstree && m[dpc[i]].data.jstree.type && t[m[dpc[i]].data.jstree.type]) {\n\t\t\t\t\t\t\t\tc = m[dpc[i]].data.jstree.type;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tm[dpc[i]].type = c;\n\t\t\t\t\t\t\tif(m[dpc[i]].icon === true && t[c].icon !== undefined) {\n\t\t\t\t\t\t\t\tm[dpc[i]].icon = t[c].icon;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tm['#'].type = '#';\n\t\t\t\t\t}, this));\n\t\t\tparent.bind.call(this);\n\t\t};\n\t\tthis.get_json = function (obj, options, flat) {\n\t\t\tvar i, j,\n\t\t\t\tm = this._model.data,\n\t\t\t\topt = options ? $.extend(true, {}, options, {no_id:false}) : {},\n\t\t\t\ttmp = parent.get_json.call(this, obj, opt, flat);\n\t\t\tif(tmp === false) { return false; }\n\t\t\tif($.isArray(tmp)) {\n\t\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\t\ttmp[i].type = tmp[i].id && m[tmp[i].id] && m[tmp[i].id].type ? m[tmp[i].id].type : \"default\";\n\t\t\t\t\tif(options && options.no_id) {\n\t\t\t\t\t\tdelete tmp[i].id;\n\t\t\t\t\t\tif(tmp[i].li_attr && tmp[i].li_attr.id) {\n\t\t\t\t\t\t\tdelete tmp[i].li_attr.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttmp.type = tmp.id && m[tmp.id] && m[tmp.id].type ? m[tmp.id].type : \"default\";\n\t\t\t\tif(options && options.no_id) {\n\t\t\t\t\ttmp = this._delete_ids(tmp);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn tmp;\n\t\t};\n\t\tthis._delete_ids = function (tmp) {\n\t\t\tif($.isArray(tmp)) {\n\t\t\t\tfor(var i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\t\ttmp[i] = this._delete_ids(tmp[i]);\n\t\t\t\t}\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\tdelete tmp.id;\n\t\t\tif(tmp.li_attr && tmp.li_attr.id) {\n\t\t\t\tdelete tmp.li_attr.id;\n\t\t\t}\n\t\t\tif(tmp.children && $.isArray(tmp.children)) {\n\t\t\t\ttmp.children = this._delete_ids(tmp.children);\n\t\t\t}\n\t\t\treturn tmp;\n\t\t};\n\t\tthis.check = function (chk, obj, par, pos, more) {\n\t\t\tif(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; }\n\t\t\tobj = obj && obj.id ? obj : this.get_node(obj);\n\t\t\tpar = par && par.id ? par : this.get_node(par);\n\t\t\tvar m = obj && obj.id ? $.jstree.reference(obj.id) : null, tmp, d, i, j;\n\t\t\tm = m && m._model && m._model.data ? m._model.data : null;\n\t\t\tswitch(chk) {\n\t\t\t\tcase \"create_node\":\n\t\t\t\tcase \"move_node\":\n\t\t\t\tcase \"copy_node\":\n\t\t\t\t\tif(chk !== 'move_node' || $.inArray(obj.id, par.children) === -1) {\n\t\t\t\t\t\ttmp = this.get_rules(par);\n\t\t\t\t\t\tif(tmp.max_children !== undefined && tmp.max_children !== -1 && tmp.max_children === par.children.length) {\n\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_01', 'reason' : 'max_children prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(tmp.valid_children !== undefined && tmp.valid_children !== -1 && $.inArray(obj.type, tmp.valid_children) === -1) {\n\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_02', 'reason' : 'valid_children prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(m && obj.children_d && obj.parents) {\n\t\t\t\t\t\t\td = 0;\n\t\t\t\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\t\t\t\td = Math.max(d, m[obj.children_d[i]].parents.length);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\td = d - obj.parents.length + 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(d <= 0 || d === undefined) { d = 1; }\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tif(tmp.max_depth !== undefined && tmp.max_depth !== -1 && tmp.max_depth < d) {\n\t\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_03', 'reason' : 'max_depth prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpar = this.get_node(par.parent);\n\t\t\t\t\t\t\ttmp = this.get_rules(par);\n\t\t\t\t\t\t\td++;\n\t\t\t\t\t\t} while(par);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\t\t/**\n\t\t * used to retrieve the type settings object for a node\n\t\t * @name get_rules(obj)\n\t\t * @param {mixed} obj the node to find the rules for\n\t\t * @return {Object}\n\t\t * @plugin types\n\t\t */\n\t\tthis.get_rules = function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj) { return false; }\n\t\t\tvar tmp = this.get_type(obj, true);\n\t\t\tif(tmp.max_depth === undefined) { tmp.max_depth = -1; }\n\t\t\tif(tmp.max_children === undefined) { tmp.max_children = -1; }\n\t\t\tif(tmp.valid_children === undefined) { tmp.valid_children = -1; }\n\t\t\treturn tmp;\n\t\t};\n\t\t/**\n\t\t * used to retrieve the type string or settings object for a node\n\t\t * @name get_type(obj [, rules])\n\t\t * @param {mixed} obj the node to find the rules for\n\t\t * @param {Boolean} rules if set to `true` instead of a string the settings object will be returned\n\t\t * @return {String|Object}\n\t\t * @plugin types\n\t\t */\n\t\tthis.get_type = function (obj, rules) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn (!obj) ? false : ( rules ? $.extend({ 'type' : obj.type }, this.settings.types[obj.type]) : obj.type);\n\t\t};\n\t\t/**\n\t\t * used to change a node's type\n\t\t * @name set_type(obj, type)\n\t\t * @param {mixed} obj the node to change\n\t\t * @param {String} type the new type\n\t\t * @plugin types\n\t\t */\n\t\tthis.set_type = function (obj, type) {\n\t\t\tvar t, t1, t2, old_type, old_icon;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.set_type(obj[t1], type);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tt = this.settings.types;\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!t[type] || !obj) { return false; }\n\t\t\told_type = obj.type;\n\t\t\told_icon = this.get_icon(obj);\n\t\t\tobj.type = type;\n\t\t\tif(old_icon === true || (t[old_type] && t[old_type].icon && old_icon === t[old_type].icon)) {\n\t\t\t\tthis.set_icon(obj, t[type].icon !== undefined ? t[type].icon : true);\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\t};\n\t// include the types plugin by default\n\t// $.jstree.defaults.plugins.push(\"types\");\n\n/**\n * ### Unique plugin\n *\n * Enforces that no nodes with the same name can coexist as siblings.\n */\n\n\t/**\n\t * stores all defaults for the unique plugin\n\t * @name $.jstree.defaults.unique\n\t * @plugin unique\n\t */\n\t$.jstree.defaults.unique = {\n\t\t/**\n\t\t * Indicates if the comparison should be case sensitive. Default is `false`.\n\t\t * @name $.jstree.defaults.unique.case_sensitive\n\t\t * @plugin unique\n\t\t */\n\t\tcase_sensitive : false,\n\t\t/**\n\t\t * A callback executed in the instance's scope when a new node is created and the name is already taken, the two arguments are the conflicting name and the counter. The default will produce results like `New node (2)`.\n\t\t * @name $.jstree.defaults.unique.duplicate\n\t\t * @plugin unique\n\t\t */\n\t\tduplicate : function (name, counter) {\n\t\t\treturn name + ' (' + counter + ')';\n\t\t}\n\t};\n\n\t$.jstree.plugins.unique = function (options, parent) {\n\t\tthis.check = function (chk, obj, par, pos, more) {\n\t\t\tif(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; }\n\t\t\tobj = obj && obj.id ? obj : this.get_node(obj);\n\t\t\tpar = par && par.id ? par : this.get_node(par);\n\t\t\tif(!par || !par.children) { return true; }\n\t\t\tvar n = chk === \"rename_node\" ? pos : obj.text,\n\t\t\t\tc = [],\n\t\t\t\ts = this.settings.unique.case_sensitive,\n\t\t\t\tm = this._model.data, i, j;\n\t\t\tfor(i = 0, j = par.children.length; i < j; i++) {\n\t\t\t\tc.push(s ? m[par.children[i]].text : m[par.children[i]].text.toLowerCase());\n\t\t\t}\n\t\t\tif(!s) { n = n.toLowerCase(); }\n\t\t\tswitch(chk) {\n\t\t\t\tcase \"delete_node\":\n\t\t\t\t\treturn true;\n\t\t\t\tcase \"rename_node\":\n\t\t\t\t\ti = ($.inArray(n, c) === -1 || (obj.text && obj.text[ s ? 'toString' : 'toLowerCase']() === n));\n\t\t\t\t\tif(!i) {\n\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_01', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t}\n\t\t\t\t\treturn i;\n\t\t\t\tcase \"create_node\":\n\t\t\t\t\ti = ($.inArray(n, c) === -1);\n\t\t\t\t\tif(!i) {\n\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_04', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t}\n\t\t\t\t\treturn i;\n\t\t\t\tcase \"copy_node\":\n\t\t\t\t\ti = ($.inArray(n, c) === -1);\n\t\t\t\t\tif(!i) {\n\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_02', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t}\n\t\t\t\t\treturn i;\n\t\t\t\tcase \"move_node\":\n\t\t\t\t\ti = (obj.parent === par.id || $.inArray(n, c) === -1);\n\t\t\t\t\tif(!i) {\n\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_03', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t}\n\t\t\t\t\treturn i;\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\t\tthis.create_node = function (par, node, pos, callback, is_loaded) {\n\t\t\tif(!node || node.text === undefined) {\n\t\t\t\tif(par === null) {\n\t\t\t\t\tpar = \"#\";\n\t\t\t\t}\n\t\t\t\tpar = this.get_node(par);\n\t\t\t\tif(!par) {\n\t\t\t\t\treturn parent.create_node.call(this, par, node, pos, callback, is_loaded);\n\t\t\t\t}\n\t\t\t\tpos = pos === undefined ? \"last\" : pos;\n\t\t\t\tif(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) {\n\t\t\t\t\treturn parent.create_node.call(this, par, node, pos, callback, is_loaded);\n\t\t\t\t}\n\t\t\t\tif(!node) { node = {}; }\n\t\t\t\tvar tmp, n, dpc, i, j, m = this._model.data, s = this.settings.unique.case_sensitive, cb = this.settings.unique.duplicate;\n\t\t\t\tn = tmp = this.get_string('New node');\n\t\t\t\tdpc = [];\n\t\t\t\tfor(i = 0, j = par.children.length; i < j; i++) {\n\t\t\t\t\tdpc.push(s ? m[par.children[i]].text : m[par.children[i]].text.toLowerCase());\n\t\t\t\t}\n\t\t\t\ti = 1;\n\t\t\t\twhile($.inArray(s ? n : n.toLowerCase(), dpc) !== -1) {\n\t\t\t\t\tn = cb.call(this, tmp, (++i)).toString();\n\t\t\t\t}\n\t\t\t\tnode.text = n;\n\t\t\t}\n\t\t\treturn parent.create_node.call(this, par, node, pos, callback, is_loaded);\n\t\t};\n\t};\n\n\t// include the unique plugin by default\n\t// $.jstree.defaults.plugins.push(\"unique\");\n\n\n/**\n * ### Wholerow plugin\n *\n * Makes each node appear block level. Making selection easier. May cause slow down for large trees in old browsers.\n */\n\n\tvar div = document.createElement('DIV');\n\tdiv.setAttribute('unselectable','on');\n\tdiv.className = 'jstree-wholerow';\n\tdiv.innerHTML = ' ';\n\t$.jstree.plugins.wholerow = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\n\t\t\tthis.element\n\t\t\t\t.on('ready.jstree set_state.jstree', $.proxy(function () {\n\t\t\t\t\t\tthis.hide_dots();\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"init.jstree loading.jstree ready.jstree\", $.proxy(function () {\n\t\t\t\t\t\t//div.style.height = this._data.core.li_height + 'px';\n\t\t\t\t\t\tthis.get_container_ul().addClass('jstree-wholerow-ul');\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"deselect_all.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked');\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"changed.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked');\n\t\t\t\t\t\tvar tmp = false, i, j;\n\t\t\t\t\t\tfor(i = 0, j = data.selected.length; i < j; i++) {\n\t\t\t\t\t\t\ttmp = this.get_node(data.selected[i], true);\n\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\ttmp.children('.jstree-wholerow').addClass('jstree-wholerow-clicked');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"open_node.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.get_node(data.node, true).find('.jstree-clicked').parent().children('.jstree-wholerow').addClass('jstree-wholerow-clicked');\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"hover_node.jstree dehover_node.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.get_node(data.node, true).children('.jstree-wholerow')[e.type === \"hover_node\"?\"addClass\":\"removeClass\"]('jstree-wholerow-hovered');\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"contextmenu.jstree\", \".jstree-wholerow\", $.proxy(function (e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tvar tmp = $.Event('contextmenu', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey, pageX : e.pageX, pageY : e.pageY });\n\t\t\t\t\t\t$(e.currentTarget).closest(\".jstree-node\").children(\".jstree-anchor:eq(0)\").trigger(tmp);\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"click.jstree\", \".jstree-wholerow\", function (e) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\tvar tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey });\n\t\t\t\t\t\t$(e.currentTarget).closest(\".jstree-node\").children(\".jstree-anchor:eq(0)\").trigger(tmp).focus();\n\t\t\t\t\t})\n\t\t\t\t.on(\"click.jstree\", \".jstree-leaf > .jstree-ocl\", $.proxy(function (e) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\tvar tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey });\n\t\t\t\t\t\t$(e.currentTarget).closest(\".jstree-node\").children(\".jstree-anchor:eq(0)\").trigger(tmp).focus();\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"mouseover.jstree\", \".jstree-wholerow, .jstree-icon\", $.proxy(function (e) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\tthis.hover_node(e.currentTarget);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"mouseleave.jstree\", \".jstree-node\", $.proxy(function (e) {\n\t\t\t\t\t\tthis.dehover_node(e.currentTarget);\n\t\t\t\t\t}, this));\n\t\t};\n\t\tthis.teardown = function () {\n\t\t\tif(this.settings.wholerow) {\n\t\t\t\tthis.element.find(\".jstree-wholerow\").remove();\n\t\t\t}\n\t\t\tparent.teardown.call(this);\n\t\t};\n\t\tthis.redraw_node = function(obj, deep, callback) {\n\t\t\tobj = parent.redraw_node.call(this, obj, deep, callback);\n\t\t\tif(obj) {\n\t\t\t\tvar tmp = div.cloneNode(true);\n\t\t\t\t//tmp.style.height = this._data.core.li_height + 'px';\n\t\t\t\tif($.inArray(obj.id, this._data.core.selected) !== -1) { tmp.className += ' jstree-wholerow-clicked'; }\n\t\t\t\tobj.insertBefore(tmp, obj.childNodes[0]);\n\t\t\t}\n\t\t\treturn obj;\n\t\t};\n\t};\n\t// include the wholerow plugin by default\n\t// $.jstree.defaults.plugins.push(\"wholerow\");\n\n}));\n"]} \ No newline at end of file diff --git a/static/maps/libs/jquery/select2.js.map b/static/maps/libs/jquery/select2.js.map index b2cebe1e557..9c5eca04d22 100644 --- a/static/maps/libs/jquery/select2.js.map +++ b/static/maps/libs/jquery/select2.js.map @@ -1 +1 @@ -{"version":3,"file":"select2.js","sources":["../../../src/libs/jquery/select2.js"],"names":["$","fn","each2","extend","c","j","i","l","this","length","context","call","jQuery","undefined","reinsertElement","element","placeholder","document","createTextNode","before","remove","stripDiacritics","str","match","a","DIACRITICS","replace","indexOf","value","array","equal","measureScrollbar","$template","MEASURE_SCROLLBAR_TEMPLATE","appendTo","dim","width","clientWidth","height","clientHeight","b","constructor","String","splitVal","string","separator","val","split","trim","getSideBorderPadding","outerWidth","installKeyUpChangeEvent","key","on","data","removeData","trigger","installFilteredMouseMove","e","lastpos","lastMousePosition","x","pageX","y","pageY","target","debounce","quietMillis","ctx","timeout","args","arguments","window","clearTimeout","setTimeout","apply","installDebouncedScroll","threshold","notify","get","focus","$el","activeElement","range","el","pos","isVisible","offsetWidth","offsetHeight","setSelectionRange","createTextRange","collapse","select","getCursorInfo","offset","selectionStart","selectionEnd","sel","selection","createRange","text","moveStart","killEvent","event","preventDefault","stopPropagation","killEventImmediately","stopImmediatePropagation","measureTextWidth","sizer","style","currentStyle","getComputedStyle","createElement","css","position","left","top","display","fontSize","fontFamily","fontStyle","fontWeight","letterSpacing","textTransform","whiteSpace","attr","append","syncCssClasses","dest","src","adapter","classes","adapted","replacements","push","join","markMatch","term","markup","escapeMarkup","toUpperCase","tl","substring","defaultEscapeMarkup","replace_map","\\","&","<",">","\"","'","/","ajax","options","handler","ajaxUrl","url","self","query","transport","select2","ajaxDefaults","deprecated","type","cache","jsonpCallback","dataType","params","page","abort","isFunction","success","results","callback","error","jqXHR","textStatus","errorThrown","hasError","local","dataText","tmp","item","isArray","dataItem","process","t","filtered","datum","collection","group","children","hasOwnProperty","childDatum","matcher","tags","isFunc","result","each","isObject","id","checkFormatter","formatter","formatterName","Error","evaluate","Array","prototype","slice","countResults","count","defaultTokenizer","input","selectCallback","opts","token","index","original","dupe","createSearchChoice","tokenSeparators","cleanupJQueryElements","clazz","SuperClass","methods","parent","Select2","KEY","AbstractSelect2","SingleSelect2","MultiSelect2","nextUid","$document","scrollBarDimensions","TAB","ENTER","ESC","SPACE","LEFT","UP","RIGHT","DOWN","SHIFT","CTRL","ALT","PAGE_UP","PAGE_DOWN","HOME","END","BACKSPACE","DELETE","isArrow","k","which","isControl","metaKey","isFunctionKey","Ⓐ","A","À","Á","Â","Ầ","Ấ","Ẫ","Ẩ","Ã","Ā","Ă","Ằ","Ắ","Ẵ","Ẳ","Ȧ","Ǡ","Ä","Ǟ","Ả","Å","Ǻ","Ǎ","Ȁ","Ȃ","Ạ","Ậ","Ặ","Ḁ","Ą","Ⱥ","Ɐ","Ꜳ","Æ","Ǽ","Ǣ","Ꜵ","Ꜷ","Ꜹ","Ꜻ","Ꜽ","Ⓑ","B","Ḃ","Ḅ","Ḇ","Ƀ","Ƃ","Ɓ","Ⓒ","C","Ć","Ĉ","Ċ","Č","Ç","Ḉ","Ƈ","Ȼ","Ꜿ","Ⓓ","D","Ḋ","Ď","Ḍ","Ḑ","Ḓ","Ḏ","Đ","Ƌ","Ɗ","Ɖ","Ꝺ","DZ","DŽ","Dz","Dž","Ⓔ","E","È","É","Ê","Ề","Ế","Ễ","Ể","Ẽ","Ē","Ḕ","Ḗ","Ĕ","Ė","Ë","Ẻ","Ě","Ȅ","Ȇ","Ẹ","Ệ","Ȩ","Ḝ","Ę","Ḙ","Ḛ","Ɛ","Ǝ","Ⓕ","F","Ḟ","Ƒ","Ꝼ","Ⓖ","G","Ǵ","Ĝ","Ḡ","Ğ","Ġ","Ǧ","Ģ","Ǥ","Ɠ","Ꞡ","Ᵹ","Ꝿ","Ⓗ","H","Ĥ","Ḣ","Ḧ","Ȟ","Ḥ","Ḩ","Ḫ","Ħ","Ⱨ","Ⱶ","Ɥ","Ⓘ","I","Ì","Í","Î","Ĩ","Ī","Ĭ","İ","Ï","Ḯ","Ỉ","Ǐ","Ȉ","Ȋ","Ị","Į","Ḭ","Ɨ","Ⓙ","J","Ĵ","Ɉ","Ⓚ","K","Ḱ","Ǩ","Ḳ","Ķ","Ḵ","Ƙ","Ⱪ","Ꝁ","Ꝃ","Ꝅ","Ꞣ","Ⓛ","L","Ŀ","Ĺ","Ľ","Ḷ","Ḹ","Ļ","Ḽ","Ḻ","Ł","Ƚ","Ɫ","Ⱡ","Ꝉ","Ꝇ","Ꞁ","LJ","Lj","Ⓜ","M","Ḿ","Ṁ","Ṃ","Ɱ","Ɯ","Ⓝ","N","Ǹ","Ń","Ñ","Ṅ","Ň","Ṇ","Ņ","Ṋ","Ṉ","Ƞ","Ɲ","Ꞑ","Ꞥ","NJ","Nj","Ⓞ","O","Ò","Ó","Ô","Ồ","Ố","Ỗ","Ổ","Õ","Ṍ","Ȭ","Ṏ","Ō","Ṑ","Ṓ","Ŏ","Ȯ","Ȱ","Ö","Ȫ","Ỏ","Ő","Ǒ","Ȍ","Ȏ","Ơ","Ờ","Ớ","Ỡ","Ở","Ợ","Ọ","Ộ","Ǫ","Ǭ","Ø","Ǿ","Ɔ","Ɵ","Ꝋ","Ꝍ","Ƣ","Ꝏ","Ȣ","Ⓟ","P","Ṕ","Ṗ","Ƥ","Ᵽ","Ꝑ","Ꝓ","Ꝕ","Ⓠ","Q","Ꝗ","Ꝙ","Ɋ","Ⓡ","R","Ŕ","Ṙ","Ř","Ȑ","Ȓ","Ṛ","Ṝ","Ŗ","Ṟ","Ɍ","Ɽ","Ꝛ","Ꞧ","Ꞃ","Ⓢ","S","ẞ","Ś","Ṥ","Ŝ","Ṡ","Š","Ṧ","Ṣ","Ṩ","Ș","Ş","Ȿ","Ꞩ","Ꞅ","Ⓣ","T","Ṫ","Ť","Ṭ","Ț","Ţ","Ṱ","Ṯ","Ŧ","Ƭ","Ʈ","Ⱦ","Ꞇ","Ꜩ","Ⓤ","U","Ù","Ú","Û","Ũ","Ṹ","Ū","Ṻ","Ŭ","Ü","Ǜ","Ǘ","Ǖ","Ǚ","Ủ","Ů","Ű","Ǔ","Ȕ","Ȗ","Ư","Ừ","Ứ","Ữ","Ử","Ự","Ụ","Ṳ","Ų","Ṷ","Ṵ","Ʉ","Ⓥ","V","Ṽ","Ṿ","Ʋ","Ꝟ","Ʌ","Ꝡ","Ⓦ","W","Ẁ","Ẃ","Ŵ","Ẇ","Ẅ","Ẉ","Ⱳ","Ⓧ","X","Ẋ","Ẍ","Ⓨ","Y","Ỳ","Ý","Ŷ","Ỹ","Ȳ","Ẏ","Ÿ","Ỷ","Ỵ","Ƴ","Ɏ","Ỿ","Ⓩ","Z","Ź","Ẑ","Ż","Ž","Ẓ","Ẕ","Ƶ","Ȥ","Ɀ","Ⱬ","Ꝣ","ⓐ","a","ẚ","à","á","â","ầ","ấ","ẫ","ẩ","ã","ā","ă","ằ","ắ","ẵ","ẳ","ȧ","ǡ","ä","ǟ","ả","å","ǻ","ǎ","ȁ","ȃ","ạ","ậ","ặ","ḁ","ą","ⱥ","ɐ","ꜳ","æ","ǽ","ǣ","ꜵ","ꜷ","ꜹ","ꜻ","ꜽ","ⓑ","b","ḃ","ḅ","ḇ","ƀ","ƃ","ɓ","ⓒ","c","ć","ĉ","ċ","č","ç","ḉ","ƈ","ȼ","ꜿ","ↄ","ⓓ","d","ḋ","ď","ḍ","ḑ","ḓ","ḏ","đ","ƌ","ɖ","ɗ","ꝺ","dz","dž","ⓔ","e","è","é","ê","ề","ế","ễ","ể","ẽ","ē","ḕ","ḗ","ĕ","ė","ë","ẻ","ě","ȅ","ȇ","ẹ","ệ","ȩ","ḝ","ę","ḙ","ḛ","ɇ","ɛ","ǝ","ⓕ","f","ḟ","ƒ","ꝼ","ⓖ","g","ǵ","ĝ","ḡ","ğ","ġ","ǧ","ģ","ǥ","ɠ","ꞡ","ᵹ","ꝿ","ⓗ","h","ĥ","ḣ","ḧ","ȟ","ḥ","ḩ","ḫ","ẖ","ħ","ⱨ","ⱶ","ɥ","ƕ","ⓘ","i","ì","í","î","ĩ","ī","ĭ","ï","ḯ","ỉ","ǐ","ȉ","ȋ","ị","į","ḭ","ɨ","ı","ⓙ","j","ĵ","ǰ","ɉ","ⓚ","k","ḱ","ǩ","ḳ","ķ","ḵ","ƙ","ⱪ","ꝁ","ꝃ","ꝅ","ꞣ","ⓛ","l","ŀ","ĺ","ľ","ḷ","ḹ","ļ","ḽ","ḻ","ſ","ł","ƚ","ɫ","ⱡ","ꝉ","ꞁ","ꝇ","lj","ⓜ","m","ḿ","ṁ","ṃ","ɱ","ɯ","ⓝ","n","ǹ","ń","ñ","ṅ","ň","ṇ","ņ","ṋ","ṉ","ƞ","ɲ","ʼn","ꞑ","ꞥ","nj","ⓞ","o","ò","ó","ô","ồ","ố","ỗ","ổ","õ","ṍ","ȭ","ṏ","ō","ṑ","ṓ","ŏ","ȯ","ȱ","ö","ȫ","ỏ","ő","ǒ","ȍ","ȏ","ơ","ờ","ớ","ỡ","ở","ợ","ọ","ộ","ǫ","ǭ","ø","ǿ","ɔ","ꝋ","ꝍ","ɵ","ƣ","ȣ","ꝏ","ⓟ","p","ṕ","ṗ","ƥ","ᵽ","ꝑ","ꝓ","ꝕ","ⓠ","q","ɋ","ꝗ","ꝙ","ⓡ","r","ŕ","ṙ","ř","ȑ","ȓ","ṛ","ṝ","ŗ","ṟ","ɍ","ɽ","ꝛ","ꞧ","ꞃ","ⓢ","s","ß","ś","ṥ","ŝ","ṡ","š","ṧ","ṣ","ṩ","ș","ş","ȿ","ꞩ","ꞅ","ẛ","ⓣ","t","ṫ","ẗ","ť","ṭ","ț","ţ","ṱ","ṯ","ŧ","ƭ","ʈ","ⱦ","ꞇ","ꜩ","ⓤ","u","ù","ú","û","ũ","ṹ","ū","ṻ","ŭ","ü","ǜ","ǘ","ǖ","ǚ","ủ","ů","ű","ǔ","ȕ","ȗ","ư","ừ","ứ","ữ","ử","ự","ụ","ṳ","ų","ṷ","ṵ","ʉ","ⓥ","v","ṽ","ṿ","ʋ","ꝟ","ʌ","ꝡ","ⓦ","w","ẁ","ẃ","ŵ","ẇ","ẅ","ẘ","ẉ","ⱳ","ⓧ","x","ẋ","ẍ","ⓨ","y","ỳ","ý","ŷ","ỹ","ȳ","ẏ","ÿ","ỷ","ẙ","ỵ","ƴ","ɏ","ỿ","ⓩ","z","ź","ẑ","ż","ž","ẓ","ẕ","ƶ","ȥ","ɀ","ⱬ","ꝣ","Ά","Έ","Ή","Ί","Ϊ","Ό","Ύ","Ϋ","Ώ","ά","έ","ή","ί","ϊ","ΐ","ό","ύ","ϋ","ΰ","ω","ς","counter","Object","bind","func","init","search","resultsSelector","prepareOpts","destroy","container","createContainer","liveRegion","role","aria-live","addClass","body","containerId","containerEventName","adaptContainerCssClass","containerCss","containerCssClass","elementTabIndex","dropdown","find","adaptDropdownCssClass","dropdownCssClass","queryCount","resultsPage","initContainer","highlightUnderEvent","_touchEvent","touchMoved","clearTouchMoved","selectHighlighted","loadMoreIfNeeded","mousewheel","delta","deltaX","deltaY","scrollTop","scrollHeight","updateResults","removeClass","closest","nextSearchTerm","initSelection","monitorSource","maximumInputLength","disabled","prop","enable","readonly","autofocus","searchInputPlaceholder","close","detachEvent","_sync","propertyObserver","disconnect","off","tabindex","removeAttr","show","optionToData","is","locked","idKey","tagName","toLowerCase","populateResults","populate","depth","selectable","compound","node","label","innerContainer","formatted","sortResults","nodes","formatResultCssClass","formatResult","html","formatMatches","defaults","placeholderOption","more","elm","getPlaceholder","getPlaceholderOption","not","obj","createSearchChoicePosition","list","unshift","observer","attachEvent","MutationObserver","WebKitMutationObserver","MozMutationObserver","mutations","observe","attributes","subtree","triggerSelect","evt","Event","object","choice","isDefaultPrevented","triggerChange","details","click","blurOnChange","blur","isInterfaceEnabled","enabledInterface","enableInterface","enabled","_enabled","_readonly","toggleClass","disable","opened","hasClass","positionDropdown","bodyOffset","above","changeDirection","resultsListNode","$dropdown","outerHeight","dropHeight","$window","windowWidth","windowHeight","viewPortRight","scrollLeft","viewportBottom","dropTop","dropLeft","enoughRoomBelow","enoughRoomAbove","dropWidth","enoughRoomOnRight","aboveNow","hide","focusSearch","dropdownAutoWidth","bottom","dropdownCss","shouldOpen","clearDropdownAlignmentPreference","open","opening","mask","cid","scroll","resize","orient","last","detach","selectOnBlur","noFocus","prev","that","parents","add","empty","clearSearch","externalSearch","getMaximumSelectionSize","maximumSelectionSize","ensureHighlightVisible","child","hb","rb","topOffset","highlight","findHighlightableChoices","moveHighlight","choices","filter","removeHighlight","_touchMoved","countSelectableResults","below","loadMorePadding","postprocessResults","formatLoadMore","items","tokenize","initial","postRender","render","queryNumber","lastTerm","showSearchInput","maxSelSize","formatSelectionTooBig","minimumInputLength","formatInputTooShort","showSearch","formatInputTooLong","formatSearching","def","formatAjaxError","formatNoMatches","cancel","highlighted","onSelect","firstOption","first","initContainerWidth","resolveContainerWidth","attrs","matches","class","focusser","len","minimumResultsForSearch","shouldFocusInput","isFocused","elementLabel","idSuffix","originalTitle","keyCode","openOnEnter","altKey","ctrlKey","shiftKey","allowClear","clear","setPlaceholder","removed","isPlaceholderOptionSelected","updateSelection","selected","is_match","noop","noHighlightUpdate","min","old","oldData","added","cssClass","formatSelection","formatSelectionCssClass","ids","grep","ordered","splice","selectChoice","selector","searchContainer","_this","keydowns","next","selectedChoice","unselect","resizeSearch","clearPlaceholder","maxWidth","getMaxSearchWidth","getVal","addSelectedChoice","tokenizer","closeOnSelect","enableChoice","enabledItem","disabledItem","replaceWith","insertBefore","setVal","minimumWidth","containerLeft","searchWidth","sideBorderPadding","Math","floor","unique","buildChangeDetails","current","map","onSortStart","onSortEnd","values","method","multiple","allowedMethods","valueMethods","propertyMethods","methodsMap","multi","single","instance","supportsTouchEvents","navigator","msMaxTouchPoints","locales","n","max","limit","util","abstract"],"mappings":"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AKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAASC,IAAS,IAElzV/1B,GAAYzO,EAAEiB,UAEduN,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"} \ No newline at end of file +{"version":3,"sources":["libs/jquery/select2.js"],"names":["$","fn","each2","extend","c","j","i","l","this","length","context","call","jQuery","undefined","reinsertElement","element","placeholder","document","createTextNode","before","remove","stripDiacritics","str","match","a","DIACRITICS","replace","indexOf","value","array","equal","measureScrollbar","$template","MEASURE_SCROLLBAR_TEMPLATE","appendTo","dim","width","clientWidth","height","clientHeight","b","constructor","String","splitVal","string","separator","val","split","trim","getSideBorderPadding","outerWidth","installKeyUpChangeEvent","key","on","data","removeData","trigger","installFilteredMouseMove","e","lastpos","lastMousePosition","x","pageX","y","pageY","target","debounce","quietMillis","ctx","timeout","args","arguments","window","clearTimeout","setTimeout","apply","installDebouncedScroll","threshold","notify","get","focus","$el","activeElement","range","el","pos","offsetWidth","offsetHeight","setSelectionRange","createTextRange","collapse","select","getCursorInfo","offset","selectionStart","selectionEnd","sel","selection","createRange","text","moveStart","killEvent","event","preventDefault","stopPropagation","killEventImmediately","stopImmediatePropagation","measureTextWidth","sizer","style","currentStyle","getComputedStyle","createElement","css","position","left","top","display","fontSize","fontFamily","fontStyle","fontWeight","letterSpacing","textTransform","whiteSpace","attr","append","syncCssClasses","dest","src","adapter","classes","adapted","replacements","push","join","markMatch","term","markup","escapeMarkup","toUpperCase","tl","substring","defaultEscapeMarkup","replace_map","\\","&","<",">","\"","'","/","ajax","options","handler","ajaxUrl","url","self","query","transport","select2","ajaxDefaults","deprecated","type","cache","jsonpCallback","dataType","params","page","abort","isFunction","success","results","callback","error","jqXHR","textStatus","errorThrown","hasError","local","dataText","tmp","item","isArray","dataItem","process","t","filtered","datum","collection","group","children","hasOwnProperty","childDatum","matcher","tags","isFunc","result","each","isObject","id","checkFormatter","formatter","formatterName","Error","evaluate","Array","prototype","slice","countResults","count","defaultTokenizer","input","selectCallback","opts","token","index","original","dupe","createSearchChoice","tokenSeparators","cleanupJQueryElements","clazz","SuperClass","methods","parent","Select2","KEY","AbstractSelect2","SingleSelect2","MultiSelect2","nextUid","$document","scrollBarDimensions","TAB","ENTER","ESC","SPACE","LEFT","UP","RIGHT","DOWN","SHIFT","CTRL","ALT","PAGE_UP","PAGE_DOWN","HOME","END","BACKSPACE","DELETE","isArrow","k","which","isControl","metaKey","isFunctionKey","Ⓐ","A","À","Á","Â","Ầ","Ấ","Ẫ","Ẩ","Ã","Ā","Ă","Ằ","Ắ","Ẵ","Ẳ","Ȧ","Ǡ","Ä","Ǟ","Ả","Å","Ǻ","Ǎ","Ȁ","Ȃ","Ạ","Ậ","Ặ","Ḁ","Ą","Ⱥ","Ɐ","Ꜳ","Æ","Ǽ","Ǣ","Ꜵ","Ꜷ","Ꜹ","Ꜻ","Ꜽ","Ⓑ","B","Ḃ","Ḅ","Ḇ","Ƀ","Ƃ","Ɓ","Ⓒ","C","Ć","Ĉ","Ċ","Č","Ç","Ḉ","Ƈ","Ȼ","Ꜿ","Ⓓ","D","Ḋ","Ď","Ḍ","Ḑ","Ḓ","Ḏ","Đ","Ƌ","Ɗ","Ɖ","Ꝺ","DZ","DŽ","Dz","Dž","Ⓔ","E","È","É","Ê","Ề","Ế","Ễ","Ể","Ẽ","Ē","Ḕ","Ḗ","Ĕ","Ė","Ë","Ẻ","Ě","Ȅ","Ȇ","Ẹ","Ệ","Ȩ","Ḝ","Ę","Ḙ","Ḛ","Ɛ","Ǝ","Ⓕ","F","Ḟ","Ƒ","Ꝼ","Ⓖ","G","Ǵ","Ĝ","Ḡ","Ğ","Ġ","Ǧ","Ģ","Ǥ","Ɠ","Ꞡ","Ᵹ","Ꝿ","Ⓗ","H","Ĥ","Ḣ","Ḧ","Ȟ","Ḥ","Ḩ","Ḫ","Ħ","Ⱨ","Ⱶ","Ɥ","Ⓘ","I","Ì","Í","Î","Ĩ","Ī","Ĭ","İ","Ï","Ḯ","Ỉ","Ǐ","Ȉ","Ȋ","Ị","Į","Ḭ","Ɨ","Ⓙ","J","Ĵ","Ɉ","Ⓚ","K","Ḱ","Ǩ","Ḳ","Ķ","Ḵ","Ƙ","Ⱪ","Ꝁ","Ꝃ","Ꝅ","Ꞣ","Ⓛ","L","Ŀ","Ĺ","Ľ","Ḷ","Ḹ","Ļ","Ḽ","Ḻ","Ł","Ƚ","Ɫ","Ⱡ","Ꝉ","Ꝇ","Ꞁ","LJ","Lj","Ⓜ","M","Ḿ","Ṁ","Ṃ","Ɱ","Ɯ","Ⓝ","N","Ǹ","Ń","Ñ","Ṅ","Ň","Ṇ","Ņ","Ṋ","Ṉ","Ƞ","Ɲ","Ꞑ","Ꞥ","NJ","Nj","Ⓞ","O","Ò","Ó","Ô","Ồ","Ố","Ỗ","Ổ","Õ","Ṍ","Ȭ","Ṏ","Ō","Ṑ","Ṓ","Ŏ","Ȯ","Ȱ","Ö","Ȫ","Ỏ","Ő","Ǒ","Ȍ","Ȏ","Ơ","Ờ","Ớ","Ỡ","Ở","Ợ","Ọ","Ộ","Ǫ","Ǭ","Ø","Ǿ","Ɔ","Ɵ","Ꝋ","Ꝍ","Ƣ","Ꝏ","Ȣ","Ⓟ","P","Ṕ","Ṗ","Ƥ","Ᵽ","Ꝑ","Ꝓ","Ꝕ","Ⓠ","Q","Ꝗ","Ꝙ","Ɋ","Ⓡ","R","Ŕ","Ṙ","Ř","Ȑ","Ȓ","Ṛ","Ṝ","Ŗ","Ṟ","Ɍ","Ɽ","Ꝛ","Ꞧ","Ꞃ","Ⓢ","S","ẞ","Ś","Ṥ","Ŝ","Ṡ","Š","Ṧ","Ṣ","Ṩ","Ș","Ş","Ȿ","Ꞩ","Ꞅ","Ⓣ","T","Ṫ","Ť","Ṭ","Ț","Ţ","Ṱ","Ṯ","Ŧ","Ƭ","Ʈ","Ⱦ","Ꞇ","Ꜩ","Ⓤ","U","Ù","Ú","Û","Ũ","Ṹ","Ū","Ṻ","Ŭ","Ü","Ǜ","Ǘ","Ǖ","Ǚ","Ủ","Ů","Ű","Ǔ","Ȕ","Ȗ","Ư","Ừ","Ứ","Ữ","Ử","Ự","Ụ","Ṳ","Ų","Ṷ","Ṵ","Ʉ","Ⓥ","V","Ṽ","Ṿ","Ʋ","Ꝟ","Ʌ","Ꝡ","Ⓦ","W","Ẁ","Ẃ","Ŵ","Ẇ","Ẅ","Ẉ","Ⱳ","Ⓧ","X","Ẋ","Ẍ","Ⓨ","Y","Ỳ","Ý","Ŷ","Ỹ","Ȳ","Ẏ","Ÿ","Ỷ","Ỵ","Ƴ","Ɏ","Ỿ","Ⓩ","Z","Ź","Ẑ","Ż","Ž","Ẓ","Ẕ","Ƶ","Ȥ","Ɀ","Ⱬ","Ꝣ","ⓐ","a","ẚ","à","á","â","ầ","ấ","ẫ","ẩ","ã","ā","ă","ằ","ắ","ẵ","ẳ","ȧ","ǡ","ä","ǟ","ả","å","ǻ","ǎ","ȁ","ȃ","ạ","ậ","ặ","ḁ","ą","ⱥ","ɐ","ꜳ","æ","ǽ","ǣ","ꜵ","ꜷ","ꜹ","ꜻ","ꜽ","ⓑ","b","ḃ","ḅ","ḇ","ƀ","ƃ","ɓ","ⓒ","c","ć","ĉ","ċ","č","ç","ḉ","ƈ","ȼ","ꜿ","ↄ","ⓓ","d","ḋ","ď","ḍ","ḑ","ḓ","ḏ","đ","ƌ","ɖ","ɗ","ꝺ","dz","dž","ⓔ","e","è","é","ê","ề","ế","ễ","ể","ẽ","ē","ḕ","ḗ","ĕ","ė","ë","ẻ","ě","ȅ","ȇ","ẹ","ệ","ȩ","ḝ","ę","ḙ","ḛ","ɇ","ɛ","ǝ","ⓕ","f","ḟ","ƒ","ꝼ","ⓖ","g","ǵ","ĝ","ḡ","ğ","ġ","ǧ","ģ","ǥ","ɠ","ꞡ","ᵹ","ꝿ","ⓗ","h","ĥ","ḣ","ḧ","ȟ","ḥ","ḩ","ḫ","ẖ","ħ","ⱨ","ⱶ","ɥ","ƕ","ⓘ","i","ì","í","î","ĩ","ī","ĭ","ï","ḯ","ỉ","ǐ","ȉ","ȋ","ị","į","ḭ","ɨ","ı","ⓙ","j","ĵ","ǰ","ɉ","ⓚ","k","ḱ","ǩ","ḳ","ķ","ḵ","ƙ","ⱪ","ꝁ","ꝃ","ꝅ","ꞣ","ⓛ","l","ŀ","ĺ","ľ","ḷ","ḹ","ļ","ḽ","ḻ","ſ","ł","ƚ","ɫ","ⱡ","ꝉ","ꞁ","ꝇ","lj","ⓜ","m","ḿ","ṁ","ṃ","ɱ","ɯ","ⓝ","n","ǹ","ń","ñ","ṅ","ň","ṇ","ņ","ṋ","ṉ","ƞ","ɲ","ʼn","ꞑ","ꞥ","nj","ⓞ","o","ò","ó","ô","ồ","ố","ỗ","ổ","õ","ṍ","ȭ","ṏ","ō","ṑ","ṓ","ŏ","ȯ","ȱ","ö","ȫ","ỏ","ő","ǒ","ȍ","ȏ","ơ","ờ","ớ","ỡ","ở","ợ","ọ","ộ","ǫ","ǭ","ø","ǿ","ɔ","ꝋ","ꝍ","ɵ","ƣ","ȣ","ꝏ","ⓟ","p","ṕ","ṗ","ƥ","ᵽ","ꝑ","ꝓ","ꝕ","ⓠ","q","ɋ","ꝗ","ꝙ","ⓡ","r","ŕ","ṙ","ř","ȑ","ȓ","ṛ","ṝ","ŗ","ṟ","ɍ","ɽ","ꝛ","ꞧ","ꞃ","ⓢ","s","ß","ś","ṥ","ŝ","ṡ","š","ṧ","ṣ","ṩ","ș","ş","ȿ","ꞩ","ꞅ","ẛ","ⓣ","t","ṫ","ẗ","ť","ṭ","ț","ţ","ṱ","ṯ","ŧ","ƭ","ʈ","ⱦ","ꞇ","ꜩ","ⓤ","u","ù","ú","û","ũ","ṹ","ū","ṻ","ŭ","ü","ǜ","ǘ","ǖ","ǚ","ủ","ů","ű","ǔ","ȕ","ȗ","ư","ừ","ứ","ữ","ử","ự","ụ","ṳ","ų","ṷ","ṵ","ʉ","ⓥ","v","ṽ","ṿ","ʋ","ꝟ","ʌ","ꝡ","ⓦ","w","ẁ","ẃ","ŵ","ẇ","ẅ","ẘ","ẉ","ⱳ","ⓧ","x","ẋ","ẍ","ⓨ","y","ỳ","ý","ŷ","ỹ","ȳ","ẏ","ÿ","ỷ","ẙ","ỵ","ƴ","ɏ","ỿ","ⓩ","z","ź","ẑ","ż","ž","ẓ","ẕ","ƶ","ȥ","ɀ","ⱬ","ꝣ","Ά","Έ","Ή","Ί","Ϊ","Ό","Ύ","Ϋ","Ώ","ά","έ","ή","ί","ϊ","ΐ","ό","ύ","ϋ","ΰ","ω","ς","counter","Object","bind","func","init","search","prepareOpts","destroy","container","createContainer","liveRegion","role","aria-live","addClass","body","containerId","containerEventName","adaptContainerCssClass","containerCss","containerCssClass","elementTabIndex","dropdown","find","adaptDropdownCssClass","dropdownCssClass","queryCount","resultsPage","initContainer","highlightUnderEvent","_touchEvent","touchMoved","clearTouchMoved","selectHighlighted","loadMoreIfNeeded","mousewheel","delta","deltaX","deltaY","scrollTop","scrollHeight","updateResults","removeClass","closest","nextSearchTerm","initSelection","monitorSource","maximumInputLength","disabled","prop","enable","readonly","autofocus","searchInputPlaceholder","close","detachEvent","_sync","propertyObserver","disconnect","off","tabindex","removeAttr","show","optionToData","is","locked","idKey","tagName","toLowerCase","populateResults","populate","depth","selectable","compound","node","label","innerContainer","formatted","sortResults","nodes","formatResultCssClass","formatResult","html","formatMatches","defaults","placeholderOption","more","elm","getPlaceholder","getPlaceholderOption","not","obj","createSearchChoicePosition","list","unshift","observer","attachEvent","MutationObserver","WebKitMutationObserver","MozMutationObserver","mutations","observe","attributes","subtree","triggerSelect","evt","Event","object","choice","isDefaultPrevented","triggerChange","details","click","blurOnChange","blur","isInterfaceEnabled","enabledInterface","enableInterface","enabled","_enabled","_readonly","toggleClass","disable","opened","hasClass","positionDropdown","bodyOffset","above","changeDirection","resultsListNode","$dropdown","outerHeight","dropHeight","$window","windowWidth","windowHeight","viewPortRight","scrollLeft","viewportBottom","dropTop","dropLeft","enoughRoomBelow","enoughRoomAbove","dropWidth","enoughRoomOnRight","aboveNow","hide","focusSearch","dropdownAutoWidth","bottom","dropdownCss","shouldOpen","clearDropdownAlignmentPreference","open","opening","mask","cid","scroll","resize","orient","last","detach","selectOnBlur","noFocus","prev","that","parents","add","empty","clearSearch","externalSearch","getMaximumSelectionSize","maximumSelectionSize","ensureHighlightVisible","child","hb","rb","topOffset","highlight","findHighlightableChoices","moveHighlight","choices","filter","removeHighlight","_touchMoved","countSelectableResults","loadMorePadding","postprocessResults","formatLoadMore","items","tokenize","initial","postRender","render","queryNumber","lastTerm","showSearchInput","maxSelSize","formatSelectionTooBig","minimumInputLength","formatInputTooShort","showSearch","formatInputTooLong","formatSearching","def","formatAjaxError","formatNoMatches","cancel","highlighted","onSelect","firstOption","first","initContainerWidth","resolveContainerWidth","attrs","matches","class","focusser","len","minimumResultsForSearch","shouldFocusInput","isFocused","elementLabel","idSuffix","originalTitle","keyCode","openOnEnter","altKey","ctrlKey","shiftKey","allowClear","clear","setPlaceholder","removed","isPlaceholderOptionSelected","updateSelection","selected","is_match","noop","noHighlightUpdate","min","old","oldData","added","cssClass","formatSelection","formatSelectionCssClass","ids","grep","ordered","splice","selectChoice","selector","searchContainer","_this","keydowns","next","selectedChoice","unselect","resizeSearch","clearPlaceholder","maxWidth","getMaxSearchWidth","getVal","addSelectedChoice","tokenizer","closeOnSelect","enableChoice","enabledItem","disabledItem","replaceWith","insertBefore","setVal","minimumWidth","containerLeft","searchWidth","sideBorderPadding","Math","floor","unique","buildChangeDetails","current","map","onSortStart","onSortEnd","values","method","multiple","allowedMethods","valueMethods","propertyMethods","methodsMap","multi","single","selectedObject","currentSearchTerm","instance","navigator","msMaxTouchPoints","locales","n","max","limit","pageNumber","util","abstract"],"mappings":"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,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,KAAKC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,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","file":"../../../scripts/libs/jquery/select2.js","sourcesContent":["/*\nCopyright 2012 Igor Vaynberg\n\nVersion: 3.5.1 Timestamp: Tue Jul 22 18:58:56 EDT 2014\n\nThis software is licensed under the Apache License, Version 2.0 (the \"Apache License\") or the GNU\nGeneral Public License version 2 (the \"GPL License\"). You may choose either license to govern your\nuse of this software only upon the condition that you accept all of the terms of either the Apache\nLicense or the GPL License.\n\nYou may obtain a copy of the Apache License and the GPL License at:\n\n http://www.apache.org/licenses/LICENSE-2.0\n http://www.gnu.org/licenses/gpl-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the\nApache License or the GPL License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\nCONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for\nthe specific language governing permissions and limitations under the Apache License and the GPL License.\n*/\n(function ($) {\n if(typeof $.fn.each2 == \"undefined\") {\n $.extend($.fn, {\n /*\n * 4-10 times faster .each replacement\n * use it carefully, as it overrides jQuery context of element on each iteration\n */\n each2 : function (c) {\n var j = $([0]), i = -1, l = this.length;\n while (\n ++i < l\n && (j.context = j[0] = this[i])\n && c.call(j[0], i, j) !== false //\"this\"=DOM, i=index, j=jQuery object\n );\n return this;\n }\n });\n }\n})(jQuery);\n\n(function ($, undefined) {\n \"use strict\";\n /*global document, window, jQuery, console */\n\n if (window.Select2 !== undefined) {\n return;\n }\n\n var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer,\n lastMousePosition={x:0,y:0}, $document, scrollBarDimensions,\n\n KEY = {\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n SPACE: 32,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n HOME: 36,\n END: 35,\n BACKSPACE: 8,\n DELETE: 46,\n isArrow: function (k) {\n k = k.which ? k.which : k;\n switch (k) {\n case KEY.LEFT:\n case KEY.RIGHT:\n case KEY.UP:\n case KEY.DOWN:\n return true;\n }\n return false;\n },\n isControl: function (e) {\n var k = e.which;\n switch (k) {\n case KEY.SHIFT:\n case KEY.CTRL:\n case KEY.ALT:\n return true;\n }\n\n if (e.metaKey) return true;\n\n return false;\n },\n isFunctionKey: function (k) {\n k = k.which ? k.which : k;\n return k >= 112 && k <= 123;\n }\n },\n MEASURE_SCROLLBAR_TEMPLATE = \"
      \",\n\n DIACRITICS = {\"\\u24B6\":\"A\",\"\\uFF21\":\"A\",\"\\u00C0\":\"A\",\"\\u00C1\":\"A\",\"\\u00C2\":\"A\",\"\\u1EA6\":\"A\",\"\\u1EA4\":\"A\",\"\\u1EAA\":\"A\",\"\\u1EA8\":\"A\",\"\\u00C3\":\"A\",\"\\u0100\":\"A\",\"\\u0102\":\"A\",\"\\u1EB0\":\"A\",\"\\u1EAE\":\"A\",\"\\u1EB4\":\"A\",\"\\u1EB2\":\"A\",\"\\u0226\":\"A\",\"\\u01E0\":\"A\",\"\\u00C4\":\"A\",\"\\u01DE\":\"A\",\"\\u1EA2\":\"A\",\"\\u00C5\":\"A\",\"\\u01FA\":\"A\",\"\\u01CD\":\"A\",\"\\u0200\":\"A\",\"\\u0202\":\"A\",\"\\u1EA0\":\"A\",\"\\u1EAC\":\"A\",\"\\u1EB6\":\"A\",\"\\u1E00\":\"A\",\"\\u0104\":\"A\",\"\\u023A\":\"A\",\"\\u2C6F\":\"A\",\"\\uA732\":\"AA\",\"\\u00C6\":\"AE\",\"\\u01FC\":\"AE\",\"\\u01E2\":\"AE\",\"\\uA734\":\"AO\",\"\\uA736\":\"AU\",\"\\uA738\":\"AV\",\"\\uA73A\":\"AV\",\"\\uA73C\":\"AY\",\"\\u24B7\":\"B\",\"\\uFF22\":\"B\",\"\\u1E02\":\"B\",\"\\u1E04\":\"B\",\"\\u1E06\":\"B\",\"\\u0243\":\"B\",\"\\u0182\":\"B\",\"\\u0181\":\"B\",\"\\u24B8\":\"C\",\"\\uFF23\":\"C\",\"\\u0106\":\"C\",\"\\u0108\":\"C\",\"\\u010A\":\"C\",\"\\u010C\":\"C\",\"\\u00C7\":\"C\",\"\\u1E08\":\"C\",\"\\u0187\":\"C\",\"\\u023B\":\"C\",\"\\uA73E\":\"C\",\"\\u24B9\":\"D\",\"\\uFF24\":\"D\",\"\\u1E0A\":\"D\",\"\\u010E\":\"D\",\"\\u1E0C\":\"D\",\"\\u1E10\":\"D\",\"\\u1E12\":\"D\",\"\\u1E0E\":\"D\",\"\\u0110\":\"D\",\"\\u018B\":\"D\",\"\\u018A\":\"D\",\"\\u0189\":\"D\",\"\\uA779\":\"D\",\"\\u01F1\":\"DZ\",\"\\u01C4\":\"DZ\",\"\\u01F2\":\"Dz\",\"\\u01C5\":\"Dz\",\"\\u24BA\":\"E\",\"\\uFF25\":\"E\",\"\\u00C8\":\"E\",\"\\u00C9\":\"E\",\"\\u00CA\":\"E\",\"\\u1EC0\":\"E\",\"\\u1EBE\":\"E\",\"\\u1EC4\":\"E\",\"\\u1EC2\":\"E\",\"\\u1EBC\":\"E\",\"\\u0112\":\"E\",\"\\u1E14\":\"E\",\"\\u1E16\":\"E\",\"\\u0114\":\"E\",\"\\u0116\":\"E\",\"\\u00CB\":\"E\",\"\\u1EBA\":\"E\",\"\\u011A\":\"E\",\"\\u0204\":\"E\",\"\\u0206\":\"E\",\"\\u1EB8\":\"E\",\"\\u1EC6\":\"E\",\"\\u0228\":\"E\",\"\\u1E1C\":\"E\",\"\\u0118\":\"E\",\"\\u1E18\":\"E\",\"\\u1E1A\":\"E\",\"\\u0190\":\"E\",\"\\u018E\":\"E\",\"\\u24BB\":\"F\",\"\\uFF26\":\"F\",\"\\u1E1E\":\"F\",\"\\u0191\":\"F\",\"\\uA77B\":\"F\",\"\\u24BC\":\"G\",\"\\uFF27\":\"G\",\"\\u01F4\":\"G\",\"\\u011C\":\"G\",\"\\u1E20\":\"G\",\"\\u011E\":\"G\",\"\\u0120\":\"G\",\"\\u01E6\":\"G\",\"\\u0122\":\"G\",\"\\u01E4\":\"G\",\"\\u0193\":\"G\",\"\\uA7A0\":\"G\",\"\\uA77D\":\"G\",\"\\uA77E\":\"G\",\"\\u24BD\":\"H\",\"\\uFF28\":\"H\",\"\\u0124\":\"H\",\"\\u1E22\":\"H\",\"\\u1E26\":\"H\",\"\\u021E\":\"H\",\"\\u1E24\":\"H\",\"\\u1E28\":\"H\",\"\\u1E2A\":\"H\",\"\\u0126\":\"H\",\"\\u2C67\":\"H\",\"\\u2C75\":\"H\",\"\\uA78D\":\"H\",\"\\u24BE\":\"I\",\"\\uFF29\":\"I\",\"\\u00CC\":\"I\",\"\\u00CD\":\"I\",\"\\u00CE\":\"I\",\"\\u0128\":\"I\",\"\\u012A\":\"I\",\"\\u012C\":\"I\",\"\\u0130\":\"I\",\"\\u00CF\":\"I\",\"\\u1E2E\":\"I\",\"\\u1EC8\":\"I\",\"\\u01CF\":\"I\",\"\\u0208\":\"I\",\"\\u020A\":\"I\",\"\\u1ECA\":\"I\",\"\\u012E\":\"I\",\"\\u1E2C\":\"I\",\"\\u0197\":\"I\",\"\\u24BF\":\"J\",\"\\uFF2A\":\"J\",\"\\u0134\":\"J\",\"\\u0248\":\"J\",\"\\u24C0\":\"K\",\"\\uFF2B\":\"K\",\"\\u1E30\":\"K\",\"\\u01E8\":\"K\",\"\\u1E32\":\"K\",\"\\u0136\":\"K\",\"\\u1E34\":\"K\",\"\\u0198\":\"K\",\"\\u2C69\":\"K\",\"\\uA740\":\"K\",\"\\uA742\":\"K\",\"\\uA744\":\"K\",\"\\uA7A2\":\"K\",\"\\u24C1\":\"L\",\"\\uFF2C\":\"L\",\"\\u013F\":\"L\",\"\\u0139\":\"L\",\"\\u013D\":\"L\",\"\\u1E36\":\"L\",\"\\u1E38\":\"L\",\"\\u013B\":\"L\",\"\\u1E3C\":\"L\",\"\\u1E3A\":\"L\",\"\\u0141\":\"L\",\"\\u023D\":\"L\",\"\\u2C62\":\"L\",\"\\u2C60\":\"L\",\"\\uA748\":\"L\",\"\\uA746\":\"L\",\"\\uA780\":\"L\",\"\\u01C7\":\"LJ\",\"\\u01C8\":\"Lj\",\"\\u24C2\":\"M\",\"\\uFF2D\":\"M\",\"\\u1E3E\":\"M\",\"\\u1E40\":\"M\",\"\\u1E42\":\"M\",\"\\u2C6E\":\"M\",\"\\u019C\":\"M\",\"\\u24C3\":\"N\",\"\\uFF2E\":\"N\",\"\\u01F8\":\"N\",\"\\u0143\":\"N\",\"\\u00D1\":\"N\",\"\\u1E44\":\"N\",\"\\u0147\":\"N\",\"\\u1E46\":\"N\",\"\\u0145\":\"N\",\"\\u1E4A\":\"N\",\"\\u1E48\":\"N\",\"\\u0220\":\"N\",\"\\u019D\":\"N\",\"\\uA790\":\"N\",\"\\uA7A4\":\"N\",\"\\u01CA\":\"NJ\",\"\\u01CB\":\"Nj\",\"\\u24C4\":\"O\",\"\\uFF2F\":\"O\",\"\\u00D2\":\"O\",\"\\u00D3\":\"O\",\"\\u00D4\":\"O\",\"\\u1ED2\":\"O\",\"\\u1ED0\":\"O\",\"\\u1ED6\":\"O\",\"\\u1ED4\":\"O\",\"\\u00D5\":\"O\",\"\\u1E4C\":\"O\",\"\\u022C\":\"O\",\"\\u1E4E\":\"O\",\"\\u014C\":\"O\",\"\\u1E50\":\"O\",\"\\u1E52\":\"O\",\"\\u014E\":\"O\",\"\\u022E\":\"O\",\"\\u0230\":\"O\",\"\\u00D6\":\"O\",\"\\u022A\":\"O\",\"\\u1ECE\":\"O\",\"\\u0150\":\"O\",\"\\u01D1\":\"O\",\"\\u020C\":\"O\",\"\\u020E\":\"O\",\"\\u01A0\":\"O\",\"\\u1EDC\":\"O\",\"\\u1EDA\":\"O\",\"\\u1EE0\":\"O\",\"\\u1EDE\":\"O\",\"\\u1EE2\":\"O\",\"\\u1ECC\":\"O\",\"\\u1ED8\":\"O\",\"\\u01EA\":\"O\",\"\\u01EC\":\"O\",\"\\u00D8\":\"O\",\"\\u01FE\":\"O\",\"\\u0186\":\"O\",\"\\u019F\":\"O\",\"\\uA74A\":\"O\",\"\\uA74C\":\"O\",\"\\u01A2\":\"OI\",\"\\uA74E\":\"OO\",\"\\u0222\":\"OU\",\"\\u24C5\":\"P\",\"\\uFF30\":\"P\",\"\\u1E54\":\"P\",\"\\u1E56\":\"P\",\"\\u01A4\":\"P\",\"\\u2C63\":\"P\",\"\\uA750\":\"P\",\"\\uA752\":\"P\",\"\\uA754\":\"P\",\"\\u24C6\":\"Q\",\"\\uFF31\":\"Q\",\"\\uA756\":\"Q\",\"\\uA758\":\"Q\",\"\\u024A\":\"Q\",\"\\u24C7\":\"R\",\"\\uFF32\":\"R\",\"\\u0154\":\"R\",\"\\u1E58\":\"R\",\"\\u0158\":\"R\",\"\\u0210\":\"R\",\"\\u0212\":\"R\",\"\\u1E5A\":\"R\",\"\\u1E5C\":\"R\",\"\\u0156\":\"R\",\"\\u1E5E\":\"R\",\"\\u024C\":\"R\",\"\\u2C64\":\"R\",\"\\uA75A\":\"R\",\"\\uA7A6\":\"R\",\"\\uA782\":\"R\",\"\\u24C8\":\"S\",\"\\uFF33\":\"S\",\"\\u1E9E\":\"S\",\"\\u015A\":\"S\",\"\\u1E64\":\"S\",\"\\u015C\":\"S\",\"\\u1E60\":\"S\",\"\\u0160\":\"S\",\"\\u1E66\":\"S\",\"\\u1E62\":\"S\",\"\\u1E68\":\"S\",\"\\u0218\":\"S\",\"\\u015E\":\"S\",\"\\u2C7E\":\"S\",\"\\uA7A8\":\"S\",\"\\uA784\":\"S\",\"\\u24C9\":\"T\",\"\\uFF34\":\"T\",\"\\u1E6A\":\"T\",\"\\u0164\":\"T\",\"\\u1E6C\":\"T\",\"\\u021A\":\"T\",\"\\u0162\":\"T\",\"\\u1E70\":\"T\",\"\\u1E6E\":\"T\",\"\\u0166\":\"T\",\"\\u01AC\":\"T\",\"\\u01AE\":\"T\",\"\\u023E\":\"T\",\"\\uA786\":\"T\",\"\\uA728\":\"TZ\",\"\\u24CA\":\"U\",\"\\uFF35\":\"U\",\"\\u00D9\":\"U\",\"\\u00DA\":\"U\",\"\\u00DB\":\"U\",\"\\u0168\":\"U\",\"\\u1E78\":\"U\",\"\\u016A\":\"U\",\"\\u1E7A\":\"U\",\"\\u016C\":\"U\",\"\\u00DC\":\"U\",\"\\u01DB\":\"U\",\"\\u01D7\":\"U\",\"\\u01D5\":\"U\",\"\\u01D9\":\"U\",\"\\u1EE6\":\"U\",\"\\u016E\":\"U\",\"\\u0170\":\"U\",\"\\u01D3\":\"U\",\"\\u0214\":\"U\",\"\\u0216\":\"U\",\"\\u01AF\":\"U\",\"\\u1EEA\":\"U\",\"\\u1EE8\":\"U\",\"\\u1EEE\":\"U\",\"\\u1EEC\":\"U\",\"\\u1EF0\":\"U\",\"\\u1EE4\":\"U\",\"\\u1E72\":\"U\",\"\\u0172\":\"U\",\"\\u1E76\":\"U\",\"\\u1E74\":\"U\",\"\\u0244\":\"U\",\"\\u24CB\":\"V\",\"\\uFF36\":\"V\",\"\\u1E7C\":\"V\",\"\\u1E7E\":\"V\",\"\\u01B2\":\"V\",\"\\uA75E\":\"V\",\"\\u0245\":\"V\",\"\\uA760\":\"VY\",\"\\u24CC\":\"W\",\"\\uFF37\":\"W\",\"\\u1E80\":\"W\",\"\\u1E82\":\"W\",\"\\u0174\":\"W\",\"\\u1E86\":\"W\",\"\\u1E84\":\"W\",\"\\u1E88\":\"W\",\"\\u2C72\":\"W\",\"\\u24CD\":\"X\",\"\\uFF38\":\"X\",\"\\u1E8A\":\"X\",\"\\u1E8C\":\"X\",\"\\u24CE\":\"Y\",\"\\uFF39\":\"Y\",\"\\u1EF2\":\"Y\",\"\\u00DD\":\"Y\",\"\\u0176\":\"Y\",\"\\u1EF8\":\"Y\",\"\\u0232\":\"Y\",\"\\u1E8E\":\"Y\",\"\\u0178\":\"Y\",\"\\u1EF6\":\"Y\",\"\\u1EF4\":\"Y\",\"\\u01B3\":\"Y\",\"\\u024E\":\"Y\",\"\\u1EFE\":\"Y\",\"\\u24CF\":\"Z\",\"\\uFF3A\":\"Z\",\"\\u0179\":\"Z\",\"\\u1E90\":\"Z\",\"\\u017B\":\"Z\",\"\\u017D\":\"Z\",\"\\u1E92\":\"Z\",\"\\u1E94\":\"Z\",\"\\u01B5\":\"Z\",\"\\u0224\":\"Z\",\"\\u2C7F\":\"Z\",\"\\u2C6B\":\"Z\",\"\\uA762\":\"Z\",\"\\u24D0\":\"a\",\"\\uFF41\":\"a\",\"\\u1E9A\":\"a\",\"\\u00E0\":\"a\",\"\\u00E1\":\"a\",\"\\u00E2\":\"a\",\"\\u1EA7\":\"a\",\"\\u1EA5\":\"a\",\"\\u1EAB\":\"a\",\"\\u1EA9\":\"a\",\"\\u00E3\":\"a\",\"\\u0101\":\"a\",\"\\u0103\":\"a\",\"\\u1EB1\":\"a\",\"\\u1EAF\":\"a\",\"\\u1EB5\":\"a\",\"\\u1EB3\":\"a\",\"\\u0227\":\"a\",\"\\u01E1\":\"a\",\"\\u00E4\":\"a\",\"\\u01DF\":\"a\",\"\\u1EA3\":\"a\",\"\\u00E5\":\"a\",\"\\u01FB\":\"a\",\"\\u01CE\":\"a\",\"\\u0201\":\"a\",\"\\u0203\":\"a\",\"\\u1EA1\":\"a\",\"\\u1EAD\":\"a\",\"\\u1EB7\":\"a\",\"\\u1E01\":\"a\",\"\\u0105\":\"a\",\"\\u2C65\":\"a\",\"\\u0250\":\"a\",\"\\uA733\":\"aa\",\"\\u00E6\":\"ae\",\"\\u01FD\":\"ae\",\"\\u01E3\":\"ae\",\"\\uA735\":\"ao\",\"\\uA737\":\"au\",\"\\uA739\":\"av\",\"\\uA73B\":\"av\",\"\\uA73D\":\"ay\",\"\\u24D1\":\"b\",\"\\uFF42\":\"b\",\"\\u1E03\":\"b\",\"\\u1E05\":\"b\",\"\\u1E07\":\"b\",\"\\u0180\":\"b\",\"\\u0183\":\"b\",\"\\u0253\":\"b\",\"\\u24D2\":\"c\",\"\\uFF43\":\"c\",\"\\u0107\":\"c\",\"\\u0109\":\"c\",\"\\u010B\":\"c\",\"\\u010D\":\"c\",\"\\u00E7\":\"c\",\"\\u1E09\":\"c\",\"\\u0188\":\"c\",\"\\u023C\":\"c\",\"\\uA73F\":\"c\",\"\\u2184\":\"c\",\"\\u24D3\":\"d\",\"\\uFF44\":\"d\",\"\\u1E0B\":\"d\",\"\\u010F\":\"d\",\"\\u1E0D\":\"d\",\"\\u1E11\":\"d\",\"\\u1E13\":\"d\",\"\\u1E0F\":\"d\",\"\\u0111\":\"d\",\"\\u018C\":\"d\",\"\\u0256\":\"d\",\"\\u0257\":\"d\",\"\\uA77A\":\"d\",\"\\u01F3\":\"dz\",\"\\u01C6\":\"dz\",\"\\u24D4\":\"e\",\"\\uFF45\":\"e\",\"\\u00E8\":\"e\",\"\\u00E9\":\"e\",\"\\u00EA\":\"e\",\"\\u1EC1\":\"e\",\"\\u1EBF\":\"e\",\"\\u1EC5\":\"e\",\"\\u1EC3\":\"e\",\"\\u1EBD\":\"e\",\"\\u0113\":\"e\",\"\\u1E15\":\"e\",\"\\u1E17\":\"e\",\"\\u0115\":\"e\",\"\\u0117\":\"e\",\"\\u00EB\":\"e\",\"\\u1EBB\":\"e\",\"\\u011B\":\"e\",\"\\u0205\":\"e\",\"\\u0207\":\"e\",\"\\u1EB9\":\"e\",\"\\u1EC7\":\"e\",\"\\u0229\":\"e\",\"\\u1E1D\":\"e\",\"\\u0119\":\"e\",\"\\u1E19\":\"e\",\"\\u1E1B\":\"e\",\"\\u0247\":\"e\",\"\\u025B\":\"e\",\"\\u01DD\":\"e\",\"\\u24D5\":\"f\",\"\\uFF46\":\"f\",\"\\u1E1F\":\"f\",\"\\u0192\":\"f\",\"\\uA77C\":\"f\",\"\\u24D6\":\"g\",\"\\uFF47\":\"g\",\"\\u01F5\":\"g\",\"\\u011D\":\"g\",\"\\u1E21\":\"g\",\"\\u011F\":\"g\",\"\\u0121\":\"g\",\"\\u01E7\":\"g\",\"\\u0123\":\"g\",\"\\u01E5\":\"g\",\"\\u0260\":\"g\",\"\\uA7A1\":\"g\",\"\\u1D79\":\"g\",\"\\uA77F\":\"g\",\"\\u24D7\":\"h\",\"\\uFF48\":\"h\",\"\\u0125\":\"h\",\"\\u1E23\":\"h\",\"\\u1E27\":\"h\",\"\\u021F\":\"h\",\"\\u1E25\":\"h\",\"\\u1E29\":\"h\",\"\\u1E2B\":\"h\",\"\\u1E96\":\"h\",\"\\u0127\":\"h\",\"\\u2C68\":\"h\",\"\\u2C76\":\"h\",\"\\u0265\":\"h\",\"\\u0195\":\"hv\",\"\\u24D8\":\"i\",\"\\uFF49\":\"i\",\"\\u00EC\":\"i\",\"\\u00ED\":\"i\",\"\\u00EE\":\"i\",\"\\u0129\":\"i\",\"\\u012B\":\"i\",\"\\u012D\":\"i\",\"\\u00EF\":\"i\",\"\\u1E2F\":\"i\",\"\\u1EC9\":\"i\",\"\\u01D0\":\"i\",\"\\u0209\":\"i\",\"\\u020B\":\"i\",\"\\u1ECB\":\"i\",\"\\u012F\":\"i\",\"\\u1E2D\":\"i\",\"\\u0268\":\"i\",\"\\u0131\":\"i\",\"\\u24D9\":\"j\",\"\\uFF4A\":\"j\",\"\\u0135\":\"j\",\"\\u01F0\":\"j\",\"\\u0249\":\"j\",\"\\u24DA\":\"k\",\"\\uFF4B\":\"k\",\"\\u1E31\":\"k\",\"\\u01E9\":\"k\",\"\\u1E33\":\"k\",\"\\u0137\":\"k\",\"\\u1E35\":\"k\",\"\\u0199\":\"k\",\"\\u2C6A\":\"k\",\"\\uA741\":\"k\",\"\\uA743\":\"k\",\"\\uA745\":\"k\",\"\\uA7A3\":\"k\",\"\\u24DB\":\"l\",\"\\uFF4C\":\"l\",\"\\u0140\":\"l\",\"\\u013A\":\"l\",\"\\u013E\":\"l\",\"\\u1E37\":\"l\",\"\\u1E39\":\"l\",\"\\u013C\":\"l\",\"\\u1E3D\":\"l\",\"\\u1E3B\":\"l\",\"\\u017F\":\"l\",\"\\u0142\":\"l\",\"\\u019A\":\"l\",\"\\u026B\":\"l\",\"\\u2C61\":\"l\",\"\\uA749\":\"l\",\"\\uA781\":\"l\",\"\\uA747\":\"l\",\"\\u01C9\":\"lj\",\"\\u24DC\":\"m\",\"\\uFF4D\":\"m\",\"\\u1E3F\":\"m\",\"\\u1E41\":\"m\",\"\\u1E43\":\"m\",\"\\u0271\":\"m\",\"\\u026F\":\"m\",\"\\u24DD\":\"n\",\"\\uFF4E\":\"n\",\"\\u01F9\":\"n\",\"\\u0144\":\"n\",\"\\u00F1\":\"n\",\"\\u1E45\":\"n\",\"\\u0148\":\"n\",\"\\u1E47\":\"n\",\"\\u0146\":\"n\",\"\\u1E4B\":\"n\",\"\\u1E49\":\"n\",\"\\u019E\":\"n\",\"\\u0272\":\"n\",\"\\u0149\":\"n\",\"\\uA791\":\"n\",\"\\uA7A5\":\"n\",\"\\u01CC\":\"nj\",\"\\u24DE\":\"o\",\"\\uFF4F\":\"o\",\"\\u00F2\":\"o\",\"\\u00F3\":\"o\",\"\\u00F4\":\"o\",\"\\u1ED3\":\"o\",\"\\u1ED1\":\"o\",\"\\u1ED7\":\"o\",\"\\u1ED5\":\"o\",\"\\u00F5\":\"o\",\"\\u1E4D\":\"o\",\"\\u022D\":\"o\",\"\\u1E4F\":\"o\",\"\\u014D\":\"o\",\"\\u1E51\":\"o\",\"\\u1E53\":\"o\",\"\\u014F\":\"o\",\"\\u022F\":\"o\",\"\\u0231\":\"o\",\"\\u00F6\":\"o\",\"\\u022B\":\"o\",\"\\u1ECF\":\"o\",\"\\u0151\":\"o\",\"\\u01D2\":\"o\",\"\\u020D\":\"o\",\"\\u020F\":\"o\",\"\\u01A1\":\"o\",\"\\u1EDD\":\"o\",\"\\u1EDB\":\"o\",\"\\u1EE1\":\"o\",\"\\u1EDF\":\"o\",\"\\u1EE3\":\"o\",\"\\u1ECD\":\"o\",\"\\u1ED9\":\"o\",\"\\u01EB\":\"o\",\"\\u01ED\":\"o\",\"\\u00F8\":\"o\",\"\\u01FF\":\"o\",\"\\u0254\":\"o\",\"\\uA74B\":\"o\",\"\\uA74D\":\"o\",\"\\u0275\":\"o\",\"\\u01A3\":\"oi\",\"\\u0223\":\"ou\",\"\\uA74F\":\"oo\",\"\\u24DF\":\"p\",\"\\uFF50\":\"p\",\"\\u1E55\":\"p\",\"\\u1E57\":\"p\",\"\\u01A5\":\"p\",\"\\u1D7D\":\"p\",\"\\uA751\":\"p\",\"\\uA753\":\"p\",\"\\uA755\":\"p\",\"\\u24E0\":\"q\",\"\\uFF51\":\"q\",\"\\u024B\":\"q\",\"\\uA757\":\"q\",\"\\uA759\":\"q\",\"\\u24E1\":\"r\",\"\\uFF52\":\"r\",\"\\u0155\":\"r\",\"\\u1E59\":\"r\",\"\\u0159\":\"r\",\"\\u0211\":\"r\",\"\\u0213\":\"r\",\"\\u1E5B\":\"r\",\"\\u1E5D\":\"r\",\"\\u0157\":\"r\",\"\\u1E5F\":\"r\",\"\\u024D\":\"r\",\"\\u027D\":\"r\",\"\\uA75B\":\"r\",\"\\uA7A7\":\"r\",\"\\uA783\":\"r\",\"\\u24E2\":\"s\",\"\\uFF53\":\"s\",\"\\u00DF\":\"s\",\"\\u015B\":\"s\",\"\\u1E65\":\"s\",\"\\u015D\":\"s\",\"\\u1E61\":\"s\",\"\\u0161\":\"s\",\"\\u1E67\":\"s\",\"\\u1E63\":\"s\",\"\\u1E69\":\"s\",\"\\u0219\":\"s\",\"\\u015F\":\"s\",\"\\u023F\":\"s\",\"\\uA7A9\":\"s\",\"\\uA785\":\"s\",\"\\u1E9B\":\"s\",\"\\u24E3\":\"t\",\"\\uFF54\":\"t\",\"\\u1E6B\":\"t\",\"\\u1E97\":\"t\",\"\\u0165\":\"t\",\"\\u1E6D\":\"t\",\"\\u021B\":\"t\",\"\\u0163\":\"t\",\"\\u1E71\":\"t\",\"\\u1E6F\":\"t\",\"\\u0167\":\"t\",\"\\u01AD\":\"t\",\"\\u0288\":\"t\",\"\\u2C66\":\"t\",\"\\uA787\":\"t\",\"\\uA729\":\"tz\",\"\\u24E4\":\"u\",\"\\uFF55\":\"u\",\"\\u00F9\":\"u\",\"\\u00FA\":\"u\",\"\\u00FB\":\"u\",\"\\u0169\":\"u\",\"\\u1E79\":\"u\",\"\\u016B\":\"u\",\"\\u1E7B\":\"u\",\"\\u016D\":\"u\",\"\\u00FC\":\"u\",\"\\u01DC\":\"u\",\"\\u01D8\":\"u\",\"\\u01D6\":\"u\",\"\\u01DA\":\"u\",\"\\u1EE7\":\"u\",\"\\u016F\":\"u\",\"\\u0171\":\"u\",\"\\u01D4\":\"u\",\"\\u0215\":\"u\",\"\\u0217\":\"u\",\"\\u01B0\":\"u\",\"\\u1EEB\":\"u\",\"\\u1EE9\":\"u\",\"\\u1EEF\":\"u\",\"\\u1EED\":\"u\",\"\\u1EF1\":\"u\",\"\\u1EE5\":\"u\",\"\\u1E73\":\"u\",\"\\u0173\":\"u\",\"\\u1E77\":\"u\",\"\\u1E75\":\"u\",\"\\u0289\":\"u\",\"\\u24E5\":\"v\",\"\\uFF56\":\"v\",\"\\u1E7D\":\"v\",\"\\u1E7F\":\"v\",\"\\u028B\":\"v\",\"\\uA75F\":\"v\",\"\\u028C\":\"v\",\"\\uA761\":\"vy\",\"\\u24E6\":\"w\",\"\\uFF57\":\"w\",\"\\u1E81\":\"w\",\"\\u1E83\":\"w\",\"\\u0175\":\"w\",\"\\u1E87\":\"w\",\"\\u1E85\":\"w\",\"\\u1E98\":\"w\",\"\\u1E89\":\"w\",\"\\u2C73\":\"w\",\"\\u24E7\":\"x\",\"\\uFF58\":\"x\",\"\\u1E8B\":\"x\",\"\\u1E8D\":\"x\",\"\\u24E8\":\"y\",\"\\uFF59\":\"y\",\"\\u1EF3\":\"y\",\"\\u00FD\":\"y\",\"\\u0177\":\"y\",\"\\u1EF9\":\"y\",\"\\u0233\":\"y\",\"\\u1E8F\":\"y\",\"\\u00FF\":\"y\",\"\\u1EF7\":\"y\",\"\\u1E99\":\"y\",\"\\u1EF5\":\"y\",\"\\u01B4\":\"y\",\"\\u024F\":\"y\",\"\\u1EFF\":\"y\",\"\\u24E9\":\"z\",\"\\uFF5A\":\"z\",\"\\u017A\":\"z\",\"\\u1E91\":\"z\",\"\\u017C\":\"z\",\"\\u017E\":\"z\",\"\\u1E93\":\"z\",\"\\u1E95\":\"z\",\"\\u01B6\":\"z\",\"\\u0225\":\"z\",\"\\u0240\":\"z\",\"\\u2C6C\":\"z\",\"\\uA763\":\"z\",\"\\u0386\":\"\\u0391\",\"\\u0388\":\"\\u0395\",\"\\u0389\":\"\\u0397\",\"\\u038A\":\"\\u0399\",\"\\u03AA\":\"\\u0399\",\"\\u038C\":\"\\u039F\",\"\\u038E\":\"\\u03A5\",\"\\u03AB\":\"\\u03A5\",\"\\u038F\":\"\\u03A9\",\"\\u03AC\":\"\\u03B1\",\"\\u03AD\":\"\\u03B5\",\"\\u03AE\":\"\\u03B7\",\"\\u03AF\":\"\\u03B9\",\"\\u03CA\":\"\\u03B9\",\"\\u0390\":\"\\u03B9\",\"\\u03CC\":\"\\u03BF\",\"\\u03CD\":\"\\u03C5\",\"\\u03CB\":\"\\u03C5\",\"\\u03B0\":\"\\u03C5\",\"\\u03C9\":\"\\u03C9\",\"\\u03C2\":\"\\u03C3\"};\n\n $document = $(document);\n\n nextUid=(function() { var counter=1; return function() { return counter++; }; }());\n\n\n function reinsertElement(element) {\n var placeholder = $(document.createTextNode(''));\n\n element.before(placeholder);\n placeholder.before(element);\n placeholder.remove();\n }\n\n function stripDiacritics(str) {\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n function match(a) {\n return DIACRITICS[a] || a;\n }\n\n return str.replace(/[^\\u0000-\\u007E]/g, match);\n }\n\n function indexOf(value, array) {\n var i = 0, l = array.length;\n for (; i < l; i = i + 1) {\n if (equal(value, array[i])) return i;\n }\n return -1;\n }\n\n function measureScrollbar () {\n var $template = $( MEASURE_SCROLLBAR_TEMPLATE );\n $template.appendTo('body');\n\n var dim = {\n width: $template.width() - $template[0].clientWidth,\n height: $template.height() - $template[0].clientHeight\n };\n $template.remove();\n\n return dim;\n }\n\n /**\n * Compares equality of a and b\n * @param a\n * @param b\n */\n function equal(a, b) {\n if (a === b) return true;\n if (a === undefined || b === undefined) return false;\n if (a === null || b === null) return false;\n // Check whether 'a' or 'b' is a string (primitive or object).\n // The concatenation of an empty string (+'') converts its argument to a string's primitive.\n if (a.constructor === String) return a+'' === b+''; // a+'' - in case 'a' is a String object\n if (b.constructor === String) return b+'' === a+''; // b+'' - in case 'b' is a String object\n return false;\n }\n\n /**\n * Splits the string into an array of values, trimming each value. An empty array is returned for nulls or empty\n * strings\n * @param string\n * @param separator\n */\n function splitVal(string, separator) {\n var val, i, l;\n if (string === null || string.length < 1) return [];\n val = string.split(separator);\n for (i = 0, l = val.length; i < l; i = i + 1) val[i] = $.trim(val[i]);\n return val;\n }\n\n function getSideBorderPadding(element) {\n return element.outerWidth(false) - element.width();\n }\n\n function installKeyUpChangeEvent(element) {\n var key=\"keyup-change-value\";\n element.on(\"keydown\", function () {\n if ($.data(element, key) === undefined) {\n $.data(element, key, element.val());\n }\n });\n element.on(\"keyup\", function () {\n var val= $.data(element, key);\n if (val !== undefined && element.val() !== val) {\n $.removeData(element, key);\n element.trigger(\"keyup-change\");\n }\n });\n }\n\n\n /**\n * filters mouse events so an event is fired only if the mouse moved.\n *\n * filters out mouse events that occur when mouse is stationary but\n * the elements under the pointer are scrolled.\n */\n function installFilteredMouseMove(element) {\n element.on(\"mousemove\", function (e) {\n var lastpos = lastMousePosition;\n if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) {\n $(e.target).trigger(\"mousemove-filtered\", e);\n }\n });\n }\n\n /**\n * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made\n * within the last quietMillis milliseconds.\n *\n * @param quietMillis number of milliseconds to wait before invoking fn\n * @param fn function to be debounced\n * @param ctx object to be used as this reference within fn\n * @return debounced version of fn\n */\n function debounce(quietMillis, fn, ctx) {\n ctx = ctx || undefined;\n var timeout;\n return function () {\n var args = arguments;\n window.clearTimeout(timeout);\n timeout = window.setTimeout(function() {\n fn.apply(ctx, args);\n }, quietMillis);\n };\n }\n\n function installDebouncedScroll(threshold, element) {\n var notify = debounce(threshold, function (e) { element.trigger(\"scroll-debounced\", e);});\n element.on(\"scroll\", function (e) {\n if (indexOf(e.target, element.get()) >= 0) notify(e);\n });\n }\n\n function focus($el) {\n if ($el[0] === document.activeElement) return;\n\n /* set the focus in a 0 timeout - that way the focus is set after the processing\n of the current event has finished - which seems like the only reliable way\n to set focus */\n window.setTimeout(function() {\n var el=$el[0], pos=$el.val().length, range;\n\n $el.focus();\n\n /* make sure el received focus so we do not error out when trying to manipulate the caret.\n sometimes modals or others listeners may steal it after its set */\n var isVisible = (el.offsetWidth > 0 || el.offsetHeight > 0);\n if (isVisible && el === document.activeElement) {\n\n /* after the focus is set move the caret to the end, necessary when we val()\n just before setting focus */\n if(el.setSelectionRange)\n {\n el.setSelectionRange(pos, pos);\n }\n else if (el.createTextRange) {\n range = el.createTextRange();\n range.collapse(false);\n range.select();\n }\n }\n }, 0);\n }\n\n function getCursorInfo(el) {\n el = $(el)[0];\n var offset = 0;\n var length = 0;\n if ('selectionStart' in el) {\n offset = el.selectionStart;\n length = el.selectionEnd - offset;\n } else if ('selection' in document) {\n el.focus();\n var sel = document.selection.createRange();\n length = document.selection.createRange().text.length;\n sel.moveStart('character', -el.value.length);\n offset = sel.text.length - length;\n }\n return { offset: offset, length: length };\n }\n\n function killEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n }\n function killEventImmediately(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n function measureTextWidth(e) {\n if (!sizer){\n var style = e[0].currentStyle || window.getComputedStyle(e[0], null);\n sizer = $(document.createElement(\"div\")).css({\n position: \"absolute\",\n left: \"-10000px\",\n top: \"-10000px\",\n display: \"none\",\n fontSize: style.fontSize,\n fontFamily: style.fontFamily,\n fontStyle: style.fontStyle,\n fontWeight: style.fontWeight,\n letterSpacing: style.letterSpacing,\n textTransform: style.textTransform,\n whiteSpace: \"nowrap\"\n });\n sizer.attr(\"class\",\"select2-sizer\");\n $(\"body\").append(sizer);\n }\n sizer.text(e.val());\n return sizer.width();\n }\n\n function syncCssClasses(dest, src, adapter) {\n var classes, replacements = [], adapted;\n\n classes = $.trim(dest.attr(\"class\"));\n\n if (classes) {\n classes = '' + classes; // for IE which returns object\n\n $(classes.split(/\\s+/)).each2(function() {\n if (this.indexOf(\"select2-\") === 0) {\n replacements.push(this);\n }\n });\n }\n\n classes = $.trim(src.attr(\"class\"));\n\n if (classes) {\n classes = '' + classes; // for IE which returns object\n\n $(classes.split(/\\s+/)).each2(function() {\n if (this.indexOf(\"select2-\") !== 0) {\n adapted = adapter(this);\n\n if (adapted) {\n replacements.push(adapted);\n }\n }\n });\n }\n\n dest.attr(\"class\", replacements.join(\" \"));\n }\n\n\n function markMatch(text, term, markup, escapeMarkup) {\n var match=stripDiacritics(text.toUpperCase()).indexOf(stripDiacritics(term.toUpperCase())),\n tl=term.length;\n\n if (match<0) {\n markup.push(escapeMarkup(text));\n return;\n }\n\n markup.push(escapeMarkup(text.substring(0, match)));\n markup.push(\"\");\n markup.push(escapeMarkup(text.substring(match, match + tl)));\n markup.push(\"\");\n markup.push(escapeMarkup(text.substring(match + tl, text.length)));\n }\n\n function defaultEscapeMarkup(markup) {\n var replace_map = {\n '\\\\': '\',\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n \"/\": '/'\n };\n\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replace_map[match];\n });\n }\n\n /**\n * Produces an ajax-based query function\n *\n * @param options object containing configuration parameters\n * @param options.params parameter map for the transport ajax call, can contain such options as cache, jsonpCallback, etc. see $.ajax\n * @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax\n * @param options.url url for the data\n * @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url.\n * @param options.dataType request data type: ajax, jsonp, other datatypes supported by jQuery's $.ajax function or the transport function if specified\n * @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often\n * @param options.results a function(remoteData, pageNumber, query) that converts data returned form the remote request to the format expected by Select2.\n * The expected format is an object containing the following keys:\n * results array of objects that will be used as choices\n * more (optional) boolean indicating whether there are more results available\n * Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true}\n */\n function ajax(options) {\n var timeout, // current scheduled but not yet executed request\n handler = null,\n quietMillis = options.quietMillis || 100,\n ajaxUrl = options.url,\n self = this;\n\n return function (query) {\n window.clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n var data = options.data, // ajax data function\n url = ajaxUrl, // ajax url string or function\n transport = options.transport || $.fn.select2.ajaxDefaults.transport,\n // deprecated - to be removed in 4.0 - use params instead\n deprecated = {\n type: options.type || 'GET', // set type of request (GET or POST)\n cache: options.cache || false,\n jsonpCallback: options.jsonpCallback||undefined,\n dataType: options.dataType||\"json\"\n },\n params = $.extend({}, $.fn.select2.ajaxDefaults.params, deprecated);\n\n data = data ? data.call(self, query.term, query.page, query.context) : null;\n url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url;\n\n if (handler && typeof handler.abort === \"function\") { handler.abort(); }\n\n if (options.params) {\n if ($.isFunction(options.params)) {\n $.extend(params, options.params.call(self));\n } else {\n $.extend(params, options.params);\n }\n }\n\n $.extend(params, {\n url: url,\n dataType: options.dataType,\n data: data,\n success: function (data) {\n // TODO - replace query.page with query so users have access to term, page, etc.\n // added query as third paramter to keep backwards compatibility\n var results = options.results(data, query.page, query);\n query.callback(results);\n },\n error: function(jqXHR, textStatus, errorThrown){\n var results = {\n hasError: true,\n jqXHR: jqXHR,\n textStatus: textStatus,\n errorThrown: errorThrown,\n };\n\n query.callback(results);\n }\n });\n handler = transport.call(self, params);\n }, quietMillis);\n };\n }\n\n /**\n * Produces a query function that works with a local array\n *\n * @param options object containing configuration parameters. The options parameter can either be an array or an\n * object.\n *\n * If the array form is used it is assumed that it contains objects with 'id' and 'text' keys.\n *\n * If the object form is used it is assumed that it contains 'data' and 'text' keys. The 'data' key should contain\n * an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text'\n * key can either be a String in which case it is expected that each element in the 'data' array has a key with the\n * value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract\n * the text.\n */\n function local(options) {\n var data = options, // data elements\n dataText,\n tmp,\n text = function (item) { return \"\"+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search\n\n if ($.isArray(data)) {\n tmp = data;\n data = { results: tmp };\n }\n\n if ($.isFunction(data) === false) {\n tmp = data;\n data = function() { return tmp; };\n }\n\n var dataItem = data();\n if (dataItem.text) {\n text = dataItem.text;\n // if text is not a function we assume it to be a key name\n if (!$.isFunction(text)) {\n dataText = dataItem.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available\n text = function (item) { return item[dataText]; };\n }\n }\n\n return function (query) {\n var t = query.term, filtered = { results: [] }, process;\n if (t === \"\") {\n query.callback(data());\n return;\n }\n\n process = function(datum, collection) {\n var group, attr;\n datum = datum[0];\n if (datum.children) {\n group = {};\n for (attr in datum) {\n if (datum.hasOwnProperty(attr)) group[attr]=datum[attr];\n }\n group.children=[];\n $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); });\n if (group.children.length || query.matcher(t, text(group), datum)) {\n collection.push(group);\n }\n } else {\n if (query.matcher(t, text(datum), datum)) {\n collection.push(datum);\n }\n }\n };\n\n $(data().results).each2(function(i, datum) { process(datum, filtered.results); });\n query.callback(filtered);\n };\n }\n\n // TODO javadoc\n function tags(data) {\n var isFunc = $.isFunction(data);\n return function (query) {\n var t = query.term, filtered = {results: []};\n var result = isFunc ? data(query) : data;\n if ($.isArray(result)) {\n $(result).each(function () {\n var isObject = this.text !== undefined,\n text = isObject ? this.text : this;\n if (t === \"\" || query.matcher(t, text)) {\n filtered.results.push(isObject ? this : {id: this, text: this});\n }\n });\n query.callback(filtered);\n }\n };\n }\n\n /**\n * Checks if the formatter function should be used.\n *\n * Throws an error if it is not a function. Returns true if it should be used,\n * false if no formatting should be performed.\n *\n * @param formatter\n */\n function checkFormatter(formatter, formatterName) {\n if ($.isFunction(formatter)) return true;\n if (!formatter) return false;\n if (typeof(formatter) === 'string') return true;\n throw new Error(formatterName +\" must be a string, function, or falsy value\");\n }\n\n /**\n * Returns a given value\n * If given a function, returns its output\n *\n * @param val string|function\n * @param context value of \"this\" to be passed to function\n * @returns {*}\n */\n function evaluate(val, context) {\n if ($.isFunction(val)) {\n var args = Array.prototype.slice.call(arguments, 2);\n return val.apply(context, args);\n }\n return val;\n }\n\n function countResults(results) {\n var count = 0;\n $.each(results, function(i, item) {\n if (item.children) {\n count += countResults(item.children);\n } else {\n count++;\n }\n });\n return count;\n }\n\n /**\n * Default tokenizer. This function uses breaks the input on substring match of any string from the\n * opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those\n * two options have to be defined in order for the tokenizer to work.\n *\n * @param input text user has typed so far or pasted into the search field\n * @param selection currently selected choices\n * @param selectCallback function(choice) callback tho add the choice to selection\n * @param opts select2's opts\n * @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value\n */\n function defaultTokenizer(input, selection, selectCallback, opts) {\n var original = input, // store the original so we can compare and know if we need to tell the search to update its text\n dupe = false, // check for whether a token we extracted represents a duplicate selected choice\n token, // token\n index, // position at which the separator was found\n i, l, // looping variables\n separator; // the matched separator\n\n if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined;\n\n while (true) {\n index = -1;\n\n for (i = 0, l = opts.tokenSeparators.length; i < l; i++) {\n separator = opts.tokenSeparators[i];\n index = input.indexOf(separator);\n if (index >= 0) break;\n }\n\n if (index < 0) break; // did not find any token separator in the input string, bail\n\n token = input.substring(0, index);\n input = input.substring(index + separator.length);\n\n if (token.length > 0) {\n token = opts.createSearchChoice.call(this, token, selection);\n if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) {\n dupe = false;\n for (i = 0, l = selection.length; i < l; i++) {\n if (equal(opts.id(token), opts.id(selection[i]))) {\n dupe = true; break;\n }\n }\n\n if (!dupe) selectCallback(token);\n }\n }\n }\n\n if (original!==input) return input;\n }\n\n function cleanupJQueryElements() {\n var self = this;\n\n $.each(arguments, function (i, element) {\n self[element].remove();\n self[element] = null;\n });\n }\n\n /**\n * Creates a new class\n *\n * @param superClass\n * @param methods\n */\n function clazz(SuperClass, methods) {\n var constructor = function () {};\n constructor.prototype = new SuperClass;\n constructor.prototype.constructor = constructor;\n constructor.prototype.parent = SuperClass.prototype;\n constructor.prototype = $.extend(constructor.prototype, methods);\n return constructor;\n }\n\n AbstractSelect2 = clazz(Object, {\n\n // abstract\n bind: function (func) {\n var self = this;\n return function () {\n func.apply(self, arguments);\n };\n },\n\n // abstract\n init: function (opts) {\n var results, search, resultsSelector = \".select2-results\";\n\n // prepare options\n this.opts = opts = this.prepareOpts(opts);\n\n this.id=opts.id;\n\n // destroy if called on an existing component\n if (opts.element.data(\"select2\") !== undefined &&\n opts.element.data(\"select2\") !== null) {\n opts.element.data(\"select2\").destroy();\n }\n\n this.container = this.createContainer();\n\n this.liveRegion = $(\"\", {\n role: \"status\",\n \"aria-live\": \"polite\"\n })\n .addClass(\"select2-hidden-accessible\")\n .appendTo(document.body);\n\n this.containerId=\"s2id_\"+(opts.element.attr(\"id\") || \"autogen\"+nextUid());\n this.containerEventName= this.containerId\n .replace(/([.])/g, '_')\n .replace(/([;&,\\-\\.\\+\\*\\~':\"\\!\\^#$%@\\[\\]\\(\\)=>\\|])/g, '\\\\$1');\n this.container.attr(\"id\", this.containerId);\n\n this.container.attr(\"title\", opts.element.attr(\"title\"));\n\n this.body = $(\"body\");\n\n syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);\n\n this.container.attr(\"style\", opts.element.attr(\"style\"));\n this.container.css(evaluate(opts.containerCss, this.opts.element));\n this.container.addClass(evaluate(opts.containerCssClass, this.opts.element));\n\n this.elementTabIndex = this.opts.element.attr(\"tabindex\");\n\n // swap container for the element\n this.opts.element\n .data(\"select2\", this)\n .attr(\"tabindex\", \"-1\")\n .before(this.container)\n .on(\"click.select2\", killEvent); // do not leak click events\n\n this.container.data(\"select2\", this);\n\n this.dropdown = this.container.find(\".select2-drop\");\n\n syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);\n\n this.dropdown.addClass(evaluate(opts.dropdownCssClass, this.opts.element));\n this.dropdown.data(\"select2\", this);\n this.dropdown.on(\"click\", killEvent);\n\n this.results = results = this.container.find(resultsSelector);\n this.search = search = this.container.find(\"input.select2-input\");\n\n this.queryCount = 0;\n this.resultsPage = 0;\n this.context = null;\n\n // initialize the container\n this.initContainer();\n\n this.container.on(\"click\", killEvent);\n\n installFilteredMouseMove(this.results);\n\n this.dropdown.on(\"mousemove-filtered\", resultsSelector, this.bind(this.highlightUnderEvent));\n this.dropdown.on(\"touchstart touchmove touchend\", resultsSelector, this.bind(function (event) {\n this._touchEvent = true;\n this.highlightUnderEvent(event);\n }));\n this.dropdown.on(\"touchmove\", resultsSelector, this.bind(this.touchMoved));\n this.dropdown.on(\"touchstart touchend\", resultsSelector, this.bind(this.clearTouchMoved));\n\n // Waiting for a click event on touch devices to select option and hide dropdown\n // otherwise click will be triggered on an underlying element\n this.dropdown.on('click', this.bind(function (event) {\n if (this._touchEvent) {\n this._touchEvent = false;\n this.selectHighlighted();\n }\n }));\n\n installDebouncedScroll(80, this.results);\n this.dropdown.on(\"scroll-debounced\", resultsSelector, this.bind(this.loadMoreIfNeeded));\n\n // do not propagate change event from the search field out of the component\n $(this.container).on(\"change\", \".select2-input\", function(e) {e.stopPropagation();});\n $(this.dropdown).on(\"change\", \".select2-input\", function(e) {e.stopPropagation();});\n\n // if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel\n if ($.fn.mousewheel) {\n results.mousewheel(function (e, delta, deltaX, deltaY) {\n var top = results.scrollTop();\n if (deltaY > 0 && top - deltaY <= 0) {\n results.scrollTop(0);\n killEvent(e);\n } else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) {\n results.scrollTop(results.get(0).scrollHeight - results.height());\n killEvent(e);\n }\n });\n }\n\n installKeyUpChangeEvent(search);\n search.on(\"keyup-change input paste\", this.bind(this.updateResults));\n search.on(\"focus\", function () { search.addClass(\"select2-focused\"); });\n search.on(\"blur\", function () { search.removeClass(\"select2-focused\");});\n\n this.dropdown.on(\"mouseup\", resultsSelector, this.bind(function (e) {\n if ($(e.target).closest(\".select2-result-selectable\").length > 0) {\n this.highlightUnderEvent(e);\n this.selectHighlighted(e);\n }\n }));\n\n // trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening\n // for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's\n // dom it will trigger the popup close, which is not what we want\n // focusin can cause focus wars between modals and select2 since the dropdown is outside the modal.\n this.dropdown.on(\"click mouseup mousedown touchstart touchend focusin\", function (e) { e.stopPropagation(); });\n\n this.nextSearchTerm = undefined;\n\n if ($.isFunction(this.opts.initSelection)) {\n // initialize selection based on the current value of the source element\n this.initSelection();\n\n // if the user has provided a function that can set selection based on the value of the source element\n // we monitor the change event on the element and trigger it, allowing for two way synchronization\n this.monitorSource();\n }\n\n if (opts.maximumInputLength !== null) {\n this.search.attr(\"maxlength\", opts.maximumInputLength);\n }\n\n var disabled = opts.element.prop(\"disabled\");\n if (disabled === undefined) disabled = false;\n this.enable(!disabled);\n\n var readonly = opts.element.prop(\"readonly\");\n if (readonly === undefined) readonly = false;\n this.readonly(readonly);\n\n // Calculate size of scrollbar\n scrollBarDimensions = scrollBarDimensions || measureScrollbar();\n\n this.autofocus = opts.element.prop(\"autofocus\");\n opts.element.prop(\"autofocus\", false);\n if (this.autofocus) this.focus();\n\n this.search.attr(\"placeholder\", opts.searchInputPlaceholder);\n },\n\n // abstract\n destroy: function () {\n var element=this.opts.element, select2 = element.data(\"select2\"), self = this;\n\n this.close();\n\n if (element.length && element[0].detachEvent) {\n element.each(function () {\n this.detachEvent(\"onpropertychange\", self._sync);\n });\n }\n if (this.propertyObserver) {\n this.propertyObserver.disconnect();\n this.propertyObserver = null;\n }\n this._sync = null;\n\n if (select2 !== undefined) {\n select2.container.remove();\n select2.liveRegion.remove();\n select2.dropdown.remove();\n element\n .removeClass(\"select2-offscreen\")\n .removeData(\"select2\")\n .off(\".select2\")\n .prop(\"autofocus\", this.autofocus || false);\n if (this.elementTabIndex) {\n element.attr({tabindex: this.elementTabIndex});\n } else {\n element.removeAttr(\"tabindex\");\n }\n element.show();\n }\n\n cleanupJQueryElements.call(this,\n \"container\",\n \"liveRegion\",\n \"dropdown\",\n \"results\",\n \"search\"\n );\n },\n\n // abstract\n optionToData: function(element) {\n if (element.is(\"option\")) {\n return {\n id:element.prop(\"value\"),\n text:element.text(),\n element: element.get(),\n css: element.attr(\"class\"),\n disabled: element.prop(\"disabled\"),\n locked: equal(element.attr(\"locked\"), \"locked\") || equal(element.data(\"locked\"), true)\n };\n } else if (element.is(\"optgroup\")) {\n return {\n text:element.attr(\"label\"),\n children:[],\n element: element.get(),\n css: element.attr(\"class\")\n };\n }\n },\n\n // abstract\n prepareOpts: function (opts) {\n var element, select, idKey, ajaxUrl, self = this;\n\n element = opts.element;\n\n if (element.get(0).tagName.toLowerCase() === \"select\") {\n this.select = select = opts.element;\n }\n\n if (select) {\n // these options are not allowed when attached to a select because they are picked up off the element itself\n $.each([\"id\", \"multiple\", \"ajax\", \"query\", \"createSearchChoice\", \"initSelection\", \"data\", \"tags\"], function () {\n if (this in opts) {\n throw new Error(\"Option '\" + this + \"' is not allowed for Select2 when attached to a \",\n \"
      \",\n \" \",\n \"
        \",\n \"
      \",\n \"
      \"].join(\"\"));\n return container;\n },\n\n // single\n enableInterface: function() {\n if (this.parent.enableInterface.apply(this, arguments)) {\n this.focusser.prop(\"disabled\", !this.isInterfaceEnabled());\n }\n },\n\n // single\n opening: function () {\n var el, range, len;\n\n if (this.opts.minimumResultsForSearch >= 0) {\n this.showSearch(true);\n }\n\n this.parent.opening.apply(this, arguments);\n\n if (this.showSearchInput !== false) {\n // IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range\n // all other browsers handle this just fine\n\n this.search.val(this.focusser.val());\n }\n if (this.opts.shouldFocusInput(this)) {\n this.search.focus();\n // move the cursor to the end after focussing, otherwise it will be at the beginning and\n // new text will appear *before* focusser.val()\n el = this.search.get(0);\n if (el.createTextRange) {\n range = el.createTextRange();\n range.collapse(false);\n range.select();\n } else if (el.setSelectionRange) {\n len = this.search.val().length;\n el.setSelectionRange(len, len);\n }\n }\n\n // initializes search's value with nextSearchTerm (if defined by user)\n // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter\n if(this.search.val() === \"\") {\n if(this.nextSearchTerm != undefined){\n this.search.val(this.nextSearchTerm);\n this.search.select();\n }\n }\n\n this.focusser.prop(\"disabled\", true).val(\"\");\n this.updateResults(true);\n this.opts.element.trigger($.Event(\"select2-open\"));\n },\n\n // single\n close: function () {\n if (!this.opened()) return;\n this.parent.close.apply(this, arguments);\n\n this.focusser.prop(\"disabled\", false);\n\n if (this.opts.shouldFocusInput(this)) {\n this.focusser.focus();\n }\n },\n\n // single\n focus: function () {\n if (this.opened()) {\n this.close();\n } else {\n this.focusser.prop(\"disabled\", false);\n if (this.opts.shouldFocusInput(this)) {\n this.focusser.focus();\n }\n }\n },\n\n // single\n isFocused: function () {\n return this.container.hasClass(\"select2-container-active\");\n },\n\n // single\n cancel: function () {\n this.parent.cancel.apply(this, arguments);\n this.focusser.prop(\"disabled\", false);\n\n if (this.opts.shouldFocusInput(this)) {\n this.focusser.focus();\n }\n },\n\n // single\n destroy: function() {\n $(\"label[for='\" + this.focusser.attr('id') + \"']\")\n .attr('for', this.opts.element.attr(\"id\"));\n this.parent.destroy.apply(this, arguments);\n\n cleanupJQueryElements.call(this,\n \"selection\",\n \"focusser\"\n );\n },\n\n // single\n initContainer: function () {\n\n var selection,\n container = this.container,\n dropdown = this.dropdown,\n idSuffix = nextUid(),\n elementLabel;\n\n if (this.opts.minimumResultsForSearch < 0) {\n this.showSearch(false);\n } else {\n this.showSearch(true);\n }\n\n this.selection = selection = container.find(\".select2-choice\");\n\n this.focusser = container.find(\".select2-focusser\");\n\n // add aria associations\n selection.find(\".select2-chosen\").attr(\"id\", \"select2-chosen-\"+idSuffix);\n this.focusser.attr(\"aria-labelledby\", \"select2-chosen-\"+idSuffix);\n this.results.attr(\"id\", \"select2-results-\"+idSuffix);\n this.search.attr(\"aria-owns\", \"select2-results-\"+idSuffix);\n\n // rewrite labels from original element to focusser\n this.focusser.attr(\"id\", \"s2id_autogen\"+idSuffix);\n\n elementLabel = $(\"label[for='\" + this.opts.element.attr(\"id\") + \"']\");\n\n this.focusser.prev()\n .text(elementLabel.text())\n .attr('for', this.focusser.attr('id'));\n\n // Ensure the original element retains an accessible name\n var originalTitle = this.opts.element.attr(\"title\");\n this.opts.element.attr(\"title\", (originalTitle || elementLabel.text()));\n\n this.focusser.attr(\"tabindex\", this.elementTabIndex);\n\n // write label for search field using the label from the focusser element\n this.search.attr(\"id\", this.focusser.attr('id') + '_search');\n\n this.search.prev()\n .text($(\"label[for='\" + this.focusser.attr('id') + \"']\").text())\n .attr('for', this.search.attr('id'));\n\n this.search.on(\"keydown\", this.bind(function (e) {\n if (!this.isInterfaceEnabled()) return;\n\n // filter 229 keyCodes (input method editor is processing key input)\n if (229 == e.keyCode) return;\n\n if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\n // prevent the page from scrolling\n killEvent(e);\n return;\n }\n\n switch (e.which) {\n case KEY.UP:\n case KEY.DOWN:\n this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\n killEvent(e);\n return;\n case KEY.ENTER:\n this.selectHighlighted();\n killEvent(e);\n return;\n case KEY.TAB:\n this.selectHighlighted({noFocus: true});\n return;\n case KEY.ESC:\n this.cancel(e);\n killEvent(e);\n return;\n }\n }));\n\n this.search.on(\"blur\", this.bind(function(e) {\n // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown.\n // without this the search field loses focus which is annoying\n if (document.activeElement === this.body.get(0)) {\n window.setTimeout(this.bind(function() {\n if (this.opened()) {\n this.search.focus();\n }\n }), 0);\n }\n }));\n\n this.focusser.on(\"keydown\", this.bind(function (e) {\n if (!this.isInterfaceEnabled()) return;\n\n if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) {\n return;\n }\n\n if (this.opts.openOnEnter === false && e.which === KEY.ENTER) {\n killEvent(e);\n return;\n }\n\n if (e.which == KEY.DOWN || e.which == KEY.UP\n || (e.which == KEY.ENTER && this.opts.openOnEnter)) {\n\n if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return;\n\n this.open();\n killEvent(e);\n return;\n }\n\n if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) {\n if (this.opts.allowClear) {\n this.clear();\n }\n killEvent(e);\n return;\n }\n }));\n\n\n installKeyUpChangeEvent(this.focusser);\n this.focusser.on(\"keyup-change input\", this.bind(function(e) {\n if (this.opts.minimumResultsForSearch >= 0) {\n e.stopPropagation();\n if (this.opened()) return;\n this.open();\n }\n }));\n\n selection.on(\"mousedown touchstart\", \"abbr\", this.bind(function (e) {\n if (!this.isInterfaceEnabled()) return;\n this.clear();\n killEventImmediately(e);\n this.close();\n this.selection.focus();\n }));\n\n selection.on(\"mousedown touchstart\", this.bind(function (e) {\n // Prevent IE from generating a click event on the body\n reinsertElement(selection);\n\n if (!this.container.hasClass(\"select2-container-active\")) {\n this.opts.element.trigger($.Event(\"select2-focus\"));\n }\n\n if (this.opened()) {\n this.close();\n } else if (this.isInterfaceEnabled()) {\n this.open();\n }\n\n killEvent(e);\n }));\n\n dropdown.on(\"mousedown touchstart\", this.bind(function() {\n if (this.opts.shouldFocusInput(this)) {\n this.search.focus();\n }\n }));\n\n selection.on(\"focus\", this.bind(function(e) {\n killEvent(e);\n }));\n\n this.focusser.on(\"focus\", this.bind(function(){\n if (!this.container.hasClass(\"select2-container-active\")) {\n this.opts.element.trigger($.Event(\"select2-focus\"));\n }\n this.container.addClass(\"select2-container-active\");\n })).on(\"blur\", this.bind(function() {\n if (!this.opened()) {\n this.container.removeClass(\"select2-container-active\");\n this.opts.element.trigger($.Event(\"select2-blur\"));\n }\n }));\n this.search.on(\"focus\", this.bind(function(){\n if (!this.container.hasClass(\"select2-container-active\")) {\n this.opts.element.trigger($.Event(\"select2-focus\"));\n }\n this.container.addClass(\"select2-container-active\");\n }));\n\n this.initContainerWidth();\n this.opts.element.addClass(\"select2-offscreen\");\n this.setPlaceholder();\n\n },\n\n // single\n clear: function(triggerChange) {\n var data=this.selection.data(\"select2-data\");\n if (data) { // guard against queued quick consecutive clicks\n var evt = $.Event(\"select2-clearing\");\n this.opts.element.trigger(evt);\n if (evt.isDefaultPrevented()) {\n return;\n }\n var placeholderOption = this.getPlaceholderOption();\n this.opts.element.val(placeholderOption ? placeholderOption.val() : \"\");\n this.selection.find(\".select2-chosen\").empty();\n this.selection.removeData(\"select2-data\");\n this.setPlaceholder();\n\n if (triggerChange !== false){\n this.opts.element.trigger({ type: \"select2-removed\", val: this.id(data), choice: data });\n this.triggerChange({removed:data});\n }\n }\n },\n\n /**\n * Sets selection based on source element's value\n */\n // single\n initSelection: function () {\n var selected;\n if (this.isPlaceholderOptionSelected()) {\n this.updateSelection(null);\n this.close();\n this.setPlaceholder();\n } else {\n var self = this;\n this.opts.initSelection.call(null, this.opts.element, function(selected){\n if (selected !== undefined && selected !== null) {\n self.updateSelection(selected);\n self.close();\n self.setPlaceholder();\n self.nextSearchTerm = self.opts.nextSearchTerm(selected, self.search.val());\n }\n });\n }\n },\n\n isPlaceholderOptionSelected: function() {\n var placeholderOption;\n if (this.getPlaceholder() === undefined) return false; // no placeholder specified so no option should be considered\n return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.prop(\"selected\"))\n || (this.opts.element.val() === \"\")\n || (this.opts.element.val() === undefined)\n || (this.opts.element.val() === null);\n },\n\n // single\n prepareOpts: function () {\n var opts = this.parent.prepareOpts.apply(this, arguments),\n self=this;\n\n if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n // install the selection initializer\n opts.initSelection = function (element, callback) {\n var selected = element.find(\"option\").filter(function() { return this.selected && !this.disabled });\n // a single select box always has a value, no need to null check 'selected'\n callback(self.optionToData(selected));\n };\n } else if (\"data\" in opts) {\n // install default initSelection when applied to hidden input and data is local\n opts.initSelection = opts.initSelection || function (element, callback) {\n var id = element.val();\n //search in data by id, storing the actual matching item\n var match = null;\n opts.query({\n matcher: function(term, text, el){\n var is_match = equal(id, opts.id(el));\n if (is_match) {\n match = el;\n }\n return is_match;\n },\n callback: !$.isFunction(callback) ? $.noop : function() {\n callback(match);\n }\n });\n };\n }\n\n return opts;\n },\n\n // single\n getPlaceholder: function() {\n // if a placeholder is specified on a single select without a valid placeholder option ignore it\n if (this.select) {\n if (this.getPlaceholderOption() === undefined) {\n return undefined;\n }\n }\n\n return this.parent.getPlaceholder.apply(this, arguments);\n },\n\n // single\n setPlaceholder: function () {\n var placeholder = this.getPlaceholder();\n\n if (this.isPlaceholderOptionSelected() && placeholder !== undefined) {\n\n // check for a placeholder option if attached to a select\n if (this.select && this.getPlaceholderOption() === undefined) return;\n\n this.selection.find(\".select2-chosen\").html(this.opts.escapeMarkup(placeholder));\n\n this.selection.addClass(\"select2-default\");\n\n this.container.removeClass(\"select2-allowclear\");\n }\n },\n\n // single\n postprocessResults: function (data, initial, noHighlightUpdate) {\n var selected = 0, self = this, showSearchInput = true;\n\n // find the selected element in the result list\n\n this.findHighlightableChoices().each2(function (i, elm) {\n if (equal(self.id(elm.data(\"select2-data\")), self.opts.element.val())) {\n selected = i;\n return false;\n }\n });\n\n // and highlight it\n if (noHighlightUpdate !== false) {\n if (initial === true && selected >= 0) {\n this.highlight(selected);\n } else {\n this.highlight(0);\n }\n }\n\n // hide the search box if this is the first we got the results and there are enough of them for search\n\n if (initial === true) {\n var min = this.opts.minimumResultsForSearch;\n if (min >= 0) {\n this.showSearch(countResults(data.results) >= min);\n }\n }\n },\n\n // single\n showSearch: function(showSearchInput) {\n if (this.showSearchInput === showSearchInput) return;\n\n this.showSearchInput = showSearchInput;\n\n this.dropdown.find(\".select2-search\").toggleClass(\"select2-search-hidden\", !showSearchInput);\n this.dropdown.find(\".select2-search\").toggleClass(\"select2-offscreen\", !showSearchInput);\n //add \"select2-with-searchbox\" to the container if search box is shown\n $(this.dropdown, this.container).toggleClass(\"select2-with-searchbox\", showSearchInput);\n },\n\n // single\n onSelect: function (data, options) {\n\n if (!this.triggerSelect(data)) { return; }\n\n var old = this.opts.element.val(),\n oldData = this.data();\n\n this.opts.element.val(this.id(data));\n this.updateSelection(data);\n\n this.opts.element.trigger({ type: \"select2-selected\", val: this.id(data), choice: data });\n\n this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val());\n this.close();\n\n if ((!options || !options.noFocus) && this.opts.shouldFocusInput(this)) {\n this.focusser.focus();\n }\n\n if (!equal(old, this.id(data))) {\n this.triggerChange({ added: data, removed: oldData });\n }\n },\n\n // single\n updateSelection: function (data) {\n\n var container=this.selection.find(\".select2-chosen\"), formatted, cssClass;\n\n this.selection.data(\"select2-data\", data);\n\n container.empty();\n if (data !== null) {\n formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup);\n }\n if (formatted !== undefined) {\n container.append(formatted);\n }\n cssClass=this.opts.formatSelectionCssClass(data, container);\n if (cssClass !== undefined) {\n container.addClass(cssClass);\n }\n\n this.selection.removeClass(\"select2-default\");\n\n if (this.opts.allowClear && this.getPlaceholder() !== undefined) {\n this.container.addClass(\"select2-allowclear\");\n }\n },\n\n // single\n val: function () {\n var val,\n triggerChange = false,\n data = null,\n self = this,\n oldData = this.data();\n\n if (arguments.length === 0) {\n return this.opts.element.val();\n }\n\n val = arguments[0];\n\n if (arguments.length > 1) {\n triggerChange = arguments[1];\n }\n\n if (this.select) {\n this.select\n .val(val)\n .find(\"option\").filter(function() { return this.selected }).each2(function (i, elm) {\n data = self.optionToData(elm);\n return false;\n });\n this.updateSelection(data);\n this.setPlaceholder();\n if (triggerChange) {\n this.triggerChange({added: data, removed:oldData});\n }\n } else {\n // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\n if (!val && val !== 0) {\n this.clear(triggerChange);\n return;\n }\n if (this.opts.initSelection === undefined) {\n throw new Error(\"cannot call val() if initSelection() is not defined\");\n }\n this.opts.element.val(val);\n this.opts.initSelection(this.opts.element, function(data){\n self.opts.element.val(!data ? \"\" : self.id(data));\n self.updateSelection(data);\n self.setPlaceholder();\n if (triggerChange) {\n self.triggerChange({added: data, removed:oldData});\n }\n });\n }\n },\n\n // single\n clearSearch: function () {\n this.search.val(\"\");\n this.focusser.val(\"\");\n },\n\n // single\n data: function(value) {\n var data,\n triggerChange = false;\n\n if (arguments.length === 0) {\n data = this.selection.data(\"select2-data\");\n if (data == undefined) data = null;\n return data;\n } else {\n if (arguments.length > 1) {\n triggerChange = arguments[1];\n }\n if (!value) {\n this.clear(triggerChange);\n } else {\n data = this.data();\n this.opts.element.val(!value ? \"\" : this.id(value));\n this.updateSelection(value);\n if (triggerChange) {\n this.triggerChange({added: value, removed:data});\n }\n }\n }\n }\n });\n\n MultiSelect2 = clazz(AbstractSelect2, {\n\n // multi\n createContainer: function () {\n var container = $(document.createElement(\"div\")).attr({\n \"class\": \"select2-container select2-container-multi\"\n }).html([\n \"
        \",\n \"
      • \",\n \" \",\n \" \",\n \"
      • \",\n \"
      \",\n \"
      \",\n \"
        \",\n \"
      \",\n \"
      \"].join(\"\"));\n return container;\n },\n\n // multi\n prepareOpts: function () {\n var opts = this.parent.prepareOpts.apply(this, arguments),\n self=this;\n\n // TODO validate placeholder is a string if specified\n\n if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n // install the selection initializer\n opts.initSelection = function (element, callback) {\n\n var data = [];\n\n element.find(\"option\").filter(function() { return this.selected && !this.disabled }).each2(function (i, elm) {\n data.push(self.optionToData(elm));\n });\n callback(data);\n };\n } else if (\"data\" in opts) {\n // install default initSelection when applied to hidden input and data is local\n opts.initSelection = opts.initSelection || function (element, callback) {\n var ids = splitVal(element.val(), opts.separator);\n //search in data by array of ids, storing matching items in a list\n var matches = [];\n opts.query({\n matcher: function(term, text, el){\n var is_match = $.grep(ids, function(id) {\n return equal(id, opts.id(el));\n }).length;\n if (is_match) {\n matches.push(el);\n }\n return is_match;\n },\n callback: !$.isFunction(callback) ? $.noop : function() {\n // reorder matches based on the order they appear in the ids array because right now\n // they are in the order in which they appear in data array\n var ordered = [];\n for (var i = 0; i < ids.length; i++) {\n var id = ids[i];\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n if (equal(id, opts.id(match))) {\n ordered.push(match);\n matches.splice(j, 1);\n break;\n }\n }\n }\n callback(ordered);\n }\n });\n };\n }\n\n return opts;\n },\n\n // multi\n selectChoice: function (choice) {\n\n var selected = this.container.find(\".select2-search-choice-focus\");\n if (selected.length && choice && choice[0] == selected[0]) {\n\n } else {\n if (selected.length) {\n this.opts.element.trigger(\"choice-deselected\", selected);\n }\n selected.removeClass(\"select2-search-choice-focus\");\n if (choice && choice.length) {\n this.close();\n choice.addClass(\"select2-search-choice-focus\");\n this.opts.element.trigger(\"choice-selected\", choice);\n }\n }\n },\n\n // multi\n destroy: function() {\n $(\"label[for='\" + this.search.attr('id') + \"']\")\n .attr('for', this.opts.element.attr(\"id\"));\n this.parent.destroy.apply(this, arguments);\n\n cleanupJQueryElements.call(this,\n \"searchContainer\",\n \"selection\"\n );\n },\n\n // multi\n initContainer: function () {\n\n var selector = \".select2-choices\", selection;\n\n this.searchContainer = this.container.find(\".select2-search-field\");\n this.selection = selection = this.container.find(selector);\n\n var _this = this;\n this.selection.on(\"click\", \".select2-search-choice:not(.select2-locked)\", function (e) {\n //killEvent(e);\n _this.search[0].focus();\n _this.selectChoice($(this));\n });\n\n // rewrite labels from original element to focusser\n this.search.attr(\"id\", \"s2id_autogen\"+nextUid());\n\n this.search.prev()\n .text($(\"label[for='\" + this.opts.element.attr(\"id\") + \"']\").text())\n .attr('for', this.search.attr('id'));\n\n this.search.on(\"input paste\", this.bind(function() {\n if (this.search.attr('placeholder') && this.search.val().length == 0) return;\n if (!this.isInterfaceEnabled()) return;\n if (!this.opened()) {\n this.open();\n }\n }));\n\n this.search.attr(\"tabindex\", this.elementTabIndex);\n\n this.keydowns = 0;\n this.search.on(\"keydown\", this.bind(function (e) {\n if (!this.isInterfaceEnabled()) return;\n\n ++this.keydowns;\n var selected = selection.find(\".select2-search-choice-focus\");\n var prev = selected.prev(\".select2-search-choice:not(.select2-locked)\");\n var next = selected.next(\".select2-search-choice:not(.select2-locked)\");\n var pos = getCursorInfo(this.search);\n\n if (selected.length &&\n (e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) {\n var selectedChoice = selected;\n if (e.which == KEY.LEFT && prev.length) {\n selectedChoice = prev;\n }\n else if (e.which == KEY.RIGHT) {\n selectedChoice = next.length ? next : null;\n }\n else if (e.which === KEY.BACKSPACE) {\n if (this.unselect(selected.first())) {\n this.search.width(10);\n selectedChoice = prev.length ? prev : next;\n }\n } else if (e.which == KEY.DELETE) {\n if (this.unselect(selected.first())) {\n this.search.width(10);\n selectedChoice = next.length ? next : null;\n }\n } else if (e.which == KEY.ENTER) {\n selectedChoice = null;\n }\n\n this.selectChoice(selectedChoice);\n killEvent(e);\n if (!selectedChoice || !selectedChoice.length) {\n this.open();\n }\n return;\n } else if (((e.which === KEY.BACKSPACE && this.keydowns == 1)\n || e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) {\n\n this.selectChoice(selection.find(\".select2-search-choice:not(.select2-locked)\").last());\n killEvent(e);\n return;\n } else {\n this.selectChoice(null);\n }\n\n if (this.opened()) {\n switch (e.which) {\n case KEY.UP:\n case KEY.DOWN:\n this.moveHighlight((e.which === KEY.UP) ? -1 : 1);\n killEvent(e);\n return;\n case KEY.ENTER:\n this.selectHighlighted();\n killEvent(e);\n return;\n case KEY.TAB:\n this.selectHighlighted({noFocus:true});\n this.close();\n return;\n case KEY.ESC:\n this.cancel(e);\n killEvent(e);\n return;\n }\n }\n\n if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e)\n || e.which === KEY.BACKSPACE || e.which === KEY.ESC) {\n return;\n }\n\n if (e.which === KEY.ENTER) {\n if (this.opts.openOnEnter === false) {\n return;\n } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {\n return;\n }\n }\n\n this.open();\n\n if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {\n // prevent the page from scrolling\n killEvent(e);\n }\n\n if (e.which === KEY.ENTER) {\n // prevent form from being submitted\n killEvent(e);\n }\n\n }));\n\n this.search.on(\"keyup\", this.bind(function (e) {\n this.keydowns = 0;\n this.resizeSearch();\n })\n );\n\n this.search.on(\"blur\", this.bind(function(e) {\n this.container.removeClass(\"select2-container-active\");\n this.search.removeClass(\"select2-focused\");\n this.selectChoice(null);\n if (!this.opened()) this.clearSearch();\n e.stopImmediatePropagation();\n this.opts.element.trigger($.Event(\"select2-blur\"));\n }));\n\n this.container.on(\"click\", selector, this.bind(function (e) {\n if (!this.isInterfaceEnabled()) return;\n if ($(e.target).closest(\".select2-search-choice\").length > 0) {\n // clicked inside a select2 search choice, do not open\n return;\n }\n this.selectChoice(null);\n this.clearPlaceholder();\n if (!this.container.hasClass(\"select2-container-active\")) {\n this.opts.element.trigger($.Event(\"select2-focus\"));\n }\n this.open();\n this.focusSearch();\n e.preventDefault();\n }));\n\n this.container.on(\"focus\", selector, this.bind(function () {\n if (!this.isInterfaceEnabled()) return;\n if (!this.container.hasClass(\"select2-container-active\")) {\n this.opts.element.trigger($.Event(\"select2-focus\"));\n }\n this.container.addClass(\"select2-container-active\");\n this.dropdown.addClass(\"select2-drop-active\");\n this.clearPlaceholder();\n }));\n\n this.initContainerWidth();\n this.opts.element.addClass(\"select2-offscreen\");\n\n // set the placeholder if necessary\n this.clearSearch();\n },\n\n // multi\n enableInterface: function() {\n if (this.parent.enableInterface.apply(this, arguments)) {\n this.search.prop(\"disabled\", !this.isInterfaceEnabled());\n }\n },\n\n // multi\n initSelection: function () {\n var data;\n if (this.opts.element.val() === \"\" && this.opts.element.text() === \"\") {\n this.updateSelection([]);\n this.close();\n // set the placeholder if necessary\n this.clearSearch();\n }\n if (this.select || this.opts.element.val() !== \"\") {\n var self = this;\n this.opts.initSelection.call(null, this.opts.element, function(data){\n if (data !== undefined && data !== null) {\n self.updateSelection(data);\n self.close();\n // set the placeholder if necessary\n self.clearSearch();\n }\n });\n }\n },\n\n // multi\n clearSearch: function () {\n var placeholder = this.getPlaceholder(),\n maxWidth = this.getMaxSearchWidth();\n\n if (placeholder !== undefined && this.getVal().length === 0 && this.search.hasClass(\"select2-focused\") === false) {\n this.search.val(placeholder).addClass(\"select2-default\");\n // stretch the search box to full width of the container so as much of the placeholder is visible as possible\n // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944\n this.search.width(maxWidth > 0 ? maxWidth : this.container.css(\"width\"));\n } else {\n this.search.val(\"\").width(10);\n }\n },\n\n // multi\n clearPlaceholder: function () {\n if (this.search.hasClass(\"select2-default\")) {\n this.search.val(\"\").removeClass(\"select2-default\");\n }\n },\n\n // multi\n opening: function () {\n this.clearPlaceholder(); // should be done before super so placeholder is not used to search\n this.resizeSearch();\n\n this.parent.opening.apply(this, arguments);\n\n this.focusSearch();\n\n // initializes search's value with nextSearchTerm (if defined by user)\n // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter\n if(this.search.val() === \"\") {\n if(this.nextSearchTerm != undefined){\n this.search.val(this.nextSearchTerm);\n this.search.select();\n }\n }\n\n this.updateResults(true);\n if (this.opts.shouldFocusInput(this)) {\n this.search.focus();\n }\n this.opts.element.trigger($.Event(\"select2-open\"));\n },\n\n // multi\n close: function () {\n if (!this.opened()) return;\n this.parent.close.apply(this, arguments);\n },\n\n // multi\n focus: function () {\n this.close();\n this.search.focus();\n },\n\n // multi\n isFocused: function () {\n return this.search.hasClass(\"select2-focused\");\n },\n\n // multi\n updateSelection: function (data) {\n var ids = [], filtered = [], self = this;\n\n // filter out duplicates\n $(data).each(function () {\n if (indexOf(self.id(this), ids) < 0) {\n ids.push(self.id(this));\n filtered.push(this);\n }\n });\n data = filtered;\n\n this.selection.find(\".select2-search-choice\").remove();\n $(data).each(function () {\n self.addSelectedChoice(this);\n });\n self.postprocessResults();\n },\n\n // multi\n tokenize: function() {\n var input = this.search.val();\n input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts);\n if (input != null && input != undefined) {\n this.search.val(input);\n if (input.length > 0) {\n this.open();\n }\n }\n\n },\n\n // multi\n onSelect: function (data, options) {\n\n if (!this.triggerSelect(data) || data.text === \"\") { return; }\n\n this.addSelectedChoice(data);\n\n this.opts.element.trigger({ type: \"selected\", val: this.id(data), choice: data });\n\n // keep track of the search's value before it gets cleared\n this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val());\n this.moveHighlight(1);\n if (this.select || !this.opts.closeOnSelect) this.postprocessResults(data, false, this.opts.closeOnSelect===true);\n\n if (this.opts.closeOnSelect) {\n this.clearSearch()\n this.updateResults()\n this.close();\n this.search.width(10);\n } else {\n if (this.countSelectableResults()>0) {\n this.search.width(10);\n this.resizeSearch();\n if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) {\n // if we reached max selection size repaint the results so choices\n // are replaced with the max selection reached message\n this.updateResults(true);\n } else {\n // initializes search's value with nextSearchTerm and update search result\n if(this.nextSearchTerm != undefined){\n this.search.val(this.nextSearchTerm);\n this.updateResults();\n this.search.select();\n }\n }\n this.positionDropdown();\n } else {\n // if nothing left to select close\n this.close();\n this.search.width(10);\n }\n }\n\n // since its not possible to select an element that has already been\n // added we do not need to check if this is a new element before firing change\n this.triggerChange({ added: data });\n\n if (!options || !options.noFocus)\n this.focusSearch();\n },\n\n // multi\n cancel: function () {\n this.close();\n this.focusSearch();\n },\n\n addSelectedChoice: function (data) {\n var enableChoice = !data.locked,\n enabledItem = $(\n \"
    • \" +\n \"
      \" +\n \" \" +\n \"
    • \"),\n disabledItem = $(\n \"
    • \" +\n \"
      \" +\n \"
    • \");\n var choice = enableChoice ? enabledItem : disabledItem,\n id = this.id(data),\n val = this.getVal(),\n formatted,\n cssClass;\n\n formatted=this.opts.formatSelection(data, choice.find(\"div\"), this.opts.escapeMarkup);\n if (formatted != undefined) {\n choice.find(\"div\").replaceWith(\"
      \"+formatted+\"
      \");\n }\n cssClass=this.opts.formatSelectionCssClass(data, choice.find(\"div\"));\n if (cssClass != undefined) {\n choice.addClass(cssClass);\n }\n\n if(enableChoice){\n choice.find(\".select2-search-choice-close\")\n .on(\"mousedown\", killEvent)\n .on(\"click dblclick\", this.bind(function (e) {\n if (!this.isInterfaceEnabled()) return;\n\n this.unselect($(e.target));\n this.selection.find(\".select2-search-choice-focus\").removeClass(\"select2-search-choice-focus\");\n killEvent(e);\n this.close();\n this.focusSearch();\n })).on(\"focus\", this.bind(function () {\n if (!this.isInterfaceEnabled()) return;\n this.container.addClass(\"select2-container-active\");\n this.dropdown.addClass(\"select2-drop-active\");\n }));\n }\n\n choice.data(\"select2-data\", data);\n choice.insertBefore(this.searchContainer);\n\n val.push(id);\n this.setVal(val);\n },\n\n // multi\n unselect: function (selected) {\n var val = this.getVal(),\n data,\n index;\n selected = selected.closest(\".select2-search-choice\");\n\n if (selected.length === 0) {\n throw \"Invalid argument: \" + selected + \". Must be .select2-search-choice\";\n }\n\n data = selected.data(\"select2-data\");\n\n if (!data) {\n // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued\n // and invoked on an element already removed\n return;\n }\n\n var evt = $.Event(\"select2-removing\");\n evt.val = this.id(data);\n evt.choice = data;\n this.opts.element.trigger(evt);\n\n if (evt.isDefaultPrevented()) {\n return false;\n }\n\n while((index = indexOf(this.id(data), val)) >= 0) {\n val.splice(index, 1);\n this.setVal(val);\n if (this.select) this.postprocessResults();\n }\n\n selected.remove();\n\n this.opts.element.trigger({ type: \"select2-removed\", val: this.id(data), choice: data });\n this.triggerChange({ removed: data });\n\n return true;\n },\n\n // multi\n postprocessResults: function (data, initial, noHighlightUpdate) {\n var val = this.getVal(),\n choices = this.results.find(\".select2-result\"),\n compound = this.results.find(\".select2-result-with-children\"),\n self = this;\n\n choices.each2(function (i, choice) {\n var id = self.id(choice.data(\"select2-data\"));\n if (indexOf(id, val) >= 0) {\n choice.addClass(\"select2-selected\");\n // mark all children of the selected parent as selected\n choice.find(\".select2-result-selectable\").addClass(\"select2-selected\");\n }\n });\n\n compound.each2(function(i, choice) {\n // hide an optgroup if it doesn't have any selectable children\n if (!choice.is('.select2-result-selectable')\n && choice.find(\".select2-result-selectable:not(.select2-selected)\").length === 0) {\n choice.addClass(\"select2-selected\");\n }\n });\n\n if (this.highlight() == -1 && noHighlightUpdate !== false){\n self.highlight(0);\n }\n\n //If all results are chosen render formatNoMatches\n if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){\n if(!data || data && !data.more && this.results.find(\".select2-no-results\").length === 0) {\n if (checkFormatter(self.opts.formatNoMatches, \"formatNoMatches\")) {\n this.results.append(\"
    • \" + evaluate(self.opts.formatNoMatches, self.opts.element, self.search.val()) + \"
    • \");\n }\n }\n }\n\n },\n\n // multi\n getMaxSearchWidth: function() {\n return this.selection.width() - getSideBorderPadding(this.search);\n },\n\n // multi\n resizeSearch: function () {\n var minimumWidth, left, maxWidth, containerLeft, searchWidth,\n sideBorderPadding = getSideBorderPadding(this.search);\n\n minimumWidth = measureTextWidth(this.search) + 10;\n\n left = this.search.offset().left;\n\n maxWidth = this.selection.width();\n containerLeft = this.selection.offset().left;\n\n searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding;\n\n if (searchWidth < minimumWidth) {\n searchWidth = maxWidth - sideBorderPadding;\n }\n\n if (searchWidth < 40) {\n searchWidth = maxWidth - sideBorderPadding;\n }\n\n if (searchWidth <= 0) {\n searchWidth = minimumWidth;\n }\n\n this.search.width(Math.floor(searchWidth));\n },\n\n // multi\n getVal: function () {\n var val;\n if (this.select) {\n val = this.select.val();\n return val === null ? [] : val;\n } else {\n val = this.opts.element.val();\n return splitVal(val, this.opts.separator);\n }\n },\n\n // multi\n setVal: function (val) {\n var unique;\n if (this.select) {\n this.select.val(val);\n } else {\n unique = [];\n // filter out duplicates\n $(val).each(function () {\n if (indexOf(this, unique) < 0) unique.push(this);\n });\n this.opts.element.val(unique.length === 0 ? \"\" : unique.join(this.opts.separator));\n }\n },\n\n // multi\n buildChangeDetails: function (old, current) {\n var current = current.slice(0),\n old = old.slice(0);\n\n // remove intersection from each array\n for (var i = 0; i < current.length; i++) {\n for (var j = 0; j < old.length; j++) {\n if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) {\n current.splice(i, 1);\n if(i>0){\n \ti--;\n }\n old.splice(j, 1);\n j--;\n }\n }\n }\n\n return {added: current, removed: old};\n },\n\n\n // multi\n val: function (val, triggerChange) {\n var oldData, self=this;\n\n if (arguments.length === 0) {\n return this.getVal();\n }\n\n oldData=this.data();\n if (!oldData.length) oldData=[];\n\n // val is an id. !val is true for [undefined,null,'',0] - 0 is legal\n if (!val && val !== 0) {\n this.opts.element.val(\"\");\n this.updateSelection([]);\n this.clearSearch();\n if (triggerChange) {\n this.triggerChange({added: this.data(), removed: oldData});\n }\n return;\n }\n\n // val is a list of ids\n this.setVal(val);\n\n if (this.select) {\n this.opts.initSelection(this.select, this.bind(this.updateSelection));\n if (triggerChange) {\n this.triggerChange(this.buildChangeDetails(oldData, this.data()));\n }\n } else {\n if (this.opts.initSelection === undefined) {\n throw new Error(\"val() cannot be called if initSelection() is not defined\");\n }\n\n this.opts.initSelection(this.opts.element, function(data){\n var ids=$.map(data, self.id);\n self.setVal(ids);\n self.updateSelection(data);\n self.clearSearch();\n if (triggerChange) {\n self.triggerChange(self.buildChangeDetails(oldData, self.data()));\n }\n });\n }\n this.clearSearch();\n },\n\n // multi\n onSortStart: function() {\n if (this.select) {\n throw new Error(\"Sorting of elements is not supported when attached to instead.\");\n }\n\n // collapse search field into 0 width so its container can be collapsed as well\n this.search.width(0);\n // hide the container\n this.searchContainer.hide();\n },\n\n // multi\n onSortEnd:function() {\n\n var val=[], self=this;\n\n // show search and move it to the end of the list\n this.searchContainer.show();\n // make sure the search container is the last item in the list\n this.searchContainer.appendTo(this.searchContainer.parent());\n // since we collapsed the width in dragStarted, we resize it here\n this.resizeSearch();\n\n // update selection\n this.selection.find(\".select2-search-choice\").each(function() {\n val.push(self.opts.id($(this).data(\"select2-data\")));\n });\n this.setVal(val);\n this.triggerChange();\n },\n\n // multi\n data: function(values, triggerChange) {\n var self=this, ids, old;\n if (arguments.length === 0) {\n return this.selection\n .children(\".select2-search-choice\")\n .map(function() { return $(this).data(\"select2-data\"); })\n .get();\n } else {\n old = this.data();\n if (!values) { values = []; }\n ids = $.map(values, function(e) { return self.opts.id(e); });\n this.setVal(ids);\n this.updateSelection(values);\n this.clearSearch();\n if (triggerChange) {\n this.triggerChange(this.buildChangeDetails(old, this.data()));\n }\n }\n }\n });\n\n $.fn.select2 = function () {\n\n var args = Array.prototype.slice.call(arguments, 0),\n opts,\n select2,\n method, value, multiple,\n allowedMethods = [\"val\", \"destroy\", \"opened\", \"open\", \"close\", \"focus\", \"isFocused\", \"container\", \"dropdown\", \"onSortStart\", \"onSortEnd\", \"enable\", \"disable\", \"readonly\", \"positionDropdown\", \"data\", \"search\"],\n valueMethods = [\"opened\", \"isFocused\", \"container\", \"dropdown\"],\n propertyMethods = [\"val\", \"data\"],\n methodsMap = { search: \"externalSearch\" };\n\n this.each(function () {\n if (args.length === 0 || typeof(args[0]) === \"object\") {\n opts = args.length === 0 ? {} : $.extend({}, args[0]);\n opts.element = $(this);\n\n if (opts.element.get(0).tagName.toLowerCase() === \"select\") {\n multiple = opts.element.prop(\"multiple\");\n } else {\n multiple = opts.multiple || false;\n if (\"tags\" in opts) {opts.multiple = multiple = true;}\n }\n\n select2 = multiple ? new window.Select2[\"class\"].multi() : new window.Select2[\"class\"].single();\n select2.init(opts);\n } else if (typeof(args[0]) === \"string\") {\n\n if (indexOf(args[0], allowedMethods) < 0) {\n throw \"Unknown method: \" + args[0];\n }\n\n value = undefined;\n select2 = $(this).data(\"select2\");\n if (select2 === undefined) return;\n\n method=args[0];\n\n if (method === \"container\") {\n value = select2.container;\n } else if (method === \"dropdown\") {\n value = select2.dropdown;\n } else {\n if (methodsMap[method]) method = methodsMap[method];\n\n value = select2[method].apply(select2, args.slice(1));\n }\n if (indexOf(args[0], valueMethods) >= 0\n || (indexOf(args[0], propertyMethods) >= 0 && args.length == 1)) {\n return false; // abort the iteration, ready to return first matched value\n }\n } else {\n throw \"Invalid arguments to select2 plugin: \" + args;\n }\n });\n return (value === undefined) ? this : value;\n };\n\n // plugin defaults, accessible to users\n $.fn.select2.defaults = {\n width: \"copy\",\n loadMorePadding: 0,\n closeOnSelect: true,\n openOnEnter: true,\n containerCss: {},\n dropdownCss: {},\n containerCssClass: \"\",\n dropdownCssClass: \"\",\n formatResult: function(result, container, query, escapeMarkup) {\n var markup=[];\n markMatch(result.text, query.term, markup, escapeMarkup);\n return markup.join(\"\");\n },\n formatSelection: function (data, container, escapeMarkup) {\n return data ? escapeMarkup(data.text) : undefined;\n },\n sortResults: function (results, container, query) {\n return results;\n },\n formatResultCssClass: function(data) {return data.css;},\n formatSelectionCssClass: function(data, container) {return undefined;},\n minimumResultsForSearch: 0,\n minimumInputLength: 0,\n maximumInputLength: null,\n maximumSelectionSize: 0,\n id: function (e) { return e == undefined ? null : e.id; },\n matcher: function(term, text) {\n return stripDiacritics(''+text).toUpperCase().indexOf(stripDiacritics(''+term).toUpperCase()) >= 0;\n },\n separator: \",\",\n tokenSeparators: [],\n tokenizer: defaultTokenizer,\n escapeMarkup: defaultEscapeMarkup,\n blurOnChange: false,\n selectOnBlur: false,\n adaptContainerCssClass: function(c) { return c; },\n adaptDropdownCssClass: function(c) { return null; },\n nextSearchTerm: function(selectedObject, currentSearchTerm) { return undefined; },\n searchInputPlaceholder: '',\n createSearchChoicePosition: 'top',\n shouldFocusInput: function (instance) {\n // Attempt to detect touch devices\n var supportsTouchEvents = (('ontouchstart' in window) ||\n (navigator.msMaxTouchPoints > 0));\n\n // Only devices which support touch events should be special cased\n if (!supportsTouchEvents) {\n return true;\n }\n\n // Never focus the input if search is disabled\n if (instance.opts.minimumResultsForSearch < 0) {\n return false;\n }\n\n return true;\n }\n };\n\n $.fn.select2.locales = [];\n\n $.fn.select2.locales['en'] = {\n formatMatches: function (matches) { if (matches === 1) { return \"One result is available, press enter to select it.\"; } return matches + \" results are available, use up and down arrow keys to navigate.\"; },\n formatNoMatches: function () { return \"No matches found\"; },\n formatAjaxError: function (jqXHR, textStatus, errorThrown) { return \"Loading failed\"; },\n formatInputTooShort: function (input, min) { var n = min - input.length; return \"Please enter \" + n + \" or more character\" + (n == 1 ? \"\" : \"s\"); },\n formatInputTooLong: function (input, max) { var n = input.length - max; return \"Please delete \" + n + \" character\" + (n == 1 ? \"\" : \"s\"); },\n formatSelectionTooBig: function (limit) { return \"You can only select \" + limit + \" item\" + (limit == 1 ? \"\" : \"s\"); },\n formatLoadMore: function (pageNumber) { return \"Loading more results…\"; },\n formatSearching: function () { return \"Searching…\"; },\n };\n\n $.extend($.fn.select2.defaults, $.fn.select2.locales['en']);\n\n $.fn.select2.ajaxDefaults = {\n transport: $.ajax,\n params: {\n type: \"GET\",\n cache: false,\n dataType: \"json\"\n }\n };\n\n // exports\n window.Select2 = {\n query: {\n ajax: ajax,\n local: local,\n tags: tags\n }, util: {\n debounce: debounce,\n markMatch: markMatch,\n escapeMarkup: defaultEscapeMarkup,\n stripDiacritics: stripDiacritics\n }, \"class\": {\n \"abstract\": AbstractSelect2,\n \"single\": SingleSelect2,\n \"multi\": MultiSelect2\n }\n };\n\n}(jQuery));\n"]} \ No newline at end of file diff --git a/static/maps/libs/raven.js.map b/static/maps/libs/raven.js.map index e31cbd1610d..2f066b273ef 100644 --- a/static/maps/libs/raven.js.map +++ b/static/maps/libs/raven.js.map @@ -1 +1 @@ -{"version":3,"file":"raven.js","sources":["../../src/libs/raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"_dereq_","stringify","obj","replacer","spaces","cycleReplacer","JSON","serializer","stack","keys","key","value","slice","indexOf","join","thisPos","splice","push","getSerialize",2,"RavenConfigError","message","name","prototype","constructor",3,"wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","arguments","msg","data","logger","extra","Function","apply",4,"now","Date","_hasJSON","_hasDocument","document","_lastCapturedException","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","crossOrigin","collectWindowErrors","maxMessageLength","stackTraceLimit","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_breadcrumbLimit","_lastCapturedEvent","_keypressTimeout","_location","location","_lastHref","href","method","TraceKit","utils","isFunction","isUndefined","isError","isEmptyObject","hasKey","joinRegExp","each","objectMerge","truncate","urlencode","uuid4","htmlTreeAsString","parseUrl","isString","wrapConsoleMethod","dsnKeys","split","dsnPattern","VERSION","debug","config","dsn","options","_logDebug","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_wrapBuiltIns","_drainPlugins","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__inner__","uninstall","_restoreBuiltIns","ex","captureMessage","computeStackTrace","_handleStackInfo","ex1","test","_send","captureBreadcrumb","crumb","timestamp","shift","addPlugin","plugin","pluginArgs","Array","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","release","setDataCallback","original","dataCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","setTimeout","_triggerEvent","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_breadcrumbEventHandler","evtName","target","elem","category","_keypressEventHandler","debounceDuration","tagName","timeout","clearTimeout","_captureUrlChange","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","fill","replacement","noUndo","orig","wrapTimeFn","originalCallback","wrapEventTarget","proto","hasOwnProperty","fn","capture","secure","handleEvent","err","before","wrapProp","prop","xhr","requestAnimationFrame","cb","addEventListener","attachEvent","eventTargets","xhrproto","XMLHttpRequest","origOpen","url","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","type","props","j","onreadystatechange","chrome","isChromePackagedApp","app","runtime","hasPushState","history","pushState","oldOnPopState","onpopstate","currentHref","origPushState","consoleMethodCallback","log","_","$","jQuery","ready","builtin","installer","concat","str","m","exec","allowSecretKey","port","stackInfo","frames","frame","_normalizeFrame","_processException","lineno","normalized","filename","line","colno","column","function","in_app","fileurl","stacktrace","reverse","exception","values","culprit","_trimPacket","max","_getHttpData","httpData","headers","User-Agent","navigator","userAgent","referrer","Referer","globalOptions","baseData","project","platform","request","breadcrumbs","serverName","server_name","event_id","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","opts","handler","hasCORS","XDomainRequest","replace","onload","open","send","setUser","setReleaseContext","6","7",5,"RavenConstructor","_Raven","noConflict","what","objectPrototype","toString","isObject","obj1","obj2","object","patterns","pattern","sources","len","source","RegExp","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","id","attrWhitelist","getAttribute","Object","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","installGlobalHandler","handlers","unsubscribe","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","parts","element","gecko","winjs","lines","isNative","columnNumber","computeStackTraceFromStacktraceProp","opera10Regex","opera11Regex","computeStackTraceFromOperaMultiLineMessage","lineRE1","lineRE2","lineRE3","getElementsByTagName","item","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","functionName","funcs","recursion","curr","caller","input","substring","result","sourceURL","fileName","lineNumber","description"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["libs/raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","stringify","obj","replacer","spaces","cycleReplacer","JSON","serializer","stack","keys","key","value","slice","indexOf","join","thisPos","splice","push","Infinity","getSerialize","2","RavenConfigError","message","name","prototype","constructor","3","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","arguments","msg","data","logger","extra","Function","apply","4","now","Date","_hasJSON","_hasDocument","document","_lastCapturedException","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","crossOrigin","collectWindowErrors","maxMessageLength","stackTraceLimit","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_breadcrumbLimit","_lastCapturedEvent","_keypressTimeout","_location","location","_lastHref","href","method","TraceKit","utils","isFunction","isUndefined","isError","isEmptyObject","hasKey","joinRegExp","each","objectMerge","truncate","urlencode","uuid4","htmlTreeAsString","parseUrl","isString","wrapConsoleMethod","dsnKeys","split","dsnPattern","VERSION","debug","config","dsn","options","_logDebug","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_wrapBuiltIns","_drainPlugins","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__inner__","uninstall","_restoreBuiltIns","ex","captureMessage","computeStackTrace","_handleStackInfo","ex1","test","_send","captureBreadcrumb","crumb","timestamp","shift","addPlugin","plugin","pluginArgs","Array","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","release","setDataCallback","original","dataCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","setTimeout","_triggerEvent","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_breadcrumbEventHandler","evtName","target","elem","category","_keypressEventHandler","tagName","timeout","clearTimeout","_captureUrlChange","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","fill","replacement","noUndo","orig","wrapTimeFn","fn","originalCallback","wrapProp","prop","xhr","requestAnimationFrame","cb","addEventListener","attachEvent","eventTargets","proto","hasOwnProperty","capture","secure","handleEvent","err","before","xhrproto","XMLHttpRequest","origOpen","url","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","type","props","j","onreadystatechange","chrome","app","runtime","history","pushState","oldOnPopState","onpopstate","currentHref","origPushState","consoleMethodCallback","log","_","$","jQuery","ready","builtin","installer","concat","str","m","exec","allowSecretKey","port","stackInfo","frames","frame","_normalizeFrame","_processException","lineno","normalized","filename","line","colno","column","function","in_app","fileurl","stacktrace","reverse","exception","values","culprit","_trimPacket","max","_getHttpData","httpData","headers","User-Agent","navigator","userAgent","referrer","Referer","globalOptions","baseData","project","platform","request","breadcrumbs","serverName","server_name","event_id","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","opts","handler","XDomainRequest","replace","onload","open","send","setUser","setReleaseContext","6","7","5","RavenConstructor","_Raven","noConflict","what","objectPrototype","toString","isObject","obj1","obj2","object","patterns","pattern","sources","len","source","RegExp","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","nextStr","out","height","sepLength","htmlElementAsString","parentNode","className","classes","attr","id","attrWhitelist","getAttribute","Object","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","installGlobalHandler","handlers","unsubscribe","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","parts","element","gecko","winjs","lines","isNative","columnNumber","computeStackTraceFromStacktraceProp","opera10Regex","opera11Regex","computeStackTraceFromOperaMultiLineMessage","lineRE1","lineRE2","lineRE3","getElementsByTagName","item","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","functionName","funcs","recursion","curr","caller","input","substring","result","sourceURL","fileName","lineNumber","description"],"mappings":"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","file":"../../scripts/libs/raven.js","sourcesContent":["/*! Raven.js 3.3.0 (74c6c03) | github.com/getsentry/raven-js */\n\n/*\n * Includes TraceKit\n * https://github.com/getsentry/TraceKit\n *\n * Copyright 2016 Matt Robenolt and other contributors\n * Released under the BSD license\n * https://github.com/getsentry/raven-js/blob/master/LICENSE\n *\n */\n\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 0) {\n var thisPos = stack.indexOf(this)\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this)\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)\n if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value)\n }\n else stack.push(value)\n\n return replacer == null ? value : replacer.call(this, key, value)\n }\n}\n\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\n\nfunction RavenConfigError(message) {\n this.name = 'RavenConfigError';\n this.message = message;\n}\nRavenConfigError.prototype = new Error();\nRavenConfigError.prototype.constructor = RavenConfigError;\n\nmodule.exports = RavenConfigError;\n\n},{}],3:[function(_dereq_,module,exports){\n'use strict';\n\nvar wrapMethod = function(console, level, callback) {\n var originalConsoleLevel = console[level];\n var originalConsole = console;\n\n if (!(level in console)) {\n return;\n }\n\n var sentryLevel = level === 'warn'\n ? 'warning'\n : level;\n\n console[level] = function () {\n var args = [].slice.call(arguments);\n\n var msg = '' + args.join(' ');\n var data = {level: sentryLevel, logger: 'console', extra: {'arguments': args}};\n callback && callback(msg, data);\n\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n // IE9 doesn't allow calling apply on console functions directly\n // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193\n Function.prototype.apply.call(\n originalConsoleLevel,\n originalConsole,\n args\n );\n }\n };\n};\n\nmodule.exports = {\n wrapMethod: wrapMethod\n};\n\n},{}],4:[function(_dereq_,module,exports){\n/*global XDomainRequest:false*/\n'use strict';\n\nvar TraceKit = _dereq_(7);\nvar RavenConfigError = _dereq_(2);\nvar utils = _dereq_(6);\nvar stringify = _dereq_(1);\n\nvar isFunction = utils.isFunction;\nvar isUndefined = utils.isUndefined;\nvar isError = utils.isError;\nvar isEmptyObject = utils.isEmptyObject;\nvar hasKey = utils.hasKey;\nvar joinRegExp = utils.joinRegExp;\nvar each = utils.each;\nvar objectMerge = utils.objectMerge;\nvar truncate = utils.truncate;\nvar urlencode = utils.urlencode;\nvar uuid4 = utils.uuid4;\nvar htmlTreeAsString = utils.htmlTreeAsString;\nvar parseUrl = utils.parseUrl;\nvar isString = utils.isString;\n\nvar wrapConsoleMethod = _dereq_(3).wrapMethod;\n\nvar dsnKeys = 'source protocol user pass host port path'.split(' '),\n dsnPattern = /^(?:(\\w+):)?\\/\\/(?:(\\w+)(:\\w+)?@)?([\\w\\.-]+)(?::(\\d+))?(\\/.*)/;\n\nfunction now() {\n return +new Date();\n}\n\n// First, check for JSON support\n// If there is no JSON, we no-op the core features of Raven\n// since JSON is required to encode the payload\nfunction Raven() {\n this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify);\n // Raven can run in contexts where there's no document (react-native)\n this._hasDocument = typeof document !== 'undefined';\n this._lastCapturedException = null;\n this._lastEventId = null;\n this._globalServer = null;\n this._globalKey = null;\n this._globalProject = null;\n this._globalContext = {};\n this._globalOptions = {\n logger: 'javascript',\n ignoreErrors: [],\n ignoreUrls: [],\n whitelistUrls: [],\n includePaths: [],\n crossOrigin: 'anonymous',\n collectWindowErrors: true,\n maxMessageLength: 0,\n stackTraceLimit: 50\n };\n this._ignoreOnError = 0;\n this._isRavenInstalled = false;\n this._originalErrorStackTraceLimit = Error.stackTraceLimit;\n // capture references to window.console *and* all its methods first\n // before the console plugin has a chance to monkey patch\n this._originalConsole = window.console || {};\n this._originalConsoleMethods = {};\n this._plugins = [];\n this._startTime = now();\n this._wrappedBuiltIns = [];\n this._breadcrumbs = [];\n this._breadcrumbLimit = 20;\n this._lastCapturedEvent = null;\n this._keypressTimeout;\n this._location = window.location;\n this._lastHref = this._location && this._location.href;\n\n for (var method in this._originalConsole) { // eslint-disable-line guard-for-in\n this._originalConsoleMethods[method] = this._originalConsole[method];\n }\n}\n\n/*\n * The core Raven singleton\n *\n * @this {Raven}\n */\n\nRaven.prototype = {\n // Hardcode version string so that raven source can be loaded directly via\n // webpack (using a build step causes webpack #1617). Grunt verifies that\n // this value matches package.json during build.\n // See: https://github.com/getsentry/raven-js/issues/465\n VERSION: '3.3.0',\n\n debug: false,\n\n TraceKit: TraceKit, // alias to TraceKit\n\n /*\n * Configure Raven with a DSN and extra options\n *\n * @param {string} dsn The public Sentry DSN\n * @param {object} options Optional set of of global options [optional]\n * @return {Raven}\n */\n config: function(dsn, options) {\n var self = this;\n\n if (this._globalServer) {\n this._logDebug('error', 'Error: Raven has already been configured');\n return this;\n }\n if (!dsn) return this;\n\n // merge in options\n if (options) {\n each(options, function(key, value){\n // tags and extra are special and need to be put into context\n if (key === 'tags' || key === 'extra') {\n self._globalContext[key] = value;\n } else {\n self._globalOptions[key] = value;\n }\n });\n }\n\n var uri = this._parseDSN(dsn),\n lastSlash = uri.path.lastIndexOf('/'),\n path = uri.path.substr(1, lastSlash);\n\n this._dsn = dsn;\n\n // \"Script error.\" is hard coded into browsers for errors that it can't read.\n // this is the result of a script being pulled in from an external domain and CORS.\n this._globalOptions.ignoreErrors.push(/^Script error\\.?$/);\n this._globalOptions.ignoreErrors.push(/^Javascript error: Script error\\.? on line 0$/);\n\n // join regexp rules into one big rule\n this._globalOptions.ignoreErrors = joinRegExp(this._globalOptions.ignoreErrors);\n this._globalOptions.ignoreUrls = this._globalOptions.ignoreUrls.length ? joinRegExp(this._globalOptions.ignoreUrls) : false;\n this._globalOptions.whitelistUrls = this._globalOptions.whitelistUrls.length ? joinRegExp(this._globalOptions.whitelistUrls) : false;\n this._globalOptions.includePaths = joinRegExp(this._globalOptions.includePaths);\n\n this._globalKey = uri.user;\n this._globalSecret = uri.pass && uri.pass.substr(1);\n this._globalProject = uri.path.substr(lastSlash + 1);\n\n this._globalServer = this._getGlobalServer(uri);\n\n this._globalEndpoint = this._globalServer +\n '/' + path + 'api/' + this._globalProject + '/store/';\n\n TraceKit.collectWindowErrors = !!this._globalOptions.collectWindowErrors;\n\n // return for chaining\n return this;\n },\n\n /*\n * Installs a global window.onerror error handler\n * to capture and report uncaught exceptions.\n * At this point, install() is required to be called due\n * to the way TraceKit is set up.\n *\n * @return {Raven}\n */\n install: function() {\n var self = this;\n if (this.isSetup() && !this._isRavenInstalled) {\n TraceKit.report.subscribe(function () {\n self._handleOnErrorStackInfo.apply(self, arguments);\n });\n this._wrapBuiltIns();\n\n // Install all of the plugins\n this._drainPlugins();\n\n this._isRavenInstalled = true;\n }\n\n Error.stackTraceLimit = this._globalOptions.stackTraceLimit;\n return this;\n },\n\n /*\n * Wrap code within a context so Raven can capture errors\n * reliably across domains that is executed immediately.\n *\n * @param {object} options A specific set of options for this context [optional]\n * @param {function} func The callback to be immediately executed within the context\n * @param {array} args An array of arguments to be called with the callback [optional]\n */\n context: function(options, func, args) {\n if (isFunction(options)) {\n args = func || [];\n func = options;\n options = undefined;\n }\n\n return this.wrap(options, func).apply(this, args);\n },\n\n /*\n * Wrap code within a context and returns back a new function to be executed\n *\n * @param {object} options A specific set of options for this context [optional]\n * @param {function} func The function to be wrapped in a new context\n * @param {function} func A function to call before the try/catch wrapper [optional, private]\n * @return {function} The newly wrapped functions with a context\n */\n wrap: function(options, func, _before) {\n var self = this;\n // 1 argument has been passed, and it's not a function\n // so just return it\n if (isUndefined(func) && !isFunction(options)) {\n return options;\n }\n\n // options is optional\n if (isFunction(options)) {\n func = options;\n options = undefined;\n }\n\n // At this point, we've passed along 2 arguments, and the second one\n // is not a function either, so we'll just return the second argument.\n if (!isFunction(func)) {\n return func;\n }\n\n // We don't wanna wrap it twice!\n try {\n if (func.__raven__) {\n return func;\n }\n } catch (e) {\n // Just accessing the __raven__ prop in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return func;\n }\n\n // If this has already been wrapped in the past, return that\n if (func.__raven_wrapper__ ){\n return func.__raven_wrapper__ ;\n }\n\n function wrapped() {\n var args = [], i = arguments.length,\n deep = !options || options && options.deep !== false;\n\n if (_before && isFunction(_before)) {\n _before.apply(this, arguments);\n }\n\n // Recursively wrap all of a function's arguments that are\n // functions themselves.\n while(i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i];\n\n try {\n return func.apply(this, args);\n } catch(e) {\n self._ignoreNextOnError();\n self.captureException(e, options);\n throw e;\n }\n }\n\n // copy over properties of the old function\n for (var property in func) {\n if (hasKey(func, property)) {\n wrapped[property] = func[property];\n }\n }\n wrapped.prototype = func.prototype;\n\n func.__raven_wrapper__ = wrapped;\n // Signal that this function has been wrapped already\n // for both debugging and to prevent it to being wrapped twice\n wrapped.__raven__ = true;\n wrapped.__inner__ = func;\n\n return wrapped;\n },\n\n /*\n * Uninstalls the global error handler.\n *\n * @return {Raven}\n */\n uninstall: function() {\n TraceKit.report.uninstall();\n\n this._restoreBuiltIns();\n\n Error.stackTraceLimit = this._originalErrorStackTraceLimit;\n this._isRavenInstalled = false;\n\n return this;\n },\n\n /*\n * Manually capture an exception and send it over to Sentry\n *\n * @param {error} ex An exception to be logged\n * @param {object} options A specific set of options for this error [optional]\n * @return {Raven}\n */\n captureException: function(ex, options) {\n // If not an Error is passed through, recall as a message instead\n if (!isError(ex)) return this.captureMessage(ex, options);\n\n // Store the raw exception object for potential debugging and introspection\n this._lastCapturedException = ex;\n\n // TraceKit.report will re-raise any exception passed to it,\n // which means you have to wrap it in try/catch. Instead, we\n // can wrap it here and only re-raise if TraceKit.report\n // raises an exception different from the one we asked to\n // report on.\n try {\n var stack = TraceKit.computeStackTrace(ex);\n this._handleStackInfo(stack, options);\n } catch(ex1) {\n if(ex !== ex1) {\n throw ex1;\n }\n }\n\n return this;\n },\n\n /*\n * Manually send a message to Sentry\n *\n * @param {string} msg A plain message to be captured in Sentry\n * @param {object} options A specific set of options for this message [optional]\n * @return {Raven}\n */\n captureMessage: function(msg, options) {\n // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an\n // early call; we'll error on the side of logging anything called before configuration since it's\n // probably something you should see:\n if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) {\n return;\n }\n\n // Fire away!\n this._send(\n objectMerge({\n message: msg + '' // Make sure it's actually a string\n }, options)\n );\n\n return this;\n },\n\n captureBreadcrumb: function (obj) {\n var crumb = objectMerge({\n timestamp: now() / 1000\n }, obj);\n\n this._breadcrumbs.push(crumb);\n if (this._breadcrumbs.length > this._breadcrumbLimit) {\n this._breadcrumbs.shift();\n }\n },\n\n addPlugin: function(plugin /*arg1, arg2, ... argN*/) {\n var pluginArgs = Array.prototype.slice.call(arguments, 1);\n\n this._plugins.push([plugin, pluginArgs]);\n if (this._isRavenInstalled) {\n this._drainPlugins();\n }\n\n return this;\n },\n\n /*\n * Set/clear a user to be sent along with the payload.\n *\n * @param {object} user An object representing user data [optional]\n * @return {Raven}\n */\n setUserContext: function(user) {\n // Intentionally do not merge here since that's an unexpected behavior.\n this._globalContext.user = user;\n\n return this;\n },\n\n /*\n * Merge extra attributes to be sent along with the payload.\n *\n * @param {object} extra An object representing extra data [optional]\n * @return {Raven}\n */\n setExtraContext: function(extra) {\n this._mergeContext('extra', extra);\n\n return this;\n },\n\n /*\n * Merge tags to be sent along with the payload.\n *\n * @param {object} tags An object representing tags [optional]\n * @return {Raven}\n */\n setTagsContext: function(tags) {\n this._mergeContext('tags', tags);\n\n return this;\n },\n\n /*\n * Clear all of the context.\n *\n * @return {Raven}\n */\n clearContext: function() {\n this._globalContext = {};\n\n return this;\n },\n\n /*\n * Get a copy of the current context. This cannot be mutated.\n *\n * @return {object} copy of context\n */\n getContext: function() {\n // lol javascript\n return JSON.parse(stringify(this._globalContext));\n },\n\n\n /*\n * Set environment of application\n *\n * @param {string} environment Typically something like 'production'.\n * @return {Raven}\n */\n setEnvironment: function(environment) {\n this._globalOptions.environment = environment;\n\n return this;\n },\n\n /*\n * Set release version of application\n *\n * @param {string} release Typically something like a git SHA to identify version\n * @return {Raven}\n */\n setRelease: function(release) {\n this._globalOptions.release = release;\n\n return this;\n },\n\n /*\n * Set the dataCallback option\n *\n * @param {function} callback The callback to run which allows the\n * data blob to be mutated before sending\n * @return {Raven}\n */\n setDataCallback: function(callback) {\n var original = this._globalOptions.dataCallback;\n this._globalOptions.dataCallback = isFunction(callback)\n ? function (data) { return callback(data, original); }\n : callback;\n\n return this;\n },\n\n /*\n * Set the shouldSendCallback option\n *\n * @param {function} callback The callback to run which allows\n * introspecting the blob before sending\n * @return {Raven}\n */\n setShouldSendCallback: function(callback) {\n var original = this._globalOptions.shouldSendCallback;\n this._globalOptions.shouldSendCallback = isFunction(callback)\n ? function (data) { return callback(data, original); }\n : callback;\n\n return this;\n },\n\n /**\n * Override the default HTTP transport mechanism that transmits data\n * to the Sentry server.\n *\n * @param {function} transport Function invoked instead of the default\n * `makeRequest` handler.\n *\n * @return {Raven}\n */\n setTransport: function(transport) {\n this._globalOptions.transport = transport;\n\n return this;\n },\n\n /*\n * Get the latest raw exception that was captured by Raven.\n *\n * @return {error}\n */\n lastException: function() {\n return this._lastCapturedException;\n },\n\n /*\n * Get the last event id\n *\n * @return {string}\n */\n lastEventId: function() {\n return this._lastEventId;\n },\n\n /*\n * Determine if Raven is setup and ready to go.\n *\n * @return {boolean}\n */\n isSetup: function() {\n if (!this._hasJSON) return false; // needs JSON support\n if (!this._globalServer) {\n if (!this.ravenNotConfiguredError) {\n this.ravenNotConfiguredError = true;\n this._logDebug('error', 'Error: Raven has not been configured.');\n }\n return false;\n }\n return true;\n },\n\n afterLoad: function () {\n // TODO: remove window dependence?\n\n // Attempt to initialize Raven on load\n var RavenConfig = window.RavenConfig;\n if (RavenConfig) {\n this.config(RavenConfig.dsn, RavenConfig.config).install();\n }\n },\n\n showReportDialog: function (options) {\n if (!window.document) // doesn't work without a document (React native)\n return;\n\n options = options || {};\n\n var lastEventId = options.eventId || this.lastEventId();\n if (!lastEventId) {\n throw new RavenConfigError('Missing eventId');\n }\n\n var dsn = options.dsn || this._dsn;\n if (!dsn) {\n throw new RavenConfigError('Missing DSN');\n }\n\n var encode = encodeURIComponent;\n var qs = '';\n qs += '?eventId=' + encode(lastEventId);\n qs += '&dsn=' + encode(dsn);\n\n var user = options.user || this._globalContext.user;\n if (user) {\n if (user.name) qs += '&name=' + encode(user.name);\n if (user.email) qs += '&email=' + encode(user.email);\n }\n\n var globalServer = this._getGlobalServer(this._parseDSN(dsn));\n\n var script = document.createElement('script');\n script.async = true;\n script.src = globalServer + '/api/embed/error-page/' + qs;\n (document.head || document.body).appendChild(script);\n },\n\n /**** Private functions ****/\n _ignoreNextOnError: function () {\n var self = this;\n this._ignoreOnError += 1;\n setTimeout(function () {\n // onerror should trigger before setTimeout\n self._ignoreOnError -= 1;\n });\n },\n\n _triggerEvent: function(eventType, options) {\n // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it\n var evt, key;\n\n if (!this._hasDocument)\n return;\n\n options = options || {};\n\n eventType = 'raven' + eventType.substr(0,1).toUpperCase() + eventType.substr(1);\n\n if (document.createEvent) {\n evt = document.createEvent('HTMLEvents');\n evt.initEvent(eventType, true, true);\n } else {\n evt = document.createEventObject();\n evt.eventType = eventType;\n }\n\n for (key in options) if (hasKey(options, key)) {\n evt[key] = options[key];\n }\n\n if (document.createEvent) {\n // IE9 if standards\n document.dispatchEvent(evt);\n } else {\n // IE8 regardless of Quirks or Standards\n // IE9 if quirks\n try {\n document.fireEvent('on' + evt.eventType.toLowerCase(), evt);\n } catch(e) {\n // Do nothing\n }\n }\n },\n\n /**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param evtName the event name (e.g. \"click\")\n * @returns {Function}\n * @private\n */\n _breadcrumbEventHandler: function(evtName) {\n var self = this;\n return function (evt) {\n // reset keypress timeout; e.g. triggering a 'click' after\n // a 'keypress' will reset the keypress debounce so that a new\n // set of keypresses can be recorded\n self._keypressTimeout = null;\n\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors). Ignore if we've\n // already captured the event.\n if (self._lastCapturedEvent === evt)\n return;\n\n self._lastCapturedEvent = evt;\n var elem = evt.target;\n\n var target;\n\n // try/catch htmlTreeAsString because it's particularly complicated, and\n // just accessing the DOM incorrectly can throw an exception in some circumstances.\n try {\n target = htmlTreeAsString(elem);\n } catch (e) {\n target = '';\n }\n\n self.captureBreadcrumb({\n category: 'ui.' + evtName, // e.g. ui.click, ui.input\n message: target\n });\n };\n },\n\n /**\n * Wraps addEventListener to capture keypress UI events\n * @returns {Function}\n * @private\n */\n _keypressEventHandler: function() {\n var self = this,\n debounceDuration = 1000; // milliseconds\n\n // TODO: if somehow user switches keypress target before\n // debounce timeout is triggered, we will only capture\n // a single breadcrumb from the FIRST target (acceptable?)\n\n return function (evt) {\n var target = evt.target,\n tagName = target && target.tagName;\n\n // only consider keypress events on actual input elements\n // this will disregard keypresses targeting body (e.g. tabbing\n // through elements, hotkeys, etc)\n if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA')\n return;\n\n // record first keypress in a series, but ignore subsequent\n // keypresses until debounce clears\n var timeout = self._keypressTimeout;\n if (!timeout) {\n self._breadcrumbEventHandler('input')(evt);\n }\n clearTimeout(timeout);\n self._keypressTimeout = setTimeout(function () {\n self._keypressTimeout = null;\n }, debounceDuration);\n };\n },\n\n /**\n * Captures a breadcrumb of type \"navigation\", normalizing input URLs\n * @param to the originating URL\n * @param from the target URL\n * @private\n */\n _captureUrlChange: function(from, to) {\n var parsedLoc = parseUrl(this._location.href);\n var parsedTo = parseUrl(to);\n var parsedFrom = parseUrl(from);\n\n // because onpopstate only tells you the \"new\" (to) value of location.href, and\n // not the previous (from) value, we need to track the value of the current URL\n // state ourselves\n this._lastHref = to;\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host)\n to = parsedTo.relative;\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host)\n from = parsedFrom.relative;\n\n this.captureBreadcrumb({\n category: 'navigation',\n data: {\n to: to,\n from: from\n }\n });\n },\n\n /**\n * Install any queued plugins\n */\n _wrapBuiltIns: function() {\n var self = this;\n\n function fill(obj, name, replacement, noUndo) {\n var orig = obj[name];\n obj[name] = replacement(orig);\n if (!noUndo) {\n self._wrappedBuiltIns.push([obj, name, orig]);\n }\n }\n\n function wrapTimeFn(orig) {\n return function (fn, t) { // preserve arity\n // Make a copy of the arguments to prevent deoptimization\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n var args = new Array(arguments.length);\n for(var i = 0; i < args.length; ++i) {\n args[i] = arguments[i];\n }\n var originalCallback = args[0];\n if (isFunction(originalCallback)) {\n args[0] = self.wrap(originalCallback);\n }\n\n // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it\n // also supports only two arguments and doesn't care what this is, so we\n // can just call the original function directly.\n if (orig.apply) {\n return orig.apply(this, args);\n } else {\n return orig(args[0], args[1]);\n }\n };\n }\n\n function wrapEventTarget(global) {\n var proto = window[global] && window[global].prototype;\n if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) {\n fill(proto, 'addEventListener', function(orig) {\n return function (evtName, fn, capture, secure) { // preserve arity\n try {\n if (fn && fn.handleEvent) {\n fn.handleEvent = self.wrap(fn.handleEvent);\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n\n // TODO: more than just click\n var before;\n if (global === 'EventTarget' || global === 'Node') {\n if (evtName === 'click'){\n before = self._breadcrumbEventHandler(evtName);\n } else if (evtName === 'keypress') {\n before = self._keypressEventHandler();\n }\n }\n return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure);\n };\n });\n fill(proto, 'removeEventListener', function (orig) {\n return function (evt, fn, capture, secure) {\n fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn);\n return orig.call(this, evt, fn, capture, secure);\n };\n });\n }\n }\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && isFunction(xhr[prop])) {\n fill(xhr, prop, function (orig) {\n return self.wrap(orig);\n }, true /* noUndo */); // don't track filled methods on XHR instances\n }\n }\n\n fill(window, 'setTimeout', wrapTimeFn);\n fill(window, 'setInterval', wrapTimeFn);\n if (window.requestAnimationFrame) {\n fill(window, 'requestAnimationFrame', function (orig) {\n return function (cb) {\n return orig(self.wrap(cb));\n };\n });\n }\n\n // Capture breadcrubms from any click that is unhandled / bubbled up all the way\n // to the document. Do this before we instrument addEventListener.\n if (this._hasDocument) {\n if (document.addEventListener) {\n document.addEventListener('click', self._breadcrumbEventHandler('click'), false);\n document.addEventListener('keypress', self._keypressEventHandler(), false);\n }\n else {\n // IE8 Compatibility\n document.attachEvent('onclick', self._breadcrumbEventHandler('click'));\n document.attachEvent('onkeypress', self._keypressEventHandler());\n }\n }\n\n // event targets borrowed from bugsnag-js:\n // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666\n var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'];\n for (var i = 0; i < eventTargets.length; i++) {\n wrapEventTarget(eventTargets[i]);\n }\n\n if ('XMLHttpRequest' in window) {\n var xhrproto = XMLHttpRequest.prototype;\n fill(xhrproto, 'open', function(origOpen) {\n return function (method, url) { // preserve arity\n\n // if Sentry key appears in URL, don't capture\n if (isString(url) && url.indexOf(self._globalKey) === -1) {\n this.__raven_xhr = {\n method: method,\n url: url,\n status_code: null\n };\n }\n\n return origOpen.apply(this, arguments);\n };\n });\n\n fill(xhrproto, 'send', function(origSend) {\n return function (data) { // preserve arity\n var xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__raven_xhr && (xhr.readyState === 1 || xhr.readyState === 4)) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhr.__raven_xhr.status_code = xhr.status;\n } catch (e) { /* do nothing */ }\n self.captureBreadcrumb({\n type: 'http',\n category: 'xhr',\n data: xhr.__raven_xhr\n });\n }\n }\n\n var props = ['onload', 'onerror', 'onprogress'];\n for (var j = 0; j < props.length; j++) {\n wrapProp(props[j], xhr);\n }\n\n if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) {\n fill(xhr, 'onreadystatechange', function (orig) {\n return self.wrap(orig, undefined, onreadystatechangeHandler);\n }, true /* noUndo */);\n } else {\n // if onreadystatechange wasn't actually set by the page on this xhr, we\n // are free to set our own and capture the breadcrumb\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n\n return origSend.apply(this, arguments);\n };\n });\n }\n\n // record navigation (URL) changes\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var chrome = window.chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n var hasPushState = !isChromePackagedApp && window.history && history.pushState;\n if (hasPushState) {\n // TODO: remove onpopstate handler on uninstall()\n var oldOnPopState = window.onpopstate;\n window.onpopstate = function () {\n var currentHref = self._location.href;\n self._captureUrlChange(self._lastHref, currentHref);\n\n if (oldOnPopState) {\n return oldOnPopState.apply(this, arguments);\n }\n };\n\n fill(history, 'pushState', function (origPushState) {\n // note history.pushState.length is 0; intentionally not declaring\n // params to preserve 0 arity\n return function(/* state, title, url */) {\n var url = arguments.length > 2 ? arguments[2] : undefined;\n\n // url argument is optional\n if (url) {\n // coerce to string (this is what pushState does)\n self._captureUrlChange(self._lastHref, url + '');\n }\n\n return origPushState.apply(this, arguments);\n };\n });\n }\n\n // console\n var consoleMethodCallback = function (msg, data) {\n self.captureBreadcrumb({\n message: msg,\n level: data.level,\n category: 'console'\n });\n };\n\n if ('console' in window && console.log) {\n each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) {\n wrapConsoleMethod(console, level, consoleMethodCallback);\n });\n }\n\n var $ = window.jQuery || window.$;\n if ($ && $.fn && $.fn.ready) {\n fill($.fn, 'ready', function (orig) {\n return function (fn) {\n return orig.call(this, self.wrap(fn));\n };\n });\n }\n },\n\n _restoreBuiltIns: function () {\n // restore any wrapped builtins\n var builtin;\n while (this._wrappedBuiltIns.length) {\n builtin = this._wrappedBuiltIns.shift();\n\n var obj = builtin[0],\n name = builtin[1],\n orig = builtin[2];\n\n obj[name] = orig;\n }\n },\n\n _drainPlugins: function() {\n var self = this;\n\n // FIX ME TODO\n each(this._plugins, function(_, plugin) {\n var installer = plugin[0];\n var args = plugin[1];\n installer.apply(self, [self].concat(args));\n });\n },\n\n _parseDSN: function(str) {\n var m = dsnPattern.exec(str),\n dsn = {},\n i = 7;\n\n try {\n while (i--) dsn[dsnKeys[i]] = m[i] || '';\n } catch(e) {\n throw new RavenConfigError('Invalid DSN: ' + str);\n }\n\n if (dsn.pass && !this._globalOptions.allowSecretKey) {\n throw new RavenConfigError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key');\n }\n\n return dsn;\n },\n\n _getGlobalServer: function(uri) {\n // assemble the endpoint from the uri pieces\n var globalServer = '//' + uri.host +\n (uri.port ? ':' + uri.port : '');\n\n if (uri.protocol) {\n globalServer = uri.protocol + ':' + globalServer;\n }\n return globalServer;\n },\n\n _handleOnErrorStackInfo: function() {\n // if we are intentionally ignoring errors via onerror, bail out\n if (!this._ignoreOnError) {\n this._handleStackInfo.apply(this, arguments);\n }\n },\n\n _handleStackInfo: function(stackInfo, options) {\n var self = this;\n var frames = [];\n\n if (stackInfo.stack && stackInfo.stack.length) {\n each(stackInfo.stack, function(i, stack) {\n var frame = self._normalizeFrame(stack);\n if (frame) {\n frames.push(frame);\n }\n });\n }\n\n this._triggerEvent('handle', {\n stackInfo: stackInfo,\n options: options\n });\n\n this._processException(\n stackInfo.name,\n stackInfo.message,\n stackInfo.url,\n stackInfo.lineno,\n frames.slice(0, this._globalOptions.stackTraceLimit),\n options\n );\n },\n\n _normalizeFrame: function(frame) {\n if (!frame.url) return;\n\n // normalize the frames data\n var normalized = {\n filename: frame.url,\n lineno: frame.line,\n colno: frame.column,\n 'function': frame.func || '?'\n };\n\n normalized.in_app = !( // determine if an exception came from outside of our app\n // first we check the global includePaths list.\n !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) ||\n // Now we check for fun, if the function name is Raven or TraceKit\n /(Raven|TraceKit)\\./.test(normalized['function']) ||\n // finally, we do a last ditch effort and check for raven.min.js\n /raven\\.(min\\.)?js$/.test(normalized.filename)\n );\n\n return normalized;\n },\n\n _processException: function(type, message, fileurl, lineno, frames, options) {\n var stacktrace;\n\n if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(message)) return;\n\n message += '';\n\n if (frames && frames.length) {\n fileurl = frames[0].filename || fileurl;\n // Sentry expects frames oldest to newest\n // and JS sends them as newest to oldest\n frames.reverse();\n stacktrace = {frames: frames};\n } else if (fileurl) {\n stacktrace = {\n frames: [{\n filename: fileurl,\n lineno: lineno,\n in_app: true\n }]\n };\n }\n\n if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) return;\n if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) return;\n\n var data = objectMerge({\n // sentry.interfaces.Exception\n exception: {\n values: [{\n type: type,\n value: message,\n stacktrace: stacktrace\n }]\n },\n culprit: fileurl\n }, options);\n\n // Fire away!\n this._send(data);\n },\n\n _trimPacket: function(data) {\n // For now, we only want to truncate the two different messages\n // but this could/should be expanded to just trim everything\n var max = this._globalOptions.maxMessageLength;\n if (data.message) {\n data.message = truncate(data.message, max);\n }\n if (data.exception) {\n var exception = data.exception.values[0];\n exception.value = truncate(exception.value, max);\n }\n\n return data;\n },\n\n _getHttpData: function() {\n if (!this._hasDocument || !document.location || !document.location.href) {\n return;\n }\n\n var httpData = {\n headers: {\n 'User-Agent': navigator.userAgent\n }\n };\n\n httpData.url = document.location.href;\n\n if (document.referrer) {\n httpData.headers.Referer = document.referrer;\n }\n\n return httpData;\n },\n\n\n _send: function(data) {\n var self = this;\n\n var globalOptions = this._globalOptions;\n\n var baseData = {\n project: this._globalProject,\n logger: globalOptions.logger,\n platform: 'javascript'\n }, httpData = this._getHttpData();\n\n if (httpData) {\n baseData.request = httpData;\n }\n\n data = objectMerge(baseData, data);\n\n // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge\n data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags);\n data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra);\n\n // Send along our own collected metadata with extra\n data.extra['session:duration'] = now() - this._startTime;\n\n if (this._breadcrumbs && this._breadcrumbs.length > 0) {\n // intentionally make shallow copy so that additions\n // to breadcrumbs aren't accidentally sent in this request\n data.breadcrumbs = {\n values: [].slice.call(this._breadcrumbs, 0)\n };\n }\n\n // If there are no tags/extra, strip the key from the payload alltogther.\n if (isEmptyObject(data.tags)) delete data.tags;\n\n if (this._globalContext.user) {\n // sentry.interfaces.User\n data.user = this._globalContext.user;\n }\n\n // Include the environment if it's defined in globalOptions\n if (globalOptions.environment) data.environment = globalOptions.environment;\n\n // Include the release if it's defined in globalOptions\n if (globalOptions.release) data.release = globalOptions.release;\n\n // Include server_name if it's defined in globalOptions\n if (globalOptions.serverName) data.server_name = globalOptions.serverName;\n\n if (isFunction(globalOptions.dataCallback)) {\n data = globalOptions.dataCallback(data) || data;\n }\n\n // Why??????????\n if (!data || isEmptyObject(data)) {\n return;\n }\n\n // Check if the request should be filtered or not\n if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) {\n return;\n }\n\n // Send along an event_id if not explicitly passed.\n // This event_id can be used to reference the error within Sentry itself.\n // Set lastEventId after we know the error should actually be sent\n this._lastEventId = data.event_id || (data.event_id = uuid4());\n\n // Try and clean up the packet before sending by truncating long values\n data = this._trimPacket(data);\n\n this._logDebug('debug', 'Raven about to send:', data);\n\n if (!this.isSetup()) return;\n\n var auth = {\n sentry_version: '7',\n sentry_client: 'raven-js/' + this.VERSION,\n sentry_key: this._globalKey\n };\n if (this._globalSecret) {\n auth.sentry_secret = this._globalSecret;\n }\n\n var exception = data.exception && data.exception.values[0];\n this.captureBreadcrumb({\n category: 'sentry',\n message: exception\n ? (exception.type ? exception.type + ': ' : '') + exception.message\n : data.message,\n event_id: data.event_id,\n level: data.level || 'error' // presume error unless specified\n });\n\n var url = this._globalEndpoint;\n (globalOptions.transport || this._makeRequest).call(this, {\n url: url,\n auth: auth,\n data: data,\n options: globalOptions,\n onSuccess: function success() {\n self._triggerEvent('success', {\n data: data,\n src: url\n });\n },\n onError: function failure() {\n self._triggerEvent('failure', {\n data: data,\n src: url\n });\n }\n });\n },\n\n _makeRequest: function(opts) {\n var request = new XMLHttpRequest();\n\n // if browser doesn't support CORS (e.g. IE7), we are out of luck\n var hasCORS =\n 'withCredentials' in request ||\n typeof XDomainRequest !== 'undefined';\n\n if (!hasCORS) return;\n\n var url = opts.url;\n function handler() {\n if (request.status === 200) {\n if (opts.onSuccess) {\n opts.onSuccess();\n }\n } else if (opts.onError) {\n opts.onError();\n }\n }\n\n if ('withCredentials' in request) {\n request.onreadystatechange = function () {\n if (request.readyState !== 4) {\n return;\n }\n handler();\n };\n } else {\n request = new XDomainRequest();\n // xdomainrequest cannot go http -> https (or vice versa),\n // so always use protocol relative\n url = url.replace(/^https?:/, '');\n\n // onreadystatechange not supported by XDomainRequest\n request.onload = handler;\n }\n\n // NOTE: auth is intentionally sent as part of query string (NOT as custom\n // HTTP header) so as to avoid preflight CORS requests\n request.open('POST', url + '?' + urlencode(opts.auth));\n request.send(stringify(opts.data));\n },\n\n _logDebug: function(level) {\n if (this._originalConsoleMethods[level] && this.debug) {\n // In IE<10 console methods do not have their own 'apply' method\n Function.prototype.apply.call(\n this._originalConsoleMethods[level],\n this._originalConsole,\n [].slice.call(arguments, 1)\n );\n }\n },\n\n _mergeContext: function(key, context) {\n if (isUndefined(context)) {\n delete this._globalContext[key];\n } else {\n this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context);\n }\n }\n};\n\n// Deprecations\nRaven.prototype.setUser = Raven.prototype.setUserContext;\nRaven.prototype.setReleaseContext = Raven.prototype.setRelease;\n\nmodule.exports = Raven;\n\n},{\"1\":1,\"2\":2,\"3\":3,\"6\":6,\"7\":7}],5:[function(_dereq_,module,exports){\n/**\n * Enforces a single instance of the Raven client, and the\n * main entry point for Raven. If you are a consumer of the\n * Raven library, you SHOULD load this file (vs raven.js).\n **/\n\n'use strict';\n\nvar RavenConstructor = _dereq_(4);\n\nvar _Raven = window.Raven;\n\nvar Raven = new RavenConstructor();\n\n/*\n * Allow multiple versions of Raven to be installed.\n * Strip Raven from the global context and returns the instance.\n *\n * @return {Raven}\n */\nRaven.noConflict = function () {\n\twindow.Raven = _Raven;\n\treturn Raven;\n};\n\nRaven.afterLoad();\n\nmodule.exports = Raven;\n\n},{\"4\":4}],6:[function(_dereq_,module,exports){\n/*eslint no-extra-parens:0*/\n'use strict';\n\nvar objectPrototype = Object.prototype;\n\nfunction isUndefined(what) {\n return what === void 0;\n}\n\nfunction isFunction(what) {\n return typeof what === 'function';\n}\n\nfunction isString(what) {\n return objectPrototype.toString.call(what) === '[object String]';\n}\n\nfunction isObject(what) {\n return typeof what === 'object' && what !== null;\n}\n\nfunction isEmptyObject(what) {\n for (var _ in what) return false; // eslint-disable-line guard-for-in, no-unused-vars\n return true;\n}\n\n// Sorta yanked from https://github.com/joyent/node/blob/aa3b4b4/lib/util.js#L560\n// with some tiny modifications\nfunction isError(what) {\n var toString = objectPrototype.toString.call(what);\n return isObject(what) &&\n toString === '[object Error]' ||\n toString === '[object Exception]' || // Firefox NS_ERROR_FAILURE Exceptions\n what instanceof Error;\n}\n\nfunction each(obj, callback) {\n var i, j;\n\n if (isUndefined(obj.length)) {\n for (i in obj) {\n if (hasKey(obj, i)) {\n callback.call(null, i, obj[i]);\n }\n }\n } else {\n j = obj.length;\n if (j) {\n for (i = 0; i < j; i++) {\n callback.call(null, i, obj[i]);\n }\n }\n }\n}\n\nfunction objectMerge(obj1, obj2) {\n if (!obj2) {\n return obj1;\n }\n each(obj2, function(key, value){\n obj1[key] = value;\n });\n return obj1;\n}\n\nfunction truncate(str, max) {\n return !max || str.length <= max ? str : str.substr(0, max) + '\\u2026';\n}\n\n/**\n * hasKey, a better form of hasOwnProperty\n * Example: hasKey(MainHostObject, property) === true/false\n *\n * @param {Object} host object to check property\n * @param {string} key to check\n */\nfunction hasKey(object, key) {\n return objectPrototype.hasOwnProperty.call(object, key);\n}\n\nfunction joinRegExp(patterns) {\n // Combine an array of regular expressions and strings into one large regexp\n // Be mad.\n var sources = [],\n i = 0, len = patterns.length,\n pattern;\n\n for (; i < len; i++) {\n pattern = patterns[i];\n if (isString(pattern)) {\n // If it's a string, we need to escape it\n // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n sources.push(pattern.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1'));\n } else if (pattern && pattern.source) {\n // If it's a regexp already, we want to extract the source\n sources.push(pattern.source);\n }\n // Intentionally skip other cases\n }\n return new RegExp(sources.join('|'), 'i');\n}\n\nfunction urlencode(o) {\n var pairs = [];\n each(o, function(key, value) {\n pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n });\n return pairs.join('&');\n}\n\n// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n// intentionally using regex and not href parsing trick because React Native and other\n// environments where DOM might not be available\nfunction parseUrl(url) {\n var match = url.match(/^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n if (!match) return {};\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n var query = match[6] || '';\n var fragment = match[8] || '';\n return {\n protocol: match[2],\n host: match[4],\n path: match[5],\n relative: match[5] + query + fragment // everything minus origin\n };\n}\nfunction uuid4() {\n var crypto = window.crypto || window.msCrypto;\n\n if (!isUndefined(crypto) && crypto.getRandomValues) {\n // Use window.crypto API if available\n var arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n arr[3] = arr[3] & 0xFFF | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n arr[4] = arr[4] & 0x3FFF | 0x8000;\n\n var pad = function(num) {\n var v = num.toString(16);\n while (v.length < 4) {\n v = '0' + v;\n }\n return v;\n };\n\n return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) +\n pad(arr[5]) + pad(arr[6]) + pad(arr[7]);\n } else {\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0,\n v = c === 'x' ? r : r&0x3|0x8;\n return v.toString(16);\n });\n }\n}\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @param elem\n * @returns {string}\n */\nfunction htmlTreeAsString(elem) {\n var MAX_TRAVERSE_HEIGHT = 5,\n MAX_OUTPUT_LEN = 80,\n out = [],\n height = 0,\n len = 0,\n separator = ' > ',\n sepLength = separator.length,\n nextStr;\n\n while (elem && height++ < MAX_TRAVERSE_HEIGHT) {\n\n nextStr = htmlElementAsString(elem);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || height > 1 && len + (out.length * sepLength) + nextStr.length >= MAX_OUTPUT_LEN) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n elem = elem.parentNode;\n }\n\n return out.reverse().join(separator);\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @param HTMLElement\n * @returns {string}\n */\nfunction htmlElementAsString(elem) {\n var out = [],\n className,\n classes,\n key,\n attr,\n i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n if (elem.id) {\n out.push('#' + elem.id);\n }\n\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(' ');\n for (i = 0; i < classes.length; i++) {\n out.push('.' + classes[i]);\n }\n }\n var attrWhitelist = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < attrWhitelist.length; i++) {\n key = attrWhitelist[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push('[' + key + '=\"' + attr + '\"]');\n }\n }\n return out.join('');\n}\n\nmodule.exports = {\n isUndefined: isUndefined,\n isFunction: isFunction,\n isString: isString,\n isObject: isObject,\n isEmptyObject: isEmptyObject,\n isError: isError,\n each: each,\n objectMerge: objectMerge,\n truncate: truncate,\n hasKey: hasKey,\n joinRegExp: joinRegExp,\n urlencode: urlencode,\n uuid4: uuid4,\n htmlTreeAsString: htmlTreeAsString,\n htmlElementAsString: htmlElementAsString,\n parseUrl: parseUrl\n};\n\n},{}],7:[function(_dereq_,module,exports){\n'use strict';\n\nvar utils = _dereq_(6);\n\nvar hasKey = utils.hasKey;\nvar isString = utils.isString;\nvar isUndefined = utils.isUndefined;\n\n/*\n TraceKit - Cross brower stack traces - github.com/occ/TraceKit\n MIT license\n*/\n\nvar TraceKit = {\n collectWindowErrors: true,\n debug: false\n};\n\n// global reference to slice\nvar _slice = [].slice;\nvar UNKNOWN_FUNCTION = '?';\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:Uncaught (?:exception: )?)?((?:Eval|Internal|Range|Reference|Syntax|Type|URI)Error): ?(.*)$/;\n\nfunction getLocationHref() {\n if (typeof document === 'undefined')\n return '';\n\n return document.location.href;\n}\n\n/**\n * TraceKit.report: cross-browser processing of unhandled exceptions\n *\n * Syntax:\n * TraceKit.report.subscribe(function(stackInfo) { ... })\n * TraceKit.report.unsubscribe(function(stackInfo) { ... })\n * TraceKit.report(exception)\n * try { ...code... } catch(ex) { TraceKit.report(ex); }\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Requires TraceKit.computeStackTrace.\n *\n * Tries to catch all unhandled exceptions and report them to the\n * subscribed handlers. Please note that TraceKit.report will rethrow the\n * exception. This is REQUIRED in order to get a useful stack trace in IE.\n * If the exception does not reach the top of the browser, you will only\n * get a stack trace from the point where TraceKit.report was called.\n *\n * Handlers receive a stackInfo object as described in the\n * TraceKit.computeStackTrace docs.\n */\nTraceKit.report = (function reportModuleWrapper() {\n var handlers = [],\n lastArgs = null,\n lastException = null,\n lastExceptionStack = null;\n\n /**\n * Add a crash handler.\n * @param {Function} handler\n */\n function subscribe(handler) {\n installGlobalHandler();\n handlers.push(handler);\n }\n\n /**\n * Remove a crash handler.\n * @param {Function} handler\n */\n function unsubscribe(handler) {\n for (var i = handlers.length - 1; i >= 0; --i) {\n if (handlers[i] === handler) {\n handlers.splice(i, 1);\n }\n }\n }\n\n /**\n * Remove all crash handlers.\n */\n function unsubscribeAll() {\n uninstallGlobalHandler();\n handlers = [];\n }\n\n /**\n * Dispatch stack information to all handlers.\n * @param {Object.} stack\n */\n function notifyHandlers(stack, isWindowError) {\n var exception = null;\n if (isWindowError && !TraceKit.collectWindowErrors) {\n return;\n }\n for (var i in handlers) {\n if (hasKey(handlers, i)) {\n try {\n handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2)));\n } catch (inner) {\n exception = inner;\n }\n }\n }\n\n if (exception) {\n throw exception;\n }\n }\n\n var _oldOnerrorHandler, _onErrorHandlerInstalled;\n\n /**\n * Ensures all global unhandled exceptions are recorded.\n * Supported by Gecko and IE.\n * @param {string} message Error message.\n * @param {string} url URL of script that generated the exception.\n * @param {(number|string)} lineNo The line number at which the error\n * occurred.\n * @param {?(number|string)} colNo The column number at which the error\n * occurred.\n * @param {?Error} ex The actual Error object.\n */\n function traceKitWindowOnError(message, url, lineNo, colNo, ex) {\n var stack = null;\n\n if (lastExceptionStack) {\n TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message);\n processLastException();\n } else if (ex) {\n // New chrome and blink send along a real error object\n // Let's just report that like a normal error.\n // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror\n stack = TraceKit.computeStackTrace(ex);\n notifyHandlers(stack, true);\n } else {\n var location = {\n 'url': url,\n 'line': lineNo,\n 'column': colNo\n };\n\n var name = undefined;\n var msg = message; // must be new var or will modify original `arguments`\n var groups;\n if (isString(message)) {\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n msg = groups[2];\n }\n }\n\n location.func = UNKNOWN_FUNCTION;\n\n stack = {\n 'name': name,\n 'message': msg,\n 'url': getLocationHref(),\n 'stack': [location]\n };\n notifyHandlers(stack, true);\n }\n\n if (_oldOnerrorHandler) {\n return _oldOnerrorHandler.apply(this, arguments);\n }\n\n return false;\n }\n\n function installGlobalHandler ()\n {\n if (_onErrorHandlerInstalled) {\n return;\n }\n _oldOnerrorHandler = window.onerror;\n window.onerror = traceKitWindowOnError;\n _onErrorHandlerInstalled = true;\n }\n\n function uninstallGlobalHandler ()\n {\n if (!_onErrorHandlerInstalled) {\n return;\n }\n window.onerror = _oldOnerrorHandler;\n _onErrorHandlerInstalled = false;\n _oldOnerrorHandler = undefined;\n }\n\n function processLastException() {\n var _lastExceptionStack = lastExceptionStack,\n _lastArgs = lastArgs;\n lastArgs = null;\n lastExceptionStack = null;\n lastException = null;\n notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs));\n }\n\n /**\n * Reports an unhandled Error to TraceKit.\n * @param {Error} ex\n * @param {?boolean} rethrow If false, do not re-throw the exception.\n * Only used for window.onerror to not cause an infinite loop of\n * rethrowing.\n */\n function report(ex, rethrow) {\n var args = _slice.call(arguments, 1);\n if (lastExceptionStack) {\n if (lastException === ex) {\n return; // already caught by an inner catch block, ignore\n } else {\n processLastException();\n }\n }\n\n var stack = TraceKit.computeStackTrace(ex);\n lastExceptionStack = stack;\n lastException = ex;\n lastArgs = args;\n\n // If the stack trace is incomplete, wait for 2 seconds for\n // slow slow IE to see if onerror occurs or not before reporting\n // this exception; otherwise, we will end up with an incomplete\n // stack trace\n window.setTimeout(function () {\n if (lastException === ex) {\n processLastException();\n }\n }, (stack.incomplete ? 2000 : 0));\n\n if (rethrow !== false) {\n throw ex; // re-throw to propagate to the top level (and cause window.onerror)\n }\n }\n\n report.subscribe = subscribe;\n report.unsubscribe = unsubscribe;\n report.uninstall = unsubscribeAll;\n return report;\n}());\n\n/**\n * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript\n *\n * Syntax:\n * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below)\n * Returns:\n * s.name - exception name\n * s.message - exception message\n * s.stack[i].url - JavaScript or HTML file URL\n * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work)\n * s.stack[i].args - arguments passed to the function, if known\n * s.stack[i].line - line number, if known\n * s.stack[i].column - column number, if known\n *\n * Supports:\n * - Firefox: full stack trace with line numbers and unreliable column\n * number on top frame\n * - Opera 10: full stack trace with line and column numbers\n * - Opera 9-: full stack trace with line numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the topmost stacktrace element\n * only\n * - IE: no line numbers whatsoever\n *\n * Tries to guess names of anonymous functions by looking for assignments\n * in the source code. In IE and Safari, we have to guess source file names\n * by searching for function bodies inside all page scripts. This will not\n * work for scripts that are loaded cross-domain.\n * Here be dragons: some function names may be guessed incorrectly, and\n * duplicate functions may be mismatched.\n *\n * TraceKit.computeStackTrace should only be used for tracing purposes.\n * Logging of unhandled exceptions should be done with TraceKit.report,\n * which builds on top of TraceKit.computeStackTrace and provides better\n * IE support by utilizing the window.onerror event to retrieve information\n * about the top of the stack.\n *\n * Note: In IE and Safari, no stack trace is recorded on the Error object,\n * so computeStackTrace instead walks its *own* chain of callers.\n * This means that:\n * * in Safari, some methods may be missing from the stack trace;\n * * in IE, the topmost function in the stack trace will always be the\n * caller of computeStackTrace.\n *\n * This is okay for tracing (because you are likely to be calling\n * computeStackTrace from the function you want to be the topmost element\n * of the stack trace anyway), but not okay for logging unhandled\n * exceptions (because your catch block will likely be far away from the\n * inner function that actually caused the exception).\n *\n */\nTraceKit.computeStackTrace = (function computeStackTraceWrapper() {\n /**\n * Escapes special characters, except for whitespace, in a string to be\n * used inside a regular expression as a string literal.\n * @param {string} text The string.\n * @return {string} The escaped string literal.\n */\n function escapeRegExp(text) {\n return text.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#]/g, '\\\\$&');\n }\n\n /**\n * Escapes special characters in a string to be used inside a regular\n * expression as a string literal. Also ensures that HTML entities will\n * be matched the same as their literal friends.\n * @param {string} body The string.\n * @return {string} The escaped string.\n */\n function escapeCodeAsRegExpForMatchingInsideHTML(body) {\n return escapeRegExp(body).replace('<', '(?:<|<)').replace('>', '(?:>|>)').replace('&', '(?:&|&)').replace('\"', '(?:\"|")').replace(/\\s+/g, '\\\\s+');\n }\n\n // Contents of Exception in various browsers.\n //\n // SAFARI:\n // ex.message = Can't find variable: qq\n // ex.line = 59\n // ex.sourceId = 580238192\n // ex.sourceURL = http://...\n // ex.expressionBeginOffset = 96\n // ex.expressionCaretOffset = 98\n // ex.expressionEndOffset = 98\n // ex.name = ReferenceError\n //\n // FIREFOX:\n // ex.message = qq is not defined\n // ex.fileName = http://...\n // ex.lineNumber = 59\n // ex.columnNumber = 69\n // ex.stack = ...stack trace... (see the example below)\n // ex.name = ReferenceError\n //\n // CHROME:\n // ex.message = qq is not defined\n // ex.name = ReferenceError\n // ex.type = not_defined\n // ex.arguments = ['aa']\n // ex.stack = ...stack trace...\n //\n // INTERNET EXPLORER:\n // ex.message = ...\n // ex.name = ReferenceError\n //\n // OPERA:\n // ex.message = ...message... (see the example below)\n // ex.name = ReferenceError\n // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message)\n // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'\n\n /**\n * Computes stack trace information from the stack property.\n * Chrome and Gecko use this property.\n * @param {Error} ex\n * @return {?Object.} Stack trace information.\n */\n function computeStackTraceFromStackProp(ex) {\n if (isUndefined(ex.stack) || !ex.stack) return;\n\n var chrome = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,\n gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|\\[native).*?)(?::(\\d+))?(?::(\\d+))?\\s*$/i,\n winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,\n lines = ex.stack.split('\\n'),\n stack = [],\n parts,\n element,\n reference = /^(.*) is undefined$/.exec(ex.message);\n\n for (var i = 0, j = lines.length; i < j; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n var isNative = parts[2] && parts[2].indexOf('native') !== -1;\n element = {\n 'url': !isNative ? parts[2] : null,\n 'func': parts[1] || UNKNOWN_FUNCTION,\n 'args': isNative ? [parts[2]] : [],\n 'line': parts[3] ? +parts[3] : null,\n 'column': parts[4] ? +parts[4] : null\n };\n } else if ( parts = winjs.exec(lines[i]) ) {\n element = {\n 'url': parts[2],\n 'func': parts[1] || UNKNOWN_FUNCTION,\n 'args': [],\n 'line': +parts[3],\n 'column': parts[4] ? +parts[4] : null\n };\n } else if ((parts = gecko.exec(lines[i]))) {\n element = {\n 'url': parts[3],\n 'func': parts[1] || UNKNOWN_FUNCTION,\n 'args': parts[2] ? parts[2].split(',') : [],\n 'line': parts[4] ? +parts[4] : null,\n 'column': parts[5] ? +parts[5] : null\n };\n } else {\n continue;\n }\n\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n\n stack.push(element);\n }\n\n if (!stack.length) {\n return null;\n }\n\n if (!stack[0].column && !isUndefined(ex.columnNumber)) {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n stack[0].column = ex.columnNumber + 1;\n }\n\n return {\n 'name': ex.name,\n 'message': ex.message,\n 'url': getLocationHref(),\n 'stack': stack\n };\n }\n\n /**\n * Computes stack trace information from the stacktrace property.\n * Opera 10 uses this property.\n * @param {Error} ex\n * @return {?Object.} Stack trace information.\n */\n function computeStackTraceFromStacktraceProp(ex) {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n var stacktrace = ex.stacktrace;\n if (isUndefined(ex.stacktrace) || !ex.stacktrace) return;\n\n var opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i,\n opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^\\)]+))\\((.*)\\))? in (.*):\\s*$/i,\n lines = stacktrace.split('\\n'),\n stack = [],\n parts;\n\n for (var line = 0; line < lines.length; line += 2) {\n var element = null;\n if ((parts = opera10Regex.exec(lines[line]))) {\n element = {\n 'url': parts[2],\n 'line': +parts[1],\n 'column': null,\n 'func': parts[3],\n 'args':[]\n };\n } else if ((parts = opera11Regex.exec(lines[line]))) {\n element = {\n 'url': parts[6],\n 'line': +parts[1],\n 'column': +parts[2],\n 'func': parts[3] || parts[4],\n 'args': parts[5] ? parts[5].split(',') : []\n };\n }\n\n if (element) {\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n\n stack.push(element);\n }\n }\n\n if (!stack.length) {\n return null;\n }\n\n return {\n 'name': ex.name,\n 'message': ex.message,\n 'url': getLocationHref(),\n 'stack': stack\n };\n }\n\n /**\n * NOT TESTED.\n * Computes stack trace information from an error message that includes\n * the stack trace.\n * Opera 9 and earlier use this method if the option to show stack\n * traces is turned on in opera:config.\n * @param {Error} ex\n * @return {?Object.} Stack information.\n */\n function computeStackTraceFromOperaMultiLineMessage(ex) {\n // Opera includes a stack trace into the exception message. An example is:\n //\n // Statement on line 3: Undefined variable: undefinedFunc\n // Backtrace:\n // Line 3 of linked script file://localhost/Users/andreyvit/Projects/TraceKit/javascript-client/sample.js: In function zzz\n // undefinedFunc(a);\n // Line 7 of inline#1 script in file://localhost/Users/andreyvit/Projects/TraceKit/javascript-client/sample.html: In function yyy\n // zzz(x, y, z);\n // Line 3 of inline#1 script in file://localhost/Users/andreyvit/Projects/TraceKit/javascript-client/sample.html: In function xxx\n // yyy(a, a, a);\n // Line 1 of function script\n // try { xxx('hi'); return false; } catch(ex) { TraceKit.report(ex); }\n // ...\n\n var lines = ex.message.split('\\n');\n if (lines.length < 4) {\n return null;\n }\n\n var lineRE1 = /^\\s*Line (\\d+) of linked script ((?:file|https?|blob)\\S+)(?:: in function (\\S+))?\\s*$/i,\n lineRE2 = /^\\s*Line (\\d+) of inline#(\\d+) script in ((?:file|https?|blob)\\S+)(?:: in function (\\S+))?\\s*$/i,\n lineRE3 = /^\\s*Line (\\d+) of function script\\s*$/i,\n stack = [],\n scripts = document.getElementsByTagName('script'),\n parts;\n\n for (var line = 2; line < lines.length; line += 2) {\n var item = null;\n if ((parts = lineRE1.exec(lines[line]))) {\n item = {\n 'url': parts[2],\n 'func': parts[3],\n 'args': [],\n 'line': +parts[1],\n 'column': null\n };\n } else if ((parts = lineRE2.exec(lines[line]))) {\n item = {\n 'url': parts[3],\n 'func': parts[4],\n 'args': [],\n 'line': +parts[1],\n 'column': null // TODO: Check to see if inline#1 (+parts[2]) points to the script number or column number.\n };\n var relativeLine = (+parts[1]); // relative to the start of the "+WYMeditor.DIALOG_BODY+"",dialogLinkHtml:"
      {Link}
      ",dialogImageHtml:"
      {Image}
      ",dialogTableHtml:"
      {Table}
      ",dialogPasteHtml:"
      {Paste_From_Word}
      ",dialogPreviewHtml:"",dialogStyles:[],stringDelimiterLeft:"{",stringDelimiterRight:"}",preInit:null,preBind:null,postInit:null,preInitDialog:null,postInitDialog:null},a),this.each(function(){new WYMeditor.editor(jQuery(this),a)})},jQuery.extend({wymeditors:function(a){return WYMeditor.INSTANCES[a]}}),WYMeditor.editor.prototype.init=function(){if(jQuery.browser.msie)var WymClass=new WYMeditor.WymClassExplorer(this);else if(jQuery.browser.mozilla)var WymClass=new WYMeditor.WymClassMozilla(this);else if(jQuery.browser.opera)var WymClass=new WYMeditor.WymClassOpera(this);else if(jQuery.browser.safari||jQuery.browser.chrome)var WymClass=new WYMeditor.WymClassSafari(this);if(WymClass){jQuery.isFunction(this._options.preInit)&&this._options.preInit(this);var SaxListener=new WYMeditor.XhtmlSaxListener;jQuery.extend(SaxListener,WymClass),this.parser=new WYMeditor.XhtmlParser(SaxListener),(this._options.styles||this._options.stylesheet)&&this.configureEditorUsingRawCss(),this.helper=new WYMeditor.XmlHelper;for(var prop in WymClass)this[prop]=WymClass[prop];this._box=jQuery(this._element).hide().after(this._options.boxHtml).next().addClass("wym_box_"+this._index),jQuery.isFunction(jQuery.fn.data)&&(jQuery.data(this._box.get(0),WYMeditor.WYM_INDEX,this._index),jQuery.data(this._element.get(0),WYMeditor.WYM_INDEX,this._index));var h=WYMeditor.Helper,iframeHtml=this._options.iframeHtml;iframeHtml=h.replaceAll(iframeHtml,WYMeditor.INDEX,this._index),iframeHtml=h.replaceAll(iframeHtml,WYMeditor.IFRAME_BASE_PATH,this._options.iframeBasePath);var boxHtml=jQuery(this._box).html();boxHtml=h.replaceAll(boxHtml,WYMeditor.LOGO,this._options.logoHtml),boxHtml=h.replaceAll(boxHtml,WYMeditor.TOOLS,this._options.toolsHtml),boxHtml=h.replaceAll(boxHtml,WYMeditor.CONTAINERS,this._options.containersHtml),boxHtml=h.replaceAll(boxHtml,WYMeditor.CLASSES,this._options.classesHtml),boxHtml=h.replaceAll(boxHtml,WYMeditor.HTML,this._options.htmlHtml),boxHtml=h.replaceAll(boxHtml,WYMeditor.IFRAME,iframeHtml),boxHtml=h.replaceAll(boxHtml,WYMeditor.STATUS,this._options.statusHtml);for(var aTools=eval(this._options.toolsItems),sTools="",i=0;i0&&(h=f.item(0));for(var i=0;g>i;i++)e.parentNode.insertBefore(f.item(0),e);e.parentNode.removeChild(e),h&&this.setFocusToNode(h)}}else this.switchTo(b,a);this.update()}}},WYMeditor.editor.prototype.toggleClass=function(a,b){var c=this._selected_image?this._selected_image:jQuery(this.selected());c=jQuery(c).parentsOrSelf(b),jQuery(c).toggleClass(a),jQuery(c).attr(WYMeditor.CLASS)||jQuery(c).removeAttr(this._class)},WYMeditor.editor.prototype.findUp=function(a,b){if(a){var c=a.tagName.toLowerCase();if(typeof b==WYMeditor.STRING)for(;c!=b&&c!=WYMeditor.BODY;)a=a.parentNode,c=a.tagName.toLowerCase();else for(var d=!1;!d&&c!=WYMeditor.BODY;){for(var e=0;e=0;x--)b=d[x],b=b.replace(e,"
      "),jQuery(c).after("

      "+b+"

      ");else for(x=0;x"),jQuery(this._doc.body).append("

      "+b+"

      ")},WYMeditor.editor.prototype.insert=function(a){null!=this._iframe.contentWindow.getSelection().focusNode?this._exec(WYMeditor.INSERT_HTML,a):this.paste(a)},WYMeditor.editor.prototype.wrap=function(a,b){null!=this._iframe.contentWindow.getSelection().focusNode&&this._exec(WYMeditor.INSERT_HTML,a+this._iframe.contentWindow.getSelection().toString()+b)},WYMeditor.editor.prototype.unwrap=function(){null!=this._iframe.contentWindow.getSelection().focusNode&&this._exec(WYMeditor.INSERT_HTML,this._iframe.contentWindow.getSelection().toString())},WYMeditor.editor.prototype.addCssRules=function(a,b){var c=a.styleSheets[0];if(c)for(var d=0;d0&&(wym._exec(WYMeditor.CREATE_LINK,sStamp),jQuery("a[href="+sStamp+"]",wym._doc.body).attr(WYMeditor.HREF,a).attr(WYMeditor.TITLE,jQuery(wym._options.titleSelector).val())),window.close()}),jQuery(wym._options.dialogImageSelector+" "+wym._options.submitSelector).click(function(){var a=jQuery(wym._options.srcSelector).val();a.length>0&&(wym._exec(WYMeditor.INSERT_IMAGE,sStamp),jQuery("img[src$="+sStamp+"]",wym._doc.body).attr(WYMeditor.SRC,a).attr(WYMeditor.TITLE,jQuery(wym._options.titleSelector).val()).attr(WYMeditor.ALT,jQuery(wym._options.altSelector).val())),window.close()}),jQuery(wym._options.dialogTableSelector+" "+wym._options.submitSelector).click(function(){var a=jQuery(wym._options.rowsSelector).val(),b=jQuery(wym._options.colsSelector).val();if(a>0&&b>0){var c=wym._doc.createElement(WYMeditor.TABLE),d=null,e=jQuery(wym._options.captionSelector).val(),f=c.createCaption();for(f.innerHTML=e,x=0;x":" />")},WYMeditor.XmlHelper.prototype.contentTag=function(a,b,c){return c=c||!1,"<"+a+(c?this.tagOptions(c):"")+">"+b+""},WYMeditor.XmlHelper.prototype.cdataSection=function(a){return""},WYMeditor.XmlHelper.prototype.escapeOnce=function(a){return this._fixDoubleEscape(this.escapeEntities(a))},WYMeditor.XmlHelper.prototype._fixDoubleEscape=function(a){return a.replace(/&([a-z]+|(#\d+));/gi,"&$1;")},WYMeditor.XmlHelper.prototype.tagOptions=function(a){var b=this;b._formated_options="";for(var c in a){var d=a[c];"function"!=typeof d&&d.length>0&&(parseInt(c)==c&&"object"==typeof d&&(c=d.shift(),d=d.pop()),""!=c&&""!=d&&(b._formated_options+=" "+c+'="'+b.escapeOnce(d)+'"'))}return b._formated_options},WYMeditor.XmlHelper.prototype.escapeEntities=function(a,b){this._entitiesDiv.innerHTML=a,this._entitiesDiv.textContent=a;var c=this._entitiesDiv.innerHTML;return"undefined"==typeof b&&(0!=b&&(c=c.replace('"',""")),1==b&&(c=c.replace('"',"'"))),c},WYMeditor.XmlHelper.prototype.parseAttributes=function(a){var b=[],c=a.split(/((=\s*")(")("))|((=\s*\')(\')(\'))|((=\s*[^>\s]*))/g);if(c.toString()!=a)for(var d in c){var e=c[d];if("function"!=typeof e&&0!=e.length){var f=new RegExp("(\\w+)\\s*"+e);if(match=a.match(f)){var g=e.replace(/^[\s=]+/,""),h=g.charAt(0);h='"'==h?'"':"'"==h?"'":"",""!=h&&(g='"'==h?g.replace(/^"|"+$/g,""):g.replace(/^'|'+$/g,"")),a=a.replace(match[0],""),b.push([match[1],g])}}}return b},WYMeditor.XhtmlValidator={_attributes:{core:{except:["base","head","html","meta","param","script","style","title"],attributes:["class","id","style","title","accesskey","tabindex"]},language:{except:["base","br","hr","iframe","param","script"],attributes:{dir:["ltr","rtl"],0:"lang",1:"xml:lang"}},keyboard:{attributes:{accesskey:/^(\w){1}$/,tabindex:/^(\d)+$/}}},_events:{window:{only:["body"],attributes:["onload","onunload"]},form:{only:["form","input","textarea","select","a","label","button"],attributes:["onchange","onsubmit","onreset","onselect","onblur","onfocus"]},keyboard:{except:["base","bdo","br","frame","frameset","head","html","iframe","meta","param","script","style","title"],attributes:["onkeydown","onkeypress","onkeyup"]},mouse:{except:["base","bdo","br","head","html","meta","param","script","style","title"],attributes:["onclick","ondblclick","onmousedown","onmousemove","onmouseover","onmouseout","onmouseup"]}},_tags:{a:{attributes:{0:"charset",1:"coords",2:"href",3:"hreflang",4:"name",rel:/^(alternate|designates|stylesheet|start|next|prev|contents|index|glossary|copyright|chapter|section|subsection|appendix|help|bookmark| |shortcut|icon)+$/,rev:/^(alternate|designates|stylesheet|start|next|prev|contents|index|glossary|copyright|chapter|section|subsection|appendix|help|bookmark| |shortcut|icon)+$/,shape:/^(rect|rectangle|circ|circle|poly|polygon)$/,5:"type"}},0:"abbr",1:"acronym",2:"address",area:{attributes:{0:"alt",1:"coords",2:"href",nohref:/^(true|false)$/,shape:/^(rect|rectangle|circ|circle|poly|polygon)$/},required:["alt"]},3:"b",base:{attributes:["href"],required:["href"]},bdo:{attributes:{dir:/^(ltr|rtl)$/},required:["dir"]},4:"big",blockquote:{attributes:["cite"]},5:"body",6:"br",button:{attributes:{disabled:/^(disabled)$/,type:/^(button|reset|submit)$/,0:"value"},inside:"form"},7:"caption",8:"cite",9:"code",col:{attributes:{align:/^(right|left|center|justify)$/,0:"char",1:"charoff",span:/^(\d)+$/,valign:/^(top|middle|bottom|baseline)$/,2:"width"},inside:"colgroup"},colgroup:{attributes:{align:/^(right|left|center|justify)$/,0:"char",1:"charoff",span:/^(\d)+$/,valign:/^(top|middle|bottom|baseline)$/,2:"width"}},10:"dd",del:{attributes:{0:"cite",datetime:/^([0-9]){8}/}},11:"div",12:"dfn",13:"dl",14:"dt",15:"em",fieldset:{inside:"form"},form:{attributes:{0:"action",1:"accept",2:"accept-charset",3:"enctype",method:/^(get|post)$/},required:["action"]},head:{attributes:["profile"]},16:"h1",17:"h2",18:"h3",19:"h4",20:"h5",21:"h6",22:"hr",html:{attributes:["xmlns"]},23:"i",img:{attributes:["alt","src","height","ismap","longdesc","usemap","width"], -required:["alt","src"]},input:{attributes:{0:"accept",1:"alt",checked:/^(checked)$/,disabled:/^(disabled)$/,maxlength:/^(\d)+$/,2:"name",readonly:/^(readonly)$/,size:/^(\d)+$/,3:"src",type:/^(button|checkbox|file|hidden|image|password|radio|reset|submit|text)$/,4:"value"},inside:"form"},ins:{attributes:{0:"cite",datetime:/^([0-9]){8}/}},24:"kbd",label:{attributes:["for"],inside:"form"},25:"legend",26:"li",link:{attributes:{0:"charset",1:"href",2:"hreflang",media:/^(all|braille|print|projection|screen|speech|,|;| )+$/i,rel:/^(alternate|appendix|bookmark|chapter|contents|copyright|glossary|help|home|index|next|prev|section|start|stylesheet|subsection| |shortcut|icon)+$/i,rev:/^(alternate|appendix|bookmark|chapter|contents|copyright|glossary|help|home|index|next|prev|section|start|stylesheet|subsection| |shortcut|icon)+$/i,3:"type"},inside:"head"},map:{attributes:["id","name"],required:["id"]},meta:{attributes:{0:"content","http-equiv":/^(content\-type|expires|refresh|set\-cookie)$/i,1:"name",2:"scheme"},required:["content"]},27:"noscript",object:{attributes:["archive","classid","codebase","codetype","data","declare","height","name","standby","type","usemap","width"]},28:"ol",optgroup:{attributes:{0:"label",disabled:/^(disabled)$/},required:["label"]},option:{attributes:{0:"label",disabled:/^(disabled)$/,selected:/^(selected)$/,1:"value"},inside:"select"},29:"p",param:{attributes:{0:"type",valuetype:/^(data|ref|object)$/,1:"valuetype",2:"value"},required:["name"]},30:"pre",q:{attributes:["cite"]},31:"samp",script:{attributes:{type:/^(text\/ecmascript|text\/javascript|text\/jscript|text\/vbscript|text\/vbs|text\/xml)$/,0:"charset",defer:/^(defer)$/,1:"src"},required:["type"]},select:{attributes:{disabled:/^(disabled)$/,multiple:/^(multiple)$/,0:"name",1:"size"},inside:"form"},32:"small",33:"span",34:"strong",style:{attributes:{0:"type",media:/^(screen|tty|tv|projection|handheld|print|braille|aural|all)$/},required:["type"]},35:"sub",36:"sup",table:{attributes:{0:"border",1:"cellpadding",2:"cellspacing",frame:/^(void|above|below|hsides|lhs|rhs|vsides|box|border)$/,rules:/^(none|groups|rows|cols|all)$/,3:"summary",4:"width"}},tbody:{attributes:{align:/^(right|left|center|justify)$/,0:"char",1:"charoff",valign:/^(top|middle|bottom|baseline)$/}},td:{attributes:{0:"abbr",align:/^(left|right|center|justify|char)$/,1:"axis",2:"char",3:"charoff",colspan:/^(\d)+$/,4:"headers",rowspan:/^(\d)+$/,scope:/^(col|colgroup|row|rowgroup)$/,valign:/^(top|middle|bottom|baseline)$/}},textarea:{attributes:["cols","rows","disabled","name","readonly"],required:["cols","rows"],inside:"form"},tfoot:{attributes:{align:/^(right|left|center|justify)$/,0:"char",1:"charoff",valign:/^(top|middle|bottom)$/,2:"baseline"}},th:{attributes:{0:"abbr",align:/^(left|right|center|justify|char)$/,1:"axis",2:"char",3:"charoff",colspan:/^(\d)+$/,4:"headers",rowspan:/^(\d)+$/,scope:/^(col|colgroup|row|rowgroup)$/,valign:/^(top|middle|bottom|baseline)$/}},thead:{attributes:{align:/^(right|left|center|justify)$/,0:"char",1:"charoff",valign:/^(top|middle|bottom|baseline)$/}},37:"title",tr:{attributes:{align:/^(right|left|center|justify|char)$/,0:"char",1:"charoff",valign:/^(top|middle|bottom|baseline)$/}},38:"tt",39:"ul",40:"var"},skiped_attributes:[],skiped_attribute_values:[],getValidTagAttributes:function(a,b){var c={},d=this.getPossibleTagAttributes(a);for(var e in b){var f=b[e],g=WYMeditor.Helper;g.contains(this.skiped_attributes,e)||g.contains(this.skiped_attribute_values,f)||"function"!=typeof f&&g.contains(d,e)&&(this.doesAttributeNeedsValidation(a,e)?this.validateAttribute(a,e,f)&&(c[e]=f):c[e]=f)}return c},getUniqueAttributesAndEventsForTag:function(a){var b=[];if(this._tags[a]&&this._tags[a].attributes)for(k in this._tags[a].attributes)b.push(parseInt(k)==k?this._tags[a].attributes[k]:k);return b},getDefaultAttributesAndEventsForTags:function(){var a=[];for(var b in this._events)a.push(this._events[b]);for(var b in this._attributes)a.push(this._attributes[b]);return a},isValidTag:function(a){if(this._tags[a])return!0;for(var b in this._tags)if(this._tags[b]==a)return!0;return!1},getDefaultAttributesAndEventsForTag:function(a){var b=[];if(this.isValidTag(a)){var c=this.getDefaultAttributesAndEventsForTags();for(var d in c){var e=c[d];if("object"==typeof e){var f=WYMeditor.Helper;if(e.except&&f.contains(e.except,a)||e.only&&!f.contains(e.only,a))continue;var g=e.attributes?e.attributes:e.events;for(var h in g)b.push("string"!=typeof g[h]?h:g[h])}}}return b},doesAttributeNeedsValidation:function(a,b){return this._tags[a]&&(this._tags[a].attributes&&this._tags[a].attributes[b]||this._tags[a].required&&WYMeditor.Helper.contains(this._tags[a].required,b))},validateAttribute:function(a,b,c){return this._tags[a]&&this._tags[a].attributes&&this._tags[a].attributes[b]&&c.length>0&&!c.match(this._tags[a].attributes[b])||this._tags[a]&&this._tags[a].required&&WYMeditor.Helper.contains(this._tags[a].required,b)&&0==c.length?!1:"undefined"!=typeof this._tags[a]},getPossibleTagAttributes:function(a){return this._possible_tag_attributes||(this._possible_tag_attributes={}),this._possible_tag_attributes[a]||(this._possible_tag_attributes[a]=this.getUniqueAttributesAndEventsForTag(a).concat(this.getDefaultAttributesAndEventsForTag(a))),this._possible_tag_attributes[a]}},WYMeditor.ParallelRegex=function(a){return this._case=a,this._patterns=[],this._labels=[],this._regex=null,this},WYMeditor.ParallelRegex.prototype.addPattern=function(a,b){b=b||!0;var c=this._patterns.length;this._patterns[c]=a,this._labels[c]=b,this._regex=null},WYMeditor.ParallelRegex.prototype.match=function(a){if(0==this._patterns.length)return[!1,""];var b=a.match(this._getCompoundedRegex());if(!b)return[!1,""];for(var c=b[0],d=1;da;a++)this._patterns[a]="("+this._untokenizeRegex(this._tokenizeRegex(this._patterns[a]).replace(/([\/\(\)])/g,"\\$1"))+")";this._regex=new RegExp(this._patterns.join("|"),this._getPerlMatchingFlags())}return this._regex},WYMeditor.ParallelRegex.prototype._tokenizeRegex=function(a){return a.replace(/\(\?(i|m|s|x|U)\)/,"~~~~~~Tk1$1~~~~~~").replace(/\(\?(\-[i|m|s|x|U])\)/,"~~~~~~Tk2$1~~~~~~").replace(/\(\?\=(.*)\)/,"~~~~~~Tk3$1~~~~~~").replace(/\(\?\!(.*)\)/,"~~~~~~Tk4$1~~~~~~").replace(/\(\?\<\=(.*)\)/,"~~~~~~Tk5$1~~~~~~").replace(/\(\?\<\!(.*)\)/,"~~~~~~Tk6$1~~~~~~").replace(/\(\?\:(.*)\)/,"~~~~~~Tk7$1~~~~~~")},WYMeditor.ParallelRegex.prototype._untokenizeRegex=function(a){return a.replace(/~~~~~~Tk1(.{1})~~~~~~/,"(?$1)").replace(/~~~~~~Tk2(.{2})~~~~~~/,"(?$1)").replace(/~~~~~~Tk3(.*)~~~~~~/,"(?=$1)").replace(/~~~~~~Tk4(.*)~~~~~~/,"(?!$1)").replace(/~~~~~~Tk5(.*)~~~~~~/,"(?<=$1)").replace(/~~~~~~Tk6(.*)~~~~~~/,"(?","Comment")},WYMeditor.XhtmlLexer.prototype.addScriptTokens=function(a){this.addEntryPattern("","Script")},WYMeditor.XhtmlLexer.prototype.addCssTokens=function(a){this.addEntryPattern("","Css")},WYMeditor.XhtmlLexer.prototype.addTagTokens=function(a){this.addSpecialPattern("<\\s*[a-z0-9:-]+\\s*>",a,"OpeningTag"),this.addEntryPattern("<[a-z0-9:-]+[\\/ \\>]+",a,"OpeningTag"),this.addInTagDeclarationTokens("OpeningTag"),this.addSpecialPattern("",a,"ClosingTag")},WYMeditor.XhtmlLexer.prototype.addInTagDeclarationTokens=function(a){this.addSpecialPattern("\\s+",a,"Ignore"),this.addAttributeTokens(a),this.addExitPattern("/>",a),this.addExitPattern(">",a)},WYMeditor.XhtmlLexer.prototype.addAttributeTokens=function(a){this.addSpecialPattern("\\s*[a-z-_0-9]*:?[a-z-_0-9]+\\s*(?==)\\s*",a,"TagAttributes"),this.addEntryPattern('=\\s*"',a,"DoubleQuotedAttribute"),this.addPattern('\\\\"',"DoubleQuotedAttribute"),this.addExitPattern('"',"DoubleQuotedAttribute"),this.addEntryPattern("=\\s*'",a,"SingleQuotedAttribute"),this.addPattern("\\\\'","SingleQuotedAttribute"),this.addExitPattern("'","SingleQuotedAttribute"),this.addSpecialPattern("=\\s*[^>\\s]*",a,"UnquotedAttribute")},WYMeditor.XhtmlParser=function(a,b){var b=b||"Text";return this._Lexer=new WYMeditor.XhtmlLexer(this),this._Listener=a,this._mode=b,this._matches=[],this._last_match="",this._current_match="",this},WYMeditor.XhtmlParser.prototype.parse=function(a){return this._Lexer.parse(this.beforeParsing(a)),this.afterParsing(this._Listener.getResult())},WYMeditor.XhtmlParser.prototype.beforeParsing=function(a){return(a.match(/class="MsoNormal"/)||a.match(/ns = "urn:schemas-microsoft-com/))&&this._Listener.avoidStylingTagsAndAttributes(),this._Listener.beforeParsing(a)},WYMeditor.XhtmlParser.prototype.afterParsing=function(a){return this._Listener._avoiding_tags_implicitly&&this._Listener.allowStylingTagsAndAttributes(),this._Listener.afterParsing(a)},WYMeditor.XhtmlParser.prototype.Ignore=function(){return!0},WYMeditor.XhtmlParser.prototype.Text=function(a){return this._Listener.addContent(a),!0},WYMeditor.XhtmlParser.prototype.Comment=function(a,b){return this._addNonTagBlock(a,b,"addComment")},WYMeditor.XhtmlParser.prototype.Script=function(a,b){return this._addNonTagBlock(a,b,"addScript")},WYMeditor.XhtmlParser.prototype.Css=function(a,b){return this._addNonTagBlock(a,b,"addCss")},WYMeditor.XhtmlParser.prototype._addNonTagBlock=function(a,b,c){switch(b){case WYMeditor.LEXER_ENTER:this._non_tag=a;break;case WYMeditor.LEXER_UNMATCHED:this._non_tag+=a;break;case WYMeditor.LEXER_EXIT:switch(c){case"addComment":this._Listener.addComment(this._non_tag+a);break;case"addScript":this._Listener.addScript(this._non_tag+a);break;case"addCss":this._Listener.addCss(this._non_tag+a)}}return!0},WYMeditor.XhtmlParser.prototype.OpeningTag=function(a,b){switch(b){case WYMeditor.LEXER_ENTER:this._tag=this.normalizeTag(a),this._tag_attributes={};break;case WYMeditor.LEXER_SPECIAL:this._callOpenTagListener(this.normalizeTag(a));break;case WYMeditor.LEXER_EXIT:this._callOpenTagListener(this._tag,this._tag_attributes)}return!0},WYMeditor.XhtmlParser.prototype.ClosingTag=function(a){return this._callCloseTagListener(this.normalizeTag(a)),!0},WYMeditor.XhtmlParser.prototype._callOpenTagListener=function(a,b){var b=b||{};this.autoCloseUnclosedBeforeNewOpening(a),this._Listener.isBlockTag(a)?(this._Listener._tag_stack.push(a),this._Listener.fixNestingBeforeOpeningBlockTag(a,b),this._Listener.openBlockTag(a,b),this._increaseOpenTagCounter(a)):this._Listener.isInlineTag(a)?this._Listener.inlineTag(a,b):(this._Listener.openUnknownTag(a,b),this._increaseOpenTagCounter(a)),this._Listener.last_tag=a,this._Listener.last_tag_opened=!0,this._Listener.last_tag_attributes=b},WYMeditor.XhtmlParser.prototype._callCloseTagListener=function(a){if(this._decreaseOpenTagCounter(a))if(this.autoCloseUnclosedBeforeTagClosing(a),this._Listener.isBlockTag(a)){var b=this._Listener._tag_stack.pop();if(0==b)return;b!=a&&(a=b),this._Listener.closeBlockTag(a)}else this._Listener.closeUnknownTag(a);else this._Listener.closeUnopenedTag(a);this._Listener.last_tag=a,this._Listener.last_tag_opened=!1},WYMeditor.XhtmlParser.prototype._increaseOpenTagCounter=function(a){this._Listener._open_tags[a]=this._Listener._open_tags[a]||0,this._Listener._open_tags[a]++},WYMeditor.XhtmlParser.prototype._decreaseOpenTagCounter=function(a){return this._Listener._open_tags[a]?(this._Listener._open_tags[a]--,0==this._Listener._open_tags[a]&&(this._Listener._open_tags[a]=void 0),!0):!1},WYMeditor.XhtmlParser.prototype.autoCloseUnclosedBeforeNewOpening=function(a){this._autoCloseUnclosed(a,!1)},WYMeditor.XhtmlParser.prototype.autoCloseUnclosedBeforeTagClosing=function(a){this._autoCloseUnclosed(a,!0)},WYMeditor.XhtmlParser.prototype._autoCloseUnclosed=function(a,b){var b=b||!1;if(this._Listener._open_tags)for(var c in this._Listener._open_tags){var d=this._Listener._open_tags[c];d>0&&this._Listener.shouldCloseTagAutomatically(c,a,b)&&this._callCloseTagListener(c,!0)}},WYMeditor.XhtmlParser.prototype.getTagReplacements=function(){return this._Listener.getTagReplacements()},WYMeditor.XhtmlParser.prototype.normalizeTag=function(a){a=a.replace(/^([\s<\/>]*)|([\s<\/>]*)$/gm,"").toLowerCase();var b=this._Listener.getTagReplacements();return b[a]?b[a]:a},WYMeditor.XhtmlParser.prototype.TagAttributes=function(a,b){return WYMeditor.LEXER_SPECIAL==b&&(this._current_attribute=a),!0},WYMeditor.XhtmlParser.prototype.DoubleQuotedAttribute=function(a,b){return WYMeditor.LEXER_UNMATCHED==b&&(this._tag_attributes[this._current_attribute]=a),!0},WYMeditor.XhtmlParser.prototype.SingleQuotedAttribute=function(a,b){return WYMeditor.LEXER_UNMATCHED==b&&(this._tag_attributes[this._current_attribute]=a),!0},WYMeditor.XhtmlParser.prototype.UnquotedAttribute=function(a){return this._tag_attributes[this._current_attribute]=a.replace(/^=/,""),!0},WYMeditor.XhtmlSaxListener=function(){return this.output="",this.helper=new WYMeditor.XmlHelper,this._open_tags={},this.validator=WYMeditor.XhtmlValidator,this._tag_stack=[],this.avoided_tags=[],this.entities={" ":" ","¡":"¡","¢":"¢","£":"£","¤":"¤","¥":"¥","¦":"¦","§":"§","¨":"¨","©":"©","ª":"ª","«":"«","¬":"¬","­":"­","®":"®","¯":"¯","°":"°","±":"±","²":"²","³":"³","´":"´","µ":"µ","¶":"¶","·":"·","¸":"¸","¹":"¹","º":"º","»":"»","¼":"¼","½":"½","¾":"¾","¿":"¿","À":"À","Á":"Á","Â":"Â","Ã":"Ã","Ä":"Ä","Å":"Å","Æ":"Æ","Ç":"Ç","È":"È","É":"É","Ê":"Ê","Ë":"Ë","Ì":"Ì","Í":"Í","Î":"Î","Ï":"Ï","Ð":"Ð","Ñ":"Ñ","Ò":"Ò","Ó":"Ó","Ô":"Ô","Õ":"Õ","Ö":"Ö","×":"×","Ø":"Ø","Ù":"Ù","Ú":"Ú","Û":"Û","Ü":"Ü","Ý":"Ý","Þ":"Þ","ß":"ß","à":"à","á":"á","â":"â","ã":"ã","ä":"ä","å":"å","æ":"æ","ç":"ç","è":"è","é":"é","ê":"ê","ë":"ë","ì":"ì","í":"í","î":"î","ï":"ï","ð":"ð","ñ":"ñ","ò":"ò","ó":"ó","ô":"ô","õ":"õ","ö":"ö","÷":"÷","ø":"ø","ù":"ù","ú":"ú","û":"û","ü":"ü","ý":"ý","þ":"þ","ÿ":"ÿ","Œ":"Œ","œ":"œ","Š":"Š","š":"š","Ÿ":"Ÿ","ƒ":"ƒ","ˆ":"ˆ","˜":"˜","Α":"Α","Β":"Β","Γ":"Γ","Δ":"Δ","Ε":"Ε","Ζ":"Ζ","Η":"Η","Θ":"Θ","Ι":"Ι","Κ":"Κ","Λ":"Λ","Μ":"Μ","Ν":"Ν","Ξ":"Ξ","Ο":"Ο","Π":"Π","Ρ":"Ρ","Σ":"Σ","Τ":"Τ","Υ":"Υ","Φ":"Φ","Χ":"Χ","Ψ":"Ψ","Ω":"Ω","α":"α","β":"β","γ":"γ","δ":"δ","ε":"ε","ζ":"ζ","η":"η","θ":"θ","ι":"ι","κ":"κ","λ":"λ","μ":"μ","ν":"ν","ξ":"ξ","ο":"ο","π":"π","ρ":"ρ","ς":"ς","σ":"σ","τ":"τ","υ":"υ","φ":"φ","χ":"χ","ψ":"ψ","ω":"ω","ϑ":"ϑ","ϒ":"ϒ","ϖ":"ϖ"," ":" "," ":" "," ":" ","‌":"‌","‍":"‍","‎":"‎","‏":"‏","–":"–","—":"—","‘":"‘","’":"’","‚":"‚","“":"“","”":"”","„":"„","†":"†","‡":"‡","•":"•","…":"…","‰":"‰","′":"′","″":"″","‹":"‹","›":"›","‾":"‾","⁄":"⁄","€":"€","ℑ":"ℑ","℘":"℘","ℜ":"ℜ","™":"™","ℵ":"ℵ","←":"←","↑":"↑","→":"→","↓":"↓","↔":"↔","↵":"↵","⇐":"⇐","⇑":"⇑","⇒":"⇒","⇓":"⇓","⇔":"⇔","∀":"∀","∂":"∂","∃":"∃","∅":"∅","∇":"∇","∈":"∈","∉":"∉","∋":"∋","∏":"∏","∑":"∑","−":"−","∗":"∗","√":"√","∝":"∝","∞":"∞","∠":"∠","∧":"∧","∨":"∨","∩":"∩","∪":"∪","∫":"∫","∴":"∴","∼":"∼","≅":"≅","≈":"≈","≠":"≠","≡":"≡","≤":"≤","≥":"≥","⊂":"⊂","⊃":"⊃","⊄":"⊄","⊆":"⊆","⊇":"⊇","⊕":"⊕","⊗":"⊗","⊥":"⊥","⋅":"⋅","⌈":"⌈","⌉":"⌉","⌊":"⌊","⌋":"⌋","⟨":"〈","⟩":"〉","◊":"◊","♠":"♠","♣":"♣","♥":"♥","♦":"♦"},this.block_tags=["a","abbr","acronym","address","area","b","base","bdo","big","blockquote","body","button","caption","cite","code","col","colgroup","dd","del","div","dfn","dl","dt","em","fieldset","form","head","h1","h2","h3","h4","h5","h6","html","i","ins","kbd","label","legend","li","map","noscript","object","ol","optgroup","option","p","param","pre","q","samp","script","select","small","span","strong","style","sub","sup","table","tbody","td","textarea","tfoot","th","thead","title","tr","tt","ul","var","extends"],this.inline_tags=["br","hr","img","input"],this},WYMeditor.XhtmlSaxListener.prototype.shouldCloseTagAutomatically=function(a,b,c){var c=c||!1;return"td"==a&&(c&&"tr"==b||!c&&"td"==b)?!0:"option"==a&&(c&&"select"==b||!c&&"option"==b)?!0:!1},WYMeditor.XhtmlSaxListener.prototype.beforeParsing=function(a){return this.output="",a},WYMeditor.XhtmlSaxListener.prototype.afterParsing=function(a){return a=this.replaceNamedEntities(a),a=this.joinRepeatedEntities(a),a=this.removeEmptyTags(a),a=this.removeBrInPre(a)},WYMeditor.XhtmlSaxListener.prototype.replaceNamedEntities=function(a){for(var b in this.entities)a=a.replace(new RegExp(b,"g"),this.entities[b]);return a},WYMeditor.XhtmlSaxListener.prototype.joinRepeatedEntities=function(a){var b="em|strong|sub|sup|acronym|pre|del|address";return a.replace(new RegExp("<\\1>",""),"").replace(new RegExp("(s*<("+b+")>s*){2}(.*)(s*s*){2}",""),"<$2>$3<$2>")},WYMeditor.XhtmlSaxListener.prototype.removeEmptyTags=function(a){return a.replace(new RegExp("<("+this.block_tags.join("|").replace(/\|td/,"").replace(/\|p/,"").replace(/\|th/,"")+")>(
      | | |\\s)*","g"),"")},WYMeditor.XhtmlSaxListener.prototype.removeBrInPre=function(a){var b=a.match(new RegExp("]*>(.*?)","gmi"));if(b)for(var c=0;c","g"),String.fromCharCode(13,10)));return a},WYMeditor.XhtmlSaxListener.prototype.getResult=function(){return this.output},WYMeditor.XhtmlSaxListener.prototype.getTagReplacements=function(){return{b:"strong",i:"em"}},WYMeditor.XhtmlSaxListener.prototype.addContent=function(a){this.output+=a},WYMeditor.XhtmlSaxListener.prototype.addComment=function(a){this.remove_comments&&(this.output+=a)},WYMeditor.XhtmlSaxListener.prototype.addScript=function(a){this.remove_scripts||(this.output+=a)},WYMeditor.XhtmlSaxListener.prototype.addCss=function(a){this.remove_embeded_styles||(this.output+=a)},WYMeditor.XhtmlSaxListener.prototype.openBlockTag=function(a,b){this.output+=this.helper.tag(a,this.validator.getValidTagAttributes(a,b),!0)},WYMeditor.XhtmlSaxListener.prototype.inlineTag=function(a,b){this.output+=this.helper.tag(a,this.validator.getValidTagAttributes(a,b))},WYMeditor.XhtmlSaxListener.prototype.openUnknownTag=function(){},WYMeditor.XhtmlSaxListener.prototype.closeBlockTag=function(a){this.output=this.output.replace(/
      $/,"")+this._getClosingTagContent("before",a)+""+this._getClosingTagContent("after",a)},WYMeditor.XhtmlSaxListener.prototype.closeUnknownTag=function(){},WYMeditor.XhtmlSaxListener.prototype.closeUnopenedTag=function(a){this.output+=""},WYMeditor.XhtmlSaxListener.prototype.avoidStylingTagsAndAttributes=function(){this.avoided_tags=["div","span"],this.validator.skiped_attributes=["style"],this.validator.skiped_attribute_values=["MsoNormal","main1"],this._avoiding_tags_implicitly=!0},WYMeditor.XhtmlSaxListener.prototype.allowStylingTagsAndAttributes=function(){this.avoided_tags=[],this.validator.skiped_attributes=[],this.validator.skiped_attribute_values=[],this._avoiding_tags_implicitly=!1},WYMeditor.XhtmlSaxListener.prototype.isBlockTag=function(a){return!WYMeditor.Helper.contains(this.avoided_tags,a)&&WYMeditor.Helper.contains(this.block_tags,a)},WYMeditor.XhtmlSaxListener.prototype.isInlineTag=function(a){return!WYMeditor.Helper.contains(this.avoided_tags,a)&&WYMeditor.Helper.contains(this.inline_tags,a)},WYMeditor.XhtmlSaxListener.prototype.insertContentAfterClosingTag=function(a,b){this._insertContentWhenClosingTag("after",a,b)},WYMeditor.XhtmlSaxListener.prototype.insertContentBeforeClosingTag=function(a,b){this._insertContentWhenClosingTag("before",a,b)},WYMeditor.XhtmlSaxListener.prototype.fixNestingBeforeOpeningBlockTag=function(a){"li"==a||"ul"!=a&&"ol"!=a||!this.last_tag||this.last_tag_opened||"li"!=this.last_tag||(this.output=this.output.replace(/<\/li>$/,""),this.insertContentAfterClosingTag(a,""))},WYMeditor.XhtmlSaxListener.prototype._insertContentWhenClosingTag=function(a,b,c){this["_insert_"+a+"_closing"]||(this["_insert_"+a+"_closing"]=[]),this["_insert_"+a+"_closing"][b]||(this["_insert_"+a+"_closing"][b]=[]),this["_insert_"+a+"_closing"][b].push(c)},WYMeditor.XhtmlSaxListener.prototype._getClosingTagContent=function(a,b){return this["_insert_"+a+"_closing"]&&this["_insert_"+a+"_closing"][b]&&this["_insert_"+a+"_closing"][b].length>0?this["_insert_"+a+"_closing"][b].pop():""},WYMeditor.WymCssLexer=function(a,b){var b="undefined"==typeof b?!0:b;return jQuery.extend(this,new WYMeditor.Lexer(a,b?"Ignore":"WymCss")),this.mapHandler("WymCss","Ignore"),1==b&&(this.addEntryPattern("/\\*[<\\s]*WYMeditor[>\\s]*\\*/","Ignore","WymCss"),this.addExitPattern("/\\*[\\s]*\\*/","WymCss")),this.addSpecialPattern("[\\sa-z1-6]*\\.[a-z-_0-9]+","WymCss","WymCssStyleDeclaration"),this.addEntryPattern("/\\*","WymCss","WymCssComment"),this.addExitPattern("\\*/","WymCssComment"),this.addEntryPattern("{","WymCss","WymCssStyle"),this.addExitPattern("}","WymCssStyle"),this.addEntryPattern("/\\*","WymCssStyle","WymCssFeedbackStyle"),this.addExitPattern("\\*/","WymCssFeedbackStyle"),this},WYMeditor.WymCssParser=function(){return this._in_style=!1,this._has_title=!1,this.only_wym_blocks=!0,this.css_settings={classesItems:[],editorStyles:[],dialogStyles:[]},this},WYMeditor.WymCssParser.prototype.parse=function(a,b){var b="undefined"==typeof b?this.only_wym_blocks:b;this._Lexer=new WYMeditor.WymCssLexer(this,b),this._Lexer.parse(a)},WYMeditor.WymCssParser.prototype.Ignore=function(){return!0},WYMeditor.WymCssParser.prototype.WymCssComment=function(a,b){return a.match(/end[a-z0-9\s]*wym[a-z0-9\s]*/im)?!1:(b==WYMeditor.LEXER_UNMATCHED&&(this._in_style?this._current_item[this._current_element]&&(this._current_item[this._current_element].expressions?this._current_item[this._current_element].expressions.push(a):this._current_item[this._current_element].expressions=[a]):(this._has_title=!0,this._current_item={title:WYMeditor.Helper.trim(a)}),this._in_style=!0),!0)},WYMeditor.WymCssParser.prototype.WymCssStyle=function(a,b){return b==WYMeditor.LEXER_UNMATCHED?(a=WYMeditor.Helper.trim(a),""!=a&&(this._current_item[this._current_element].style=a)):b==WYMeditor.LEXER_EXIT&&(this._in_style=!1,this._has_title=!1,this.addStyleSetting(this._current_item)),!0},WYMeditor.WymCssParser.prototype.WymCssFeedbackStyle=function(a,b){return b==WYMeditor.LEXER_UNMATCHED&&(this._current_item[this._current_element].feedback_style=a.replace(/^([\s\/\*]*)|([\s\/\*]*)$/gm,"")),!0},WYMeditor.WymCssParser.prototype.WymCssStyleDeclaration=function(a){a=a.replace(/^([\s\.]*)|([\s\.*]*)$/gm,"");var b="";if(a.indexOf(".")>0){var c=a.split(".");this._current_element=c[1];var b=c[0]}else this._current_element=a;return this._has_title||(this._current_item={title:(b?b.toUpperCase()+": ":"")+this._current_element},this._has_title=!0),this._current_item[this._current_element]||(this._current_item[this._current_element]={name:this._current_element}),b&&(this._current_item[this._current_element].tags?this._current_item[this._current_element].tags.push(b):this._current_item[this._current_element].tags=[b]),!0},WYMeditor.WymCssParser.prototype.addStyleSetting=function(a){for(var b in a){var c=a[b];"object"==typeof c&&"title"!=b&&(this.css_settings.classesItems.push({name:WYMeditor.Helper.trim(c.name),title:a.title,expr:WYMeditor.Helper.trim((c.expressions||c.tags).join(", "))}),c.feedback_style&&this.css_settings.editorStyles.push({name:"."+WYMeditor.Helper.trim(c.name),css:c.feedback_style}),c.style&&this.css_settings.dialogStyles.push({name:"."+WYMeditor.Helper.trim(c.name),css:c.style}))}},jQuery.fn.isPhantomNode=function(){return 3==this[0].nodeType?!/[^\t\n\r ]/.test(this[0].data):!1},WYMeditor.isPhantomNode=function(a){return 3==a.nodeType?!/[^\t\n\r ]/.test(a.data):!1},WYMeditor.isPhantomString=function(a){return!/[^\t\n\r ]/.test(a)},jQuery.fn.parentsOrSelf=function(a){var b=this;return 3==b[0].nodeType&&(b=b.parents().slice(0,1)),1==b.filter(a).size()?b:b.parents(a).slice(0,1)},WYMeditor.Helper={replaceAll:function(a,b,c){var d=new RegExp(b,"g");return a.replace(d,c)},insertAt:function(a,b,c){return a.substr(0,c)+b+a.substring(c)},trim:function(a){return a.replace(/^(\s*)|(\s*)$/gm,"")},contains:function(a,b){for(var c=0;c1||d.tagName.toLowerCase()==WYMeditor.OL||d.tagName.toLowerCase()==WYMeditor.UL)&&this._doc.execCommand(a)}break;default:b?this._doc.execCommand(a,!1,b):this._doc.execCommand(a)}this.listen()},WYMeditor.WymClassExplorer.prototype.selected=function(){var a=this._iframe.contentWindow.document.caretPos;return null!=a&&void 0!=a.parentElement?a.parentElement():void 0},WYMeditor.WymClassExplorer.prototype.saveCaret=function(){this._doc.caretPos=this._doc.selection.createRange()},WYMeditor.WymClassExplorer.prototype.addCssRule=function(a,b){a.addRule(b.name,b.css)},WYMeditor.WymClassExplorer.prototype.insert=function(a){var b=this._doc.selection.createRange();if(jQuery(b.parentElement()).parents(this._options.iframeBodySelector).is("*"))try{b.pasteHTML(a)}catch(c){}else this.paste(a)},WYMeditor.WymClassExplorer.prototype.wrap=function(a,b){var c=this._doc.selection.createRange();if(jQuery(c.parentElement()).parents(this._options.iframeBodySelector).is("*"))try{c.pasteHTML(a+c.text+b)}catch(d){}},WYMeditor.WymClassExplorer.prototype.unwrap=function(){var a=this._doc.selection.createRange();if(jQuery(a.parentElement()).parents(this._options.iframeBodySelector).is("*"))try{var b=a.text;this._exec("Cut"),a.pasteHTML(b)}catch(c){}},WYMeditor.WymClassExplorer.prototype.keyup=function(){this._selected_image=null},WYMeditor.WymClassExplorer.prototype.setFocusToNode=function(a){var b=this._doc.selection.createRange();b.moveToElementText(a),b.collapse(!1),b.move("character",-1),b.select(),a.focus()},WYMeditor.WymClassMozilla=function(a){this._wym=a,this._class="class",this._newLine="\n"},WYMeditor.WymClassMozilla.prototype.initIframe=function(iframe){this._iframe=iframe,this._doc=iframe.contentDocument;var styles=this._doc.styleSheets[0],aCss=eval(this._options.editorStyles);this.addCssRules(this._doc,aCss),this._doc.title=this._wym._index,jQuery("html",this._doc).attr("dir",this._options.direction),this.html(this._wym._html),this.enableDesignMode(),jQuery.isFunction(this._options.preBind)&&this._options.preBind(this),this._wym.bindEvents(),jQuery(this._doc).bind("keydown",this.keydown),jQuery(this._doc).bind("keyup",this.keyup),jQuery(this._doc).bind("focus",this.enableDesignMode),jQuery.isFunction(this._options.postInit)&&this._options.postInit(this),this.listen()},WYMeditor.WymClassMozilla.prototype.html=function(a){if("string"!=typeof a)return jQuery(this._doc.body).html();try{this._doc.designMode="off"}catch(b){}a=a.replace(/]*)>/gi,"").replace(/<\/em>/gi,"").replace(/]*)>/gi,"").replace(/<\/strong>/gi,""),jQuery(this._doc.body).html(a),this.enableDesignMode()},WYMeditor.WymClassMozilla.prototype._exec=function(a,b){if(!this.selected())return!1;switch(a){case WYMeditor.INDENT:case WYMeditor.OUTDENT:var c=this.selected(),d=this._iframe.contentWindow.getSelection(),e=d.anchorNode;if("#text"==e.nodeName&&(e=e.parentNode),c=this.findUp(c,WYMeditor.BLOCKS),e=this.findUp(e,WYMeditor.BLOCKS),c&&c==e&&c.tagName.toLowerCase()==WYMeditor.LI){var f=c.parentNode.parentNode;(c.parentNode.childNodes.length>1||f.tagName.toLowerCase()==WYMeditor.OL||f.tagName.toLowerCase()==WYMeditor.UL)&&this._doc.execCommand(a,"",null)}break;default:b?this._doc.execCommand(a,"",b):this._doc.execCommand(a,"",null)}var g=this.selected();g.tagName.toLowerCase()==WYMeditor.BODY&&this._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P),this.listen()},WYMeditor.WymClassMozilla.prototype.selected=function(){var a=this._iframe.contentWindow.getSelection(),b=a.focusNode;return b?"#text"==b.nodeName?b.parentNode:b:null},WYMeditor.WymClassMozilla.prototype.addCssRule=function(a,b){a.insertRule(b.name+" {"+b.css+"}",a.cssRules.length)},WYMeditor.WymClassMozilla.prototype.keydown=function(a){var b=WYMeditor.INSTANCES[this.title],c=null;if(a.keyCode===WYMeditor.KEY.ENTER&&(c=b.selected())){var d=$(c),e=(d.parent(),d.parents(".embedded-item"));if(e.size()){var f=$("

      ");return d.hasClass("title")?e.before(f):d.hasClass("content")&&e.after(f),b.setFocusToNode(f.get(0)),!1}}if(a.ctrlKey){if(66==a.keyCode)return b._exec(WYMeditor.BOLD),!1;if(73==a.keyCode)return b._exec(WYMeditor.ITALIC),!1}else 13==a.keyCode&&(a.shiftKey||(c=b.selected(),c&&c.tagName.toLowerCase()==WYMeditor.PRE&&(a.preventDefault(),b.insert("

      "))))},WYMeditor.WymClassMozilla.prototype.keyup=function(a){var b=WYMeditor.INSTANCES[this.title];b._selected_image=null;var c=null;if(13!=a.keyCode||a.shiftKey){if(8!=a.keyCode&&17!=a.keyCode&&46!=a.keyCode&&224!=a.keyCode&&!a.metaKey&&!a.ctrlKey){c=b.selected();var d=c.tagName.toLowerCase();("strong"==d||"b"==d||"em"==d||"i"==d||"sub"==d||"sup"==d||"a"==d)&&(d=c.parentNode.tagName.toLowerCase()),d==WYMeditor.BODY&&b._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P)}}else jQuery(b._doc.body).children(WYMeditor.BR).remove()},WYMeditor.WymClassMozilla.prototype.enableDesignMode=function(){if("off"==this.designMode)try{this.designMode="on",this.execCommand("styleWithCSS","",!1)}catch(a){}},WYMeditor.WymClassMozilla.prototype.setFocusToNode=function(a){var b=document.createRange();b.selectNode(a);var c=this._iframe.contentWindow.getSelection();c.addRange(b),c.collapse(a,a.childNodes.length),this._iframe.contentWindow.focus()},WYMeditor.WymClassMozilla.prototype.openBlockTag=function(a,b){var b=this.validator.getValidTagAttributes(a,b);if("span"==a&&b.style){var c=this.getTagForStyle(b.style);if(!c)return;this._tag_stack.pop();var a=c;this._tag_stack.push(c),b.style=""}this.output+=this.helper.tag(a,b,!0)},WYMeditor.WymClassMozilla.prototype.getTagForStyle=function(a){return/bold/.test(a)?"strong":/italic/.test(a)?"em":/sub/.test(a)?"sub":/sub/.test(a)?"super":!1},WYMeditor.WymClassOpera=function(a){this._wym=a,this._class="class",this._newLine="\r\n"},WYMeditor.WymClassOpera.prototype.initIframe=function(iframe){this._iframe=iframe,this._doc=iframe.contentWindow.document;var styles=this._doc.styleSheets[0],aCss=eval(this._options.editorStyles);this.addCssRules(this._doc,aCss),this._doc.title=this._wym._index,jQuery("html",this._doc).attr("dir",this._options.direction),this._doc.designMode="on",this.html(this._wym._html),jQuery.isFunction(this._options.preBind)&&this._options.preBind(this),this._wym.bindEvents(),jQuery(this._doc).bind("keydown",this.keydown),jQuery(this._doc).bind("keyup",this.keyup),jQuery.isFunction(this._options.postInit)&&this._options.postInit(this),this.listen()},WYMeditor.WymClassOpera.prototype._exec=function(a,b){b?this._doc.execCommand(a,!1,b):this._doc.execCommand(a),this.listen()},WYMeditor.WymClassOpera.prototype.selected=function(){var a=this._iframe.contentWindow.getSelection(),b=a.focusNode;return b?"#text"==b.nodeName?b.parentNode:b:null},WYMeditor.WymClassOpera.prototype.addCssRule=function(a,b){a.insertRule(b.name+" {"+b.css+"}",a.cssRules.length)},WYMeditor.WymClassOpera.prototype.keydown=function(a){var b=WYMeditor.INSTANCES[this.title],c=b._iframe.contentWindow.getSelection();startNode=c.getRangeAt(0).startContainer,jQuery(startNode).parentsOrSelf(WYMeditor.MAIN_CONTAINERS.join(","))[0]||jQuery(startNode).parentsOrSelf("li")||a.keyCode==WYMeditor.KEY.ENTER||a.keyCode==WYMeditor.KEY.LEFT||a.keyCode==WYMeditor.KEY.UP||a.keyCode==WYMeditor.KEY.RIGHT||a.keyCode==WYMeditor.KEY.DOWN||a.keyCode==WYMeditor.KEY.BACKSPACE||a.keyCode==WYMeditor.KEY.DELETE||b._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P)},WYMeditor.WymClassOpera.prototype.keyup=function(){var a=WYMeditor.INSTANCES[this.title];a._selected_image=null},WYMeditor.WymClassOpera.prototype.setFocusToNode=function(){},WYMeditor.WymClassSafari=function(a){this._wym=a,this._class="class",this._newLine="\n"},WYMeditor.WymClassSafari.prototype.initIframe=function(iframe){this._iframe=iframe,this._doc=iframe.contentDocument;var styles=this._doc.styleSheets[0],aCss=eval(this._options.editorStyles);this.addCssRules(this._doc,aCss),this._doc.title=this._wym._index,jQuery("html",this._doc).attr("dir",this._options.direction),this._doc.designMode="on",this.html(this._wym._html),jQuery.isFunction(this._options.preBind)&&this._options.preBind(this),this._wym.bindEvents(),jQuery(this._doc).bind("keydown",this.keydown),jQuery(this._doc).bind("keyup",this.keyup),jQuery.isFunction(this._options.postInit)&&this._options.postInit(this),this.listen()},WYMeditor.WymClassSafari.prototype._exec=function(a,b){if(!this.selected())return!1;switch(a){case WYMeditor.INDENT:case WYMeditor.OUTDENT:var c=this.selected(),d=this._iframe.contentWindow.getSelection(),e=d.anchorNode;if("#text"==e.nodeName&&(e=e.parentNode),c=this.findUp(c,WYMeditor.BLOCKS),e=this.findUp(e,WYMeditor.BLOCKS),c&&c==e&&c.tagName.toLowerCase()==WYMeditor.LI){var f=c.parentNode.parentNode;(c.parentNode.childNodes.length>1||f.tagName.toLowerCase()==WYMeditor.OL||f.tagName.toLowerCase()==WYMeditor.UL)&&this._doc.execCommand(a,"",null)}break;case WYMeditor.INSERT_ORDEREDLIST:case WYMeditor.INSERT_UNORDEREDLIST:this._doc.execCommand(a,"",null);var c=this.selected(),g=this.findUp(c,WYMeditor.MAIN_CONTAINERS);g&&jQuery(g).replaceWith(jQuery(g).html());break;default:b?this._doc.execCommand(a,"",b):this._doc.execCommand(a,"",null)}var g=this.selected();g&&g.tagName.toLowerCase()==WYMeditor.BODY&&this._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P),this.listen()},WYMeditor.WymClassSafari.prototype.selected=function(){var a=this._iframe.contentWindow.getSelection(),b=a.focusNode;return b?"#text"==b.nodeName?b.parentNode:b:null},WYMeditor.WymClassSafari.prototype.addCssRule=function(a,b){a.insertRule(b.name+" {"+b.css+"}",a.cssRules.length)},WYMeditor.WymClassSafari.prototype.keydown=function(a){var b=WYMeditor.INSTANCES[this.title];if(a.keyCode===WYMeditor.KEY.ENTER){var c=b.selected();if(c){var d=$(c),e=(d.parent(),d.parents(".embedded-item"));if(e.size()){var f=$("

      ");return d.hasClass("title")?e.before(f):d.hasClass("content")&&e.after(f),b.setFocusToNode(f.get(0)),!1}}}if(a.ctrlKey){if(66==a.keyCode)return b._exec(WYMeditor.BOLD),!1;if(73==a.keyCode)return b._exec(WYMeditor.ITALIC),!1}},WYMeditor.WymClassSafari.prototype.keyup=function(a){var b=WYMeditor.INSTANCES[this.title];b._selected_image=null;var c=null;if(13!=a.keyCode||a.shiftKey||(jQuery(b._doc.body).children(WYMeditor.BR).remove(),c=b.selected(),c&&c.tagName.toLowerCase()==WYMeditor.PRE&&b._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P)),13==a.keyCode&&a.shiftKey&&b._exec("InsertLineBreak"),8!=a.keyCode&&17!=a.keyCode&&46!=a.keyCode&&224!=a.keyCode&&!a.metaKey&&!a.ctrlKey){c=b.selected();var d=c.tagName.toLowerCase();("strong"==d||"b"==d||"em"==d||"i"==d||"sub"==d||"sup"==d||"a"==d||"span"==d)&&(d=c.parentNode.tagName.toLowerCase()),(d==WYMeditor.BODY||d==WYMeditor.DIV)&&b._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P)}},WYMeditor.WymClassSafari.prototype.setFocusToNode=function(a){var b=this._iframe.contentDocument.createRange();b.selectNode(a);var c=this._iframe.contentWindow.getSelection();c.addRange(b),c.collapse(a,a.childNodes.length),this._iframe.contentWindow.focus()},WYMeditor.WymClassSafari.prototype.openBlockTag=function(a,b){var b=this.validator.getValidTagAttributes(a,b);if("span"==a&&b.style){var c=this.getTagForStyle(b.style);if(!c)return;this._tag_stack.pop();var a=c;this._tag_stack.push(c),b.style="","string"==typeof b.class&&(b.class=b.class.replace(/apple-style-span/gi,""))}this.output+=this.helper.tag(a,b,!0)},WYMeditor.WymClassSafari.prototype.getTagForStyle=function(a){return/bold/.test(a)?"strong":/italic/.test(a)?"em":/sub/.test(a)?"sub":/super/.test(a)?"sup":!1}; -//# sourceMappingURL=../../../maps/libs/jquery/jquery.wymeditor.js.map \ No newline at end of file +if(!WYMeditor)var WYMeditor={};!function(){if(window.console&&console.firebug)WYMeditor.console=window.console;else{var t=["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];WYMeditor.console={};for(var e=0;e

      "+WYMeditor.TOOLS+"
      "+WYMeditor.CONTAINERS+WYMeditor.CLASSES+"
      "+WYMeditor.HTML+WYMeditor.IFRAME+WYMeditor.STATUS+"
      "+WYMeditor.LOGO+"
      ",logoHtml:"WYMeditor",iframeHtml:"
      ",editorStyles:[],toolsHtml:"

      {Tools}

        "+WYMeditor.TOOLS_ITEMS+"
      ",toolsItemHtml:"
    • "+WYMeditor.TOOL_TITLE+"
    • ",toolsItems:[{name:"Bold",title:"Strong",css:"wym_tools_strong"},{name:"Italic",title:"Emphasis",css:"wym_tools_emphasis"},{name:"Superscript",title:"Superscript",css:"wym_tools_superscript"},{name:"Subscript",title:"Subscript",css:"wym_tools_subscript"},{name:"InsertOrderedList",title:"Ordered_List",css:"wym_tools_ordered_list"},{name:"InsertUnorderedList",title:"Unordered_List",css:"wym_tools_unordered_list"},{name:"Indent",title:"Indent",css:"wym_tools_indent"},{name:"Outdent",title:"Outdent",css:"wym_tools_outdent"},{name:"Undo",title:"Undo",css:"wym_tools_undo"},{name:"Redo",title:"Redo",css:"wym_tools_redo"},{name:"CreateLink",title:"Link",css:"wym_tools_link"},{name:"Unlink",title:"Unlink",css:"wym_tools_unlink"},{name:"InsertImage",title:"Image",css:"wym_tools_image"},{name:"InsertTable",title:"Table",css:"wym_tools_table"},{name:"Paste",title:"Paste_From_Word",css:"wym_tools_paste"},{name:"ToggleHtml",title:"HTML",css:"wym_tools_html"},{name:"Preview",title:"Preview",css:"wym_tools_preview"}],containersHtml:"

      {Containers}

        "+WYMeditor.CONTAINERS_ITEMS+"
      ",containersItemHtml:"
    • "+WYMeditor.CONTAINER_TITLE+"
    • ",containersItems:[{name:"P",title:"Paragraph",css:"wym_containers_p"},{name:"H1",title:"Heading_1",css:"wym_containers_h1"},{name:"H2",title:"Heading_2",css:"wym_containers_h2"},{name:"H3",title:"Heading_3",css:"wym_containers_h3"},{name:"H4",title:"Heading_4",css:"wym_containers_h4"},{name:"H5",title:"Heading_5",css:"wym_containers_h5"},{name:"H6",title:"Heading_6",css:"wym_containers_h6"},{name:"PRE",title:"Preformatted",css:"wym_containers_pre"},{name:"BLOCKQUOTE",title:"Blockquote",css:"wym_containers_blockquote"},{name:"TH",title:"Table_Header",css:"wym_containers_th"}],classesHtml:"

      {Classes}

        "+WYMeditor.CLASSES_ITEMS+"
      ",classesItemHtml:"
    • "+WYMeditor.CLASS_TITLE+"
    • ",classesItems:[],statusHtml:"

      {Status}

      ",htmlHtml:"

      {Source_Code}

      ",boxSelector:".wym_box",toolsSelector:".wym_tools",toolsListSelector:" ul",containersSelector:".wym_containers",classesSelector:".wym_classes",htmlSelector:".wym_html",iframeSelector:".wym_iframe iframe",iframeBodySelector:".wym_iframe",statusSelector:".wym_status",toolSelector:".wym_tools a",containerSelector:".wym_containers a",classSelector:".wym_classes a",htmlValSelector:".wym_html_val",hrefSelector:".wym_href",srcSelector:".wym_src",titleSelector:".wym_title",altSelector:".wym_alt",textSelector:".wym_text",rowsSelector:".wym_rows",colsSelector:".wym_cols",captionSelector:".wym_caption",summarySelector:".wym_summary",submitSelector:".wym_submit",cancelSelector:".wym_cancel",previewSelector:"",dialogTypeSelector:".wym_dialog_type",dialogLinkSelector:".wym_dialog_link",dialogImageSelector:".wym_dialog_image",dialogTableSelector:".wym_dialog_table",dialogPasteSelector:".wym_dialog_paste",dialogPreviewSelector:".wym_dialog_preview",updateSelector:".wymupdate",updateEvent:"click",dialogFeatures:"menubar=no,titlebar=no,toolbar=no,resizable=no,width=560,height=300,top=0,left=0",dialogFeaturesPreview:"menubar=no,titlebar=no,toolbar=no,resizable=no,scrollbars=yes,width=560,height=300,top=0,left=0",dialogHtml:""+WYMeditor.DIALOG_TITLE+""+WYMeditor.DIALOG_BODY+"",dialogLinkHtml:"
      {Link}
      ",dialogImageHtml:"
      {Image}
      ",dialogTableHtml:"
      {Table}
      ",dialogPasteHtml:"
      {Paste_From_Word}
      ",dialogPreviewHtml:"",dialogStyles:[],stringDelimiterLeft:"{",stringDelimiterRight:"}",preInit:null,preBind:null,postInit:null,preInitDialog:null,postInitDialog:null},t),this.each(function(){new WYMeditor.editor(jQuery(this),t)})},jQuery.extend({wymeditors:function(t){return WYMeditor.INSTANCES[t]}}),WYMeditor.editor.prototype.init=function(){if(jQuery.browser.msie)var WymClass=new WYMeditor.WymClassExplorer(this);else if(jQuery.browser.mozilla)var WymClass=new WYMeditor.WymClassMozilla(this);else if(jQuery.browser.opera)var WymClass=new WYMeditor.WymClassOpera(this);else if(jQuery.browser.safari||jQuery.browser.chrome)var WymClass=new WYMeditor.WymClassSafari(this);if(WymClass){jQuery.isFunction(this._options.preInit)&&this._options.preInit(this);var SaxListener=new WYMeditor.XhtmlSaxListener;jQuery.extend(SaxListener,WymClass),this.parser=new WYMeditor.XhtmlParser(SaxListener),(this._options.styles||this._options.stylesheet)&&this.configureEditorUsingRawCss(),this.helper=new WYMeditor.XmlHelper;for(var prop in WymClass)this[prop]=WymClass[prop];this._box=jQuery(this._element).hide().after(this._options.boxHtml).next().addClass("wym_box_"+this._index),jQuery.isFunction(jQuery.fn.data)&&(jQuery.data(this._box.get(0),WYMeditor.WYM_INDEX,this._index),jQuery.data(this._element.get(0),WYMeditor.WYM_INDEX,this._index));var h=WYMeditor.Helper,iframeHtml=this._options.iframeHtml;iframeHtml=h.replaceAll(iframeHtml,WYMeditor.INDEX,this._index),iframeHtml=h.replaceAll(iframeHtml,WYMeditor.IFRAME_BASE_PATH,this._options.iframeBasePath);var boxHtml=jQuery(this._box).html();boxHtml=h.replaceAll(boxHtml,WYMeditor.LOGO,this._options.logoHtml),boxHtml=h.replaceAll(boxHtml,WYMeditor.TOOLS,this._options.toolsHtml),boxHtml=h.replaceAll(boxHtml,WYMeditor.CONTAINERS,this._options.containersHtml),boxHtml=h.replaceAll(boxHtml,WYMeditor.CLASSES,this._options.classesHtml),boxHtml=h.replaceAll(boxHtml,WYMeditor.HTML,this._options.htmlHtml),boxHtml=h.replaceAll(boxHtml,WYMeditor.IFRAME,iframeHtml),boxHtml=h.replaceAll(boxHtml,WYMeditor.STATUS,this._options.statusHtml);for(var aTools=eval(this._options.toolsItems),sTools="",i=0;i0&&(n=r.item(0));for(var l=0;l=0;x--)e=s[x],e=e.replace(o,"
      "),jQuery(i).after("

      "+e+"

      ");else for(x=0;x"),jQuery(this._doc.body).append("

      "+e+"

      ")},WYMeditor.editor.prototype.insert=function(t){null!=this._iframe.contentWindow.getSelection().focusNode?this._exec(WYMeditor.INSERT_HTML,t):this.paste(t)},WYMeditor.editor.prototype.wrap=function(t,e){null!=this._iframe.contentWindow.getSelection().focusNode&&this._exec(WYMeditor.INSERT_HTML,t+this._iframe.contentWindow.getSelection().toString()+e)},WYMeditor.editor.prototype.unwrap=function(){null!=this._iframe.contentWindow.getSelection().focusNode&&this._exec(WYMeditor.INSERT_HTML,this._iframe.contentWindow.getSelection().toString())},WYMeditor.editor.prototype.addCssRules=function(t,e){var i=t.styleSheets[0];if(i)for(var s=0;s0&&(wym._exec(WYMeditor.CREATE_LINK,sStamp),jQuery("a[href="+sStamp+"]",wym._doc.body).attr(WYMeditor.HREF,t).attr(WYMeditor.TITLE,jQuery(wym._options.titleSelector).val())),window.close()}),jQuery(wym._options.dialogImageSelector+" "+wym._options.submitSelector).click(function(){var t=jQuery(wym._options.srcSelector).val();t.length>0&&(wym._exec(WYMeditor.INSERT_IMAGE,sStamp),jQuery("img[src$="+sStamp+"]",wym._doc.body).attr(WYMeditor.SRC,t).attr(WYMeditor.TITLE,jQuery(wym._options.titleSelector).val()).attr(WYMeditor.ALT,jQuery(wym._options.altSelector).val())),window.close()}),jQuery(wym._options.dialogTableSelector+" "+wym._options.submitSelector).click(function(){var t=jQuery(wym._options.rowsSelector).val(),e=jQuery(wym._options.colsSelector).val();if(t>0&&e>0){var i=wym._doc.createElement(WYMeditor.TABLE),s=null,o=jQuery(wym._options.captionSelector).val(),r=i.createCaption();for(r.innerHTML=o,x=0;x":" />")},WYMeditor.XmlHelper.prototype.contentTag=function(t,e,i){return i=i||!1,"<"+t+(i?this.tagOptions(i):"")+">"+e+""},WYMeditor.XmlHelper.prototype.cdataSection=function(t){return""},WYMeditor.XmlHelper.prototype.escapeOnce=function(t){return this._fixDoubleEscape(this.escapeEntities(t))},WYMeditor.XmlHelper.prototype._fixDoubleEscape=function(t){return t.replace(/&([a-z]+|(#\d+));/gi,"&$1;")},WYMeditor.XmlHelper.prototype.tagOptions=function(t){var e=this;e._formated_options="";for(var i in t){var s=t[i];"function"!=typeof s&&s.length>0&&(parseInt(i)==i&&"object"==typeof s&&(i=s.shift(),s=s.pop()),""!=i&&""!=s&&(e._formated_options+=" "+i+'="'+e.escapeOnce(s)+'"'))}return e._formated_options},WYMeditor.XmlHelper.prototype.escapeEntities=function(t,e){this._entitiesDiv.innerHTML=t,this._entitiesDiv.textContent=t;var i=this._entitiesDiv.innerHTML;return void 0===e&&(0!=e&&(i=i.replace('"',""")),1==e&&(i=i.replace('"',"'"))),i},WYMeditor.XmlHelper.prototype.parseAttributes=function(t){var e=[],i=t.split(/((=\s*")(")("))|((=\s*\')(\')(\'))|((=\s*[^>\s]*))/g);if(i.toString()!=t)for(var s in i){var o=i[s];if("function"!=typeof o&&0!=o.length){var r=new RegExp("(\\w+)\\s*"+o);if(match=t.match(r)){var a=o.replace(/^[\s=]+/,""),n=a.charAt(0);n='"'==n?'"':"'"==n?"'":"",""!=n&&(a='"'==n?a.replace(/^"|"+$/g,""):a.replace(/^'|'+$/g,"")),t=t.replace(match[0],""),e.push([match[1],a])}}}return e},WYMeditor.XhtmlValidator={_attributes:{core:{except:["base","head","html","meta","param","script","style","title"],attributes:["class","id","style","title","accesskey","tabindex"]},language:{except:["base","br","hr","iframe","param","script"],attributes:{dir:["ltr","rtl"],0:"lang",1:"xml:lang"}},keyboard:{attributes:{accesskey:/^(\w){1}$/,tabindex:/^(\d)+$/}}},_events:{window:{only:["body"],attributes:["onload","onunload"]},form:{only:["form","input","textarea","select","a","label","button"],attributes:["onchange","onsubmit","onreset","onselect","onblur","onfocus"]},keyboard:{except:["base","bdo","br","frame","frameset","head","html","iframe","meta","param","script","style","title"],attributes:["onkeydown","onkeypress","onkeyup"]},mouse:{except:["base","bdo","br","head","html","meta","param","script","style","title"],attributes:["onclick","ondblclick","onmousedown","onmousemove","onmouseover","onmouseout","onmouseup"]}},_tags:{a:{attributes:{0:"charset",1:"coords",2:"href",3:"hreflang",4:"name",rel:/^(alternate|designates|stylesheet|start|next|prev|contents|index|glossary|copyright|chapter|section|subsection|appendix|help|bookmark| |shortcut|icon)+$/,rev:/^(alternate|designates|stylesheet|start|next|prev|contents|index|glossary|copyright|chapter|section|subsection|appendix|help|bookmark| |shortcut|icon)+$/,shape:/^(rect|rectangle|circ|circle|poly|polygon)$/,5:"type"}},0:"abbr",1:"acronym",2:"address",area:{attributes:{0:"alt",1:"coords",2:"href",nohref:/^(true|false)$/,shape:/^(rect|rectangle|circ|circle|poly|polygon)$/},required:["alt"]},3:"b",base:{attributes:["href"],required:["href"]},bdo:{attributes:{dir:/^(ltr|rtl)$/},required:["dir"]},4:"big",blockquote:{attributes:["cite"]},5:"body",6:"br",button:{attributes:{disabled:/^(disabled)$/,type:/^(button|reset|submit)$/,0:"value"},inside:"form"},7:"caption",8:"cite",9:"code",col:{attributes:{align:/^(right|left|center|justify)$/,0:"char",1:"charoff",span:/^(\d)+$/,valign:/^(top|middle|bottom|baseline)$/,2:"width"},inside:"colgroup"},colgroup:{attributes:{align:/^(right|left|center|justify)$/,0:"char",1:"charoff",span:/^(\d)+$/,valign:/^(top|middle|bottom|baseline)$/,2:"width"}},10:"dd",del:{attributes:{0:"cite",datetime:/^([0-9]){8}/}},11:"div",12:"dfn",13:"dl",14:"dt",15:"em",fieldset:{inside:"form"},form:{attributes:{0:"action",1:"accept",2:"accept-charset",3:"enctype",method:/^(get|post)$/},required:["action"]},head:{attributes:["profile"]},16:"h1",17:"h2",18:"h3",19:"h4",20:"h5",21:"h6",22:"hr",html:{attributes:["xmlns"]},23:"i",img:{attributes:["alt","src","height","ismap","longdesc","usemap","width"],required:["alt","src"]},input:{ +attributes:{0:"accept",1:"alt",checked:/^(checked)$/,disabled:/^(disabled)$/,maxlength:/^(\d)+$/,2:"name",readonly:/^(readonly)$/,size:/^(\d)+$/,3:"src",type:/^(button|checkbox|file|hidden|image|password|radio|reset|submit|text)$/,4:"value"},inside:"form"},ins:{attributes:{0:"cite",datetime:/^([0-9]){8}/}},24:"kbd",label:{attributes:["for"],inside:"form"},25:"legend",26:"li",link:{attributes:{0:"charset",1:"href",2:"hreflang",media:/^(all|braille|print|projection|screen|speech|,|;| )+$/i,rel:/^(alternate|appendix|bookmark|chapter|contents|copyright|glossary|help|home|index|next|prev|section|start|stylesheet|subsection| |shortcut|icon)+$/i,rev:/^(alternate|appendix|bookmark|chapter|contents|copyright|glossary|help|home|index|next|prev|section|start|stylesheet|subsection| |shortcut|icon)+$/i,3:"type"},inside:"head"},map:{attributes:["id","name"],required:["id"]},meta:{attributes:{0:"content","http-equiv":/^(content\-type|expires|refresh|set\-cookie)$/i,1:"name",2:"scheme"},required:["content"]},27:"noscript",object:{attributes:["archive","classid","codebase","codetype","data","declare","height","name","standby","type","usemap","width"]},28:"ol",optgroup:{attributes:{0:"label",disabled:/^(disabled)$/},required:["label"]},option:{attributes:{0:"label",disabled:/^(disabled)$/,selected:/^(selected)$/,1:"value"},inside:"select"},29:"p",param:{attributes:{0:"type",valuetype:/^(data|ref|object)$/,1:"valuetype",2:"value"},required:["name"]},30:"pre",q:{attributes:["cite"]},31:"samp",script:{attributes:{type:/^(text\/ecmascript|text\/javascript|text\/jscript|text\/vbscript|text\/vbs|text\/xml)$/,0:"charset",defer:/^(defer)$/,1:"src"},required:["type"]},select:{attributes:{disabled:/^(disabled)$/,multiple:/^(multiple)$/,0:"name",1:"size"},inside:"form"},32:"small",33:"span",34:"strong",style:{attributes:{0:"type",media:/^(screen|tty|tv|projection|handheld|print|braille|aural|all)$/},required:["type"]},35:"sub",36:"sup",table:{attributes:{0:"border",1:"cellpadding",2:"cellspacing",frame:/^(void|above|below|hsides|lhs|rhs|vsides|box|border)$/,rules:/^(none|groups|rows|cols|all)$/,3:"summary",4:"width"}},tbody:{attributes:{align:/^(right|left|center|justify)$/,0:"char",1:"charoff",valign:/^(top|middle|bottom|baseline)$/}},td:{attributes:{0:"abbr",align:/^(left|right|center|justify|char)$/,1:"axis",2:"char",3:"charoff",colspan:/^(\d)+$/,4:"headers",rowspan:/^(\d)+$/,scope:/^(col|colgroup|row|rowgroup)$/,valign:/^(top|middle|bottom|baseline)$/}},textarea:{attributes:["cols","rows","disabled","name","readonly"],required:["cols","rows"],inside:"form"},tfoot:{attributes:{align:/^(right|left|center|justify)$/,0:"char",1:"charoff",valign:/^(top|middle|bottom)$/,2:"baseline"}},th:{attributes:{0:"abbr",align:/^(left|right|center|justify|char)$/,1:"axis",2:"char",3:"charoff",colspan:/^(\d)+$/,4:"headers",rowspan:/^(\d)+$/,scope:/^(col|colgroup|row|rowgroup)$/,valign:/^(top|middle|bottom|baseline)$/}},thead:{attributes:{align:/^(right|left|center|justify)$/,0:"char",1:"charoff",valign:/^(top|middle|bottom|baseline)$/}},37:"title",tr:{attributes:{align:/^(right|left|center|justify|char)$/,0:"char",1:"charoff",valign:/^(top|middle|bottom|baseline)$/}},38:"tt",39:"ul",40:"var"},skiped_attributes:[],skiped_attribute_values:[],getValidTagAttributes:function(t,e){var i={},s=this.getPossibleTagAttributes(t);for(var o in e){var r=e[o],a=WYMeditor.Helper;a.contains(this.skiped_attributes,o)||a.contains(this.skiped_attribute_values,r)||"function"!=typeof r&&a.contains(s,o)&&(this.doesAttributeNeedsValidation(t,o)?this.validateAttribute(t,o,r)&&(i[o]=r):i[o]=r)}return i},getUniqueAttributesAndEventsForTag:function(t){var e=[];if(this._tags[t]&&this._tags[t].attributes)for(k in this._tags[t].attributes)e.push(parseInt(k)==k?this._tags[t].attributes[k]:k);return e},getDefaultAttributesAndEventsForTags:function(){var t=[];for(var e in this._events)t.push(this._events[e]);for(var e in this._attributes)t.push(this._attributes[e]);return t},isValidTag:function(t){if(this._tags[t])return!0;for(var e in this._tags)if(this._tags[e]==t)return!0;return!1},getDefaultAttributesAndEventsForTag:function(t){var e=[];if(this.isValidTag(t)){var i=this.getDefaultAttributesAndEventsForTags();for(var s in i){var o=i[s];if("object"==typeof o){var r=WYMeditor.Helper;if(o.except&&r.contains(o.except,t)||o.only&&!r.contains(o.only,t))continue;var a=o.attributes?o.attributes:o.events;for(var n in a)e.push("string"!=typeof a[n]?n:a[n])}}}return e},doesAttributeNeedsValidation:function(t,e){return this._tags[t]&&(this._tags[t].attributes&&this._tags[t].attributes[e]||this._tags[t].required&&WYMeditor.Helper.contains(this._tags[t].required,e))},validateAttribute:function(t,e,i){return!(this._tags[t]&&this._tags[t].attributes&&this._tags[t].attributes[e]&&i.length>0&&!i.match(this._tags[t].attributes[e])||this._tags[t]&&this._tags[t].required&&WYMeditor.Helper.contains(this._tags[t].required,e)&&0==i.length)&&void 0!==this._tags[t]},getPossibleTagAttributes:function(t){return this._possible_tag_attributes||(this._possible_tag_attributes={}),this._possible_tag_attributes[t]||(this._possible_tag_attributes[t]=this.getUniqueAttributesAndEventsForTag(t).concat(this.getDefaultAttributesAndEventsForTag(t))),this._possible_tag_attributes[t]}},WYMeditor.ParallelRegex=function(t){return this._case=t,this._patterns=[],this._labels=[],this._regex=null,this},WYMeditor.ParallelRegex.prototype.addPattern=function(t,e){e=e||!0;var i=this._patterns.length;this._patterns[i]=t,this._labels[i]=e,this._regex=null},WYMeditor.ParallelRegex.prototype.match=function(t){if(0==this._patterns.length)return[!1,""];var e=t.match(this._getCompoundedRegex());if(!e)return[!1,""];for(var i=e[0],s=1;s","Comment")},WYMeditor.XhtmlLexer.prototype.addScriptTokens=function(t){this.addEntryPattern("","Script")},WYMeditor.XhtmlLexer.prototype.addCssTokens=function(t){this.addEntryPattern("","Css")},WYMeditor.XhtmlLexer.prototype.addTagTokens=function(t){this.addSpecialPattern("<\\s*[a-z0-9:-]+\\s*>",t,"OpeningTag"),this.addEntryPattern("<[a-z0-9:-]+[\\/ \\>]+",t,"OpeningTag"),this.addInTagDeclarationTokens("OpeningTag"),this.addSpecialPattern("",t,"ClosingTag")},WYMeditor.XhtmlLexer.prototype.addInTagDeclarationTokens=function(t){this.addSpecialPattern("\\s+",t,"Ignore"),this.addAttributeTokens(t),this.addExitPattern("/>",t),this.addExitPattern(">",t)},WYMeditor.XhtmlLexer.prototype.addAttributeTokens=function(t){this.addSpecialPattern("\\s*[a-z-_0-9]*:?[a-z-_0-9]+\\s*(?==)\\s*",t,"TagAttributes"),this.addEntryPattern('=\\s*"',t,"DoubleQuotedAttribute"),this.addPattern('\\\\"',"DoubleQuotedAttribute"),this.addExitPattern('"',"DoubleQuotedAttribute"),this.addEntryPattern("=\\s*'",t,"SingleQuotedAttribute"),this.addPattern("\\\\'","SingleQuotedAttribute"),this.addExitPattern("'","SingleQuotedAttribute"),this.addSpecialPattern("=\\s*[^>\\s]*",t,"UnquotedAttribute")},WYMeditor.XhtmlParser=function(t,e){var e=e||"Text";return this._Lexer=new WYMeditor.XhtmlLexer(this),this._Listener=t,this._mode=e,this._matches=[],this._last_match="",this._current_match="",this},WYMeditor.XhtmlParser.prototype.parse=function(t){return this._Lexer.parse(this.beforeParsing(t)),this.afterParsing(this._Listener.getResult())},WYMeditor.XhtmlParser.prototype.beforeParsing=function(t){return(t.match(/class="MsoNormal"/)||t.match(/ns = "urn:schemas-microsoft-com/))&&this._Listener.avoidStylingTagsAndAttributes(),this._Listener.beforeParsing(t)},WYMeditor.XhtmlParser.prototype.afterParsing=function(t){return this._Listener._avoiding_tags_implicitly&&this._Listener.allowStylingTagsAndAttributes(),this._Listener.afterParsing(t)},WYMeditor.XhtmlParser.prototype.Ignore=function(t,e){return!0},WYMeditor.XhtmlParser.prototype.Text=function(t){return this._Listener.addContent(t),!0},WYMeditor.XhtmlParser.prototype.Comment=function(t,e){return this._addNonTagBlock(t,e,"addComment")},WYMeditor.XhtmlParser.prototype.Script=function(t,e){return this._addNonTagBlock(t,e,"addScript")},WYMeditor.XhtmlParser.prototype.Css=function(t,e){return this._addNonTagBlock(t,e,"addCss")},WYMeditor.XhtmlParser.prototype._addNonTagBlock=function(t,e,i){switch(e){case WYMeditor.LEXER_ENTER:this._non_tag=t;break;case WYMeditor.LEXER_UNMATCHED:this._non_tag+=t;break;case WYMeditor.LEXER_EXIT:switch(i){case"addComment":this._Listener.addComment(this._non_tag+t);break;case"addScript":this._Listener.addScript(this._non_tag+t);break;case"addCss":this._Listener.addCss(this._non_tag+t)}}return!0},WYMeditor.XhtmlParser.prototype.OpeningTag=function(t,e){switch(e){case WYMeditor.LEXER_ENTER:this._tag=this.normalizeTag(t),this._tag_attributes={};break;case WYMeditor.LEXER_SPECIAL:this._callOpenTagListener(this.normalizeTag(t));break;case WYMeditor.LEXER_EXIT:this._callOpenTagListener(this._tag,this._tag_attributes)}return!0},WYMeditor.XhtmlParser.prototype.ClosingTag=function(t,e){return this._callCloseTagListener(this.normalizeTag(t)),!0},WYMeditor.XhtmlParser.prototype._callOpenTagListener=function(t,e){var e=e||{};this.autoCloseUnclosedBeforeNewOpening(t),this._Listener.isBlockTag(t)?(this._Listener._tag_stack.push(t),this._Listener.fixNestingBeforeOpeningBlockTag(t,e),this._Listener.openBlockTag(t,e),this._increaseOpenTagCounter(t)):this._Listener.isInlineTag(t)?this._Listener.inlineTag(t,e):(this._Listener.openUnknownTag(t,e),this._increaseOpenTagCounter(t)),this._Listener.last_tag=t,this._Listener.last_tag_opened=!0,this._Listener.last_tag_attributes=e},WYMeditor.XhtmlParser.prototype._callCloseTagListener=function(t){if(this._decreaseOpenTagCounter(t))if(this.autoCloseUnclosedBeforeTagClosing(t),this._Listener.isBlockTag(t)){var e=this._Listener._tag_stack.pop();if(0==e)return;e!=t&&(t=e),this._Listener.closeBlockTag(t)}else this._Listener.closeUnknownTag(t);else this._Listener.closeUnopenedTag(t);this._Listener.last_tag=t,this._Listener.last_tag_opened=!1},WYMeditor.XhtmlParser.prototype._increaseOpenTagCounter=function(t){this._Listener._open_tags[t]=this._Listener._open_tags[t]||0,this._Listener._open_tags[t]++},WYMeditor.XhtmlParser.prototype._decreaseOpenTagCounter=function(t){return!!this._Listener._open_tags[t]&&(this._Listener._open_tags[t]--,0==this._Listener._open_tags[t]&&(this._Listener._open_tags[t]=void 0),!0)},WYMeditor.XhtmlParser.prototype.autoCloseUnclosedBeforeNewOpening=function(t){this._autoCloseUnclosed(t,!1)},WYMeditor.XhtmlParser.prototype.autoCloseUnclosedBeforeTagClosing=function(t){this._autoCloseUnclosed(t,!0)},WYMeditor.XhtmlParser.prototype._autoCloseUnclosed=function(t,e){var e=e||!1;if(this._Listener._open_tags)for(var i in this._Listener._open_tags){var s=this._Listener._open_tags[i];s>0&&this._Listener.shouldCloseTagAutomatically(i,t,e)&&this._callCloseTagListener(i,!0)}},WYMeditor.XhtmlParser.prototype.getTagReplacements=function(){return this._Listener.getTagReplacements()},WYMeditor.XhtmlParser.prototype.normalizeTag=function(t){t=t.replace(/^([\s<\/>]*)|([\s<\/>]*)$/gm,"").toLowerCase();var e=this._Listener.getTagReplacements();return e[t]?e[t]:t},WYMeditor.XhtmlParser.prototype.TagAttributes=function(t,e){return WYMeditor.LEXER_SPECIAL==e&&(this._current_attribute=t),!0},WYMeditor.XhtmlParser.prototype.DoubleQuotedAttribute=function(t,e){return WYMeditor.LEXER_UNMATCHED==e&&(this._tag_attributes[this._current_attribute]=t),!0},WYMeditor.XhtmlParser.prototype.SingleQuotedAttribute=function(t,e){return WYMeditor.LEXER_UNMATCHED==e&&(this._tag_attributes[this._current_attribute]=t),!0},WYMeditor.XhtmlParser.prototype.UnquotedAttribute=function(t,e){return this._tag_attributes[this._current_attribute]=t.replace(/^=/,""),!0},WYMeditor.XhtmlSaxListener=function(){return this.output="",this.helper=new WYMeditor.XmlHelper,this._open_tags={},this.validator=WYMeditor.XhtmlValidator,this._tag_stack=[],this.avoided_tags=[],this.entities={" ":" ","¡":"¡","¢":"¢","£":"£","¤":"¤","¥":"¥","¦":"¦","§":"§","¨":"¨","©":"©","ª":"ª","«":"«","¬":"¬","­":"­","®":"®","¯":"¯","°":"°","±":"±","²":"²","³":"³","´":"´","µ":"µ","¶":"¶","·":"·","¸":"¸","¹":"¹","º":"º","»":"»","¼":"¼","½":"½","¾":"¾","¿":"¿","À":"À","Á":"Á","Â":"Â","Ã":"Ã","Ä":"Ä","Å":"Å","Æ":"Æ","Ç":"Ç","È":"È","É":"É","Ê":"Ê","Ë":"Ë","Ì":"Ì","Í":"Í","Î":"Î","Ï":"Ï","Ð":"Ð","Ñ":"Ñ","Ò":"Ò","Ó":"Ó","Ô":"Ô","Õ":"Õ","Ö":"Ö","×":"×","Ø":"Ø","Ù":"Ù","Ú":"Ú","Û":"Û","Ü":"Ü","Ý":"Ý","Þ":"Þ","ß":"ß","à":"à","á":"á","â":"â","ã":"ã","ä":"ä","å":"å","æ":"æ","ç":"ç","è":"è","é":"é","ê":"ê","ë":"ë","ì":"ì","í":"í","î":"î","ï":"ï","ð":"ð","ñ":"ñ","ò":"ò","ó":"ó","ô":"ô","õ":"õ","ö":"ö","÷":"÷","ø":"ø","ù":"ù","ú":"ú","û":"û","ü":"ü","ý":"ý","þ":"þ","ÿ":"ÿ","Œ":"Œ","œ":"œ","Š":"Š","š":"š","Ÿ":"Ÿ","ƒ":"ƒ","ˆ":"ˆ","˜":"˜","Α":"Α","Β":"Β","Γ":"Γ","Δ":"Δ","Ε":"Ε","Ζ":"Ζ","Η":"Η","Θ":"Θ","Ι":"Ι","Κ":"Κ","Λ":"Λ","Μ":"Μ","Ν":"Ν","Ξ":"Ξ","Ο":"Ο","Π":"Π","Ρ":"Ρ","Σ":"Σ","Τ":"Τ","Υ":"Υ","Φ":"Φ","Χ":"Χ","Ψ":"Ψ","Ω":"Ω","α":"α","β":"β","γ":"γ","δ":"δ","ε":"ε","ζ":"ζ","η":"η","θ":"θ","ι":"ι","κ":"κ","λ":"λ","μ":"μ","ν":"ν","ξ":"ξ","ο":"ο","π":"π","ρ":"ρ","ς":"ς","σ":"σ","τ":"τ","υ":"υ","φ":"φ","χ":"χ","ψ":"ψ","ω":"ω","ϑ":"ϑ","ϒ":"ϒ","ϖ":"ϖ"," ":" "," ":" "," ":" ","‌":"‌","‍":"‍","‎":"‎","‏":"‏","–":"–","—":"—","‘":"‘","’":"’","‚":"‚","“":"“","”":"”","„":"„","†":"†","‡":"‡","•":"•","…":"…","‰":"‰","′":"′","″":"″","‹":"‹","›":"›","‾":"‾","⁄":"⁄","€":"€","ℑ":"ℑ","℘":"℘","ℜ":"ℜ","™":"™","ℵ":"ℵ","←":"←","↑":"↑","→":"→","↓":"↓","↔":"↔","↵":"↵","⇐":"⇐","⇑":"⇑","⇒":"⇒","⇓":"⇓","⇔":"⇔","∀":"∀","∂":"∂","∃":"∃","∅":"∅","∇":"∇","∈":"∈","∉":"∉","∋":"∋","∏":"∏","∑":"∑","−":"−","∗":"∗","√":"√","∝":"∝","∞":"∞","∠":"∠","∧":"∧","∨":"∨","∩":"∩","∪":"∪","∫":"∫","∴":"∴","∼":"∼","≅":"≅","≈":"≈","≠":"≠","≡":"≡","≤":"≤","≥":"≥","⊂":"⊂","⊃":"⊃","⊄":"⊄","⊆":"⊆","⊇":"⊇","⊕":"⊕","⊗":"⊗","⊥":"⊥","⋅":"⋅","⌈":"⌈","⌉":"⌉","⌊":"⌊","⌋":"⌋","⟨":"〈","⟩":"〉","◊":"◊","♠":"♠","♣":"♣","♥":"♥","♦":"♦"},this.block_tags=["a","abbr","acronym","address","area","b","base","bdo","big","blockquote","body","button","caption","cite","code","col","colgroup","dd","del","div","dfn","dl","dt","em","fieldset","form","head","h1","h2","h3","h4","h5","h6","html","i","ins","kbd","label","legend","li","map","noscript","object","ol","optgroup","option","p","param","pre","q","samp","script","select","small","span","strong","style","sub","sup","table","tbody","td","textarea","tfoot","th","thead","title","tr","tt","ul","var","extends"],this.inline_tags=["br","hr","img","input"],this},WYMeditor.XhtmlSaxListener.prototype.shouldCloseTagAutomatically=function(t,e,i){var i=i||!1;return!("td"!=t||!(i&&"tr"==e||!i&&"td"==e))||!("option"!=t||!(i&&"select"==e||!i&&"option"==e))},WYMeditor.XhtmlSaxListener.prototype.beforeParsing=function(t){return this.output="",t},WYMeditor.XhtmlSaxListener.prototype.afterParsing=function(t){return t=this.replaceNamedEntities(t),t=this.joinRepeatedEntities(t),t=this.removeEmptyTags(t),t=this.removeBrInPre(t)},WYMeditor.XhtmlSaxListener.prototype.replaceNamedEntities=function(t){for(var e in this.entities)t=t.replace(new RegExp(e,"g"),this.entities[e]);return t},WYMeditor.XhtmlSaxListener.prototype.joinRepeatedEntities=function(t){var e="em|strong|sub|sup|acronym|pre|del|address";return t.replace(new RegExp("<\\1>",""),"").replace(new RegExp("(s*<("+e+")>s*){2}(.*)(s*s*){2}",""),"<$2>$3<$2>")},WYMeditor.XhtmlSaxListener.prototype.removeEmptyTags=function(t){return t.replace(new RegExp("<("+this.block_tags.join("|").replace(/\|td/,"").replace(/\|p/,"").replace(/\|th/,"")+")>(
      | | |\\s)*","g"),"")},WYMeditor.XhtmlSaxListener.prototype.removeBrInPre=function(t){var e=t.match(new RegExp("]*>(.*?)","gmi"));if(e)for(var i=0;i","g"),String.fromCharCode(13,10)));return t},WYMeditor.XhtmlSaxListener.prototype.getResult=function(){return this.output},WYMeditor.XhtmlSaxListener.prototype.getTagReplacements=function(){return{b:"strong",i:"em"}},WYMeditor.XhtmlSaxListener.prototype.addContent=function(t){this.output+=t},WYMeditor.XhtmlSaxListener.prototype.addComment=function(t){this.remove_comments&&(this.output+=t)},WYMeditor.XhtmlSaxListener.prototype.addScript=function(t){this.remove_scripts||(this.output+=t)},WYMeditor.XhtmlSaxListener.prototype.addCss=function(t){this.remove_embeded_styles||(this.output+=t)},WYMeditor.XhtmlSaxListener.prototype.openBlockTag=function(t,e){this.output+=this.helper.tag(t,this.validator.getValidTagAttributes(t,e),!0)},WYMeditor.XhtmlSaxListener.prototype.inlineTag=function(t,e){this.output+=this.helper.tag(t,this.validator.getValidTagAttributes(t,e))},WYMeditor.XhtmlSaxListener.prototype.openUnknownTag=function(t,e){},WYMeditor.XhtmlSaxListener.prototype.closeBlockTag=function(t){this.output=this.output.replace(/
      $/,"")+this._getClosingTagContent("before",t)+""+this._getClosingTagContent("after",t)},WYMeditor.XhtmlSaxListener.prototype.closeUnknownTag=function(t){},WYMeditor.XhtmlSaxListener.prototype.closeUnopenedTag=function(t){this.output+=""},WYMeditor.XhtmlSaxListener.prototype.avoidStylingTagsAndAttributes=function(){this.avoided_tags=["div","span"],this.validator.skiped_attributes=["style"],this.validator.skiped_attribute_values=["MsoNormal","main1"],this._avoiding_tags_implicitly=!0},WYMeditor.XhtmlSaxListener.prototype.allowStylingTagsAndAttributes=function(){this.avoided_tags=[],this.validator.skiped_attributes=[],this.validator.skiped_attribute_values=[],this._avoiding_tags_implicitly=!1},WYMeditor.XhtmlSaxListener.prototype.isBlockTag=function(t){return!WYMeditor.Helper.contains(this.avoided_tags,t)&&WYMeditor.Helper.contains(this.block_tags,t)},WYMeditor.XhtmlSaxListener.prototype.isInlineTag=function(t){return!WYMeditor.Helper.contains(this.avoided_tags,t)&&WYMeditor.Helper.contains(this.inline_tags,t)},WYMeditor.XhtmlSaxListener.prototype.insertContentAfterClosingTag=function(t,e){this._insertContentWhenClosingTag("after",t,e)},WYMeditor.XhtmlSaxListener.prototype.insertContentBeforeClosingTag=function(t,e){this._insertContentWhenClosingTag("before",t,e)},WYMeditor.XhtmlSaxListener.prototype.fixNestingBeforeOpeningBlockTag=function(t,e){"li"==t||"ul"!=t&&"ol"!=t||!this.last_tag||this.last_tag_opened||"li"!=this.last_tag||(this.output=this.output.replace(/<\/li>$/,""),this.insertContentAfterClosingTag(t,""))},WYMeditor.XhtmlSaxListener.prototype._insertContentWhenClosingTag=function(t,e,i){this["_insert_"+t+"_closing"]||(this["_insert_"+t+"_closing"]=[]),this["_insert_"+t+"_closing"][e]||(this["_insert_"+t+"_closing"][e]=[]),this["_insert_"+t+"_closing"][e].push(i)},WYMeditor.XhtmlSaxListener.prototype._getClosingTagContent=function(t,e){return this["_insert_"+t+"_closing"]&&this["_insert_"+t+"_closing"][e]&&this["_insert_"+t+"_closing"][e].length>0?this["_insert_"+t+"_closing"][e].pop():""},WYMeditor.WymCssLexer=function(t,e){var e=void 0===e||e;return jQuery.extend(this,new WYMeditor.Lexer(t,e?"Ignore":"WymCss")),this.mapHandler("WymCss","Ignore"),1==e&&(this.addEntryPattern("/\\*[<\\s]*WYMeditor[>\\s]*\\*/","Ignore","WymCss"),this.addExitPattern("/\\*[\\s]*\\*/","WymCss")),this.addSpecialPattern("[\\sa-z1-6]*\\.[a-z-_0-9]+","WymCss","WymCssStyleDeclaration"),this.addEntryPattern("/\\*","WymCss","WymCssComment"),this.addExitPattern("\\*/","WymCssComment"),this.addEntryPattern("{","WymCss","WymCssStyle"),this.addExitPattern("}","WymCssStyle"),this.addEntryPattern("/\\*","WymCssStyle","WymCssFeedbackStyle"),this.addExitPattern("\\*/","WymCssFeedbackStyle"),this},WYMeditor.WymCssParser=function(){return this._in_style=!1,this._has_title=!1,this.only_wym_blocks=!0,this.css_settings={classesItems:[],editorStyles:[],dialogStyles:[]},this},WYMeditor.WymCssParser.prototype.parse=function(t,e){var e=void 0===e?this.only_wym_blocks:e;this._Lexer=new WYMeditor.WymCssLexer(this,e),this._Lexer.parse(t)},WYMeditor.WymCssParser.prototype.Ignore=function(t,e){return!0},WYMeditor.WymCssParser.prototype.WymCssComment=function(t,e){return!t.match(/end[a-z0-9\s]*wym[a-z0-9\s]*/im)&&(e==WYMeditor.LEXER_UNMATCHED&&(this._in_style?this._current_item[this._current_element]&&(this._current_item[this._current_element].expressions?this._current_item[this._current_element].expressions.push(t):this._current_item[this._current_element].expressions=[t]):(this._has_title=!0,this._current_item={title:WYMeditor.Helper.trim(t)}),this._in_style=!0),!0)},WYMeditor.WymCssParser.prototype.WymCssStyle=function(t,e){return e==WYMeditor.LEXER_UNMATCHED?""!=(t=WYMeditor.Helper.trim(t))&&(this._current_item[this._current_element].style=t):e==WYMeditor.LEXER_EXIT&&(this._in_style=!1,this._has_title=!1,this.addStyleSetting(this._current_item)),!0},WYMeditor.WymCssParser.prototype.WymCssFeedbackStyle=function(t,e){return e==WYMeditor.LEXER_UNMATCHED&&(this._current_item[this._current_element].feedback_style=t.replace(/^([\s\/\*]*)|([\s\/\*]*)$/gm,"")),!0},WYMeditor.WymCssParser.prototype.WymCssStyleDeclaration=function(t){t=t.replace(/^([\s\.]*)|([\s\.*]*)$/gm,"");var e="";if(t.indexOf(".")>0){var i=t.split(".");this._current_element=i[1];var e=i[0]}else this._current_element=t;return this._has_title||(this._current_item={title:(e?e.toUpperCase()+": ":"")+this._current_element},this._has_title=!0),this._current_item[this._current_element]||(this._current_item[this._current_element]={name:this._current_element}),e&&(this._current_item[this._current_element].tags?this._current_item[this._current_element].tags.push(e):this._current_item[this._current_element].tags=[e]),!0},WYMeditor.WymCssParser.prototype.addStyleSetting=function(t){for(var e in t){var i=t[e];"object"==typeof i&&"title"!=e&&(this.css_settings.classesItems.push({name:WYMeditor.Helper.trim(i.name),title:t.title,expr:WYMeditor.Helper.trim((i.expressions||i.tags).join(", "))}),i.feedback_style&&this.css_settings.editorStyles.push({name:"."+WYMeditor.Helper.trim(i.name),css:i.feedback_style}),i.style&&this.css_settings.dialogStyles.push({name:"."+WYMeditor.Helper.trim(i.name),css:i.style}))}},jQuery.fn.isPhantomNode=function(){return 3==this[0].nodeType&&!/[^\t\n\r ]/.test(this[0].data)},WYMeditor.isPhantomNode=function(t){return 3==t.nodeType&&!/[^\t\n\r ]/.test(t.data)},WYMeditor.isPhantomString=function(t){return!/[^\t\n\r ]/.test(t)},jQuery.fn.parentsOrSelf=function(t){var e=this;return 3==e[0].nodeType&&(e=e.parents().slice(0,1)),1==e.filter(t).size()?e:e.parents(t).slice(0,1)},WYMeditor.Helper={replaceAll:function(t,e,i){var s=new RegExp(e,"g");return t.replace(s,i)},insertAt:function(t,e,i){return t.substr(0,i)+e+t.substring(i)},trim:function(t){return t.replace(/^(\s*)|(\s*)$/gm,"")},contains:function(t,e){for(var i=0;i1||s.tagName.toLowerCase()==WYMeditor.OL||s.tagName.toLowerCase()==WYMeditor.UL)&&this._doc.execCommand(t)}break;default:e?this._doc.execCommand(t,!1,e):this._doc.execCommand(t)}this.listen()},WYMeditor.WymClassExplorer.prototype.selected=function(){var t=this._iframe.contentWindow.document.caretPos;if(null!=t&&void 0!=t.parentElement)return t.parentElement()},WYMeditor.WymClassExplorer.prototype.saveCaret=function(){this._doc.caretPos=this._doc.selection.createRange()},WYMeditor.WymClassExplorer.prototype.addCssRule=function(t,e){t.addRule(e.name,e.css)},WYMeditor.WymClassExplorer.prototype.insert=function(t){var e=this._doc.selection.createRange();if(jQuery(e.parentElement()).parents(this._options.iframeBodySelector).is("*"))try{e.pasteHTML(t)}catch(t){}else this.paste(t)},WYMeditor.WymClassExplorer.prototype.wrap=function(t,e){var i=this._doc.selection.createRange();if(jQuery(i.parentElement()).parents(this._options.iframeBodySelector).is("*"))try{i.pasteHTML(t+i.text+e)}catch(t){}},WYMeditor.WymClassExplorer.prototype.unwrap=function(){var t=this._doc.selection.createRange();if(jQuery(t.parentElement()).parents(this._options.iframeBodySelector).is("*"))try{var e=t.text;this._exec("Cut"),t.pasteHTML(e)}catch(t){}},WYMeditor.WymClassExplorer.prototype.keyup=function(){this._selected_image=null},WYMeditor.WymClassExplorer.prototype.setFocusToNode=function(t){var e=this._doc.selection.createRange();e.moveToElementText(t),e.collapse(!1),e.move("character",-1),e.select(),t.focus()},WYMeditor.WymClassMozilla=function(t){this._wym=t,this._class="class",this._newLine="\n"},WYMeditor.WymClassMozilla.prototype.initIframe=function(iframe){this._iframe=iframe,this._doc=iframe.contentDocument;var styles=this._doc.styleSheets[0],aCss=eval(this._options.editorStyles);this.addCssRules(this._doc,aCss),this._doc.title=this._wym._index,jQuery("html",this._doc).attr("dir",this._options.direction),this.html(this._wym._html),this.enableDesignMode(),jQuery.isFunction(this._options.preBind)&&this._options.preBind(this),this._wym.bindEvents(),jQuery(this._doc).bind("keydown",this.keydown),jQuery(this._doc).bind("keyup",this.keyup),jQuery(this._doc).bind("focus",this.enableDesignMode),jQuery.isFunction(this._options.postInit)&&this._options.postInit(this),this.listen()},WYMeditor.WymClassMozilla.prototype.html=function(t){if("string"!=typeof t)return jQuery(this._doc.body).html();try{this._doc.designMode="off"}catch(t){}t=t.replace(/]*)>/gi,"").replace(/<\/em>/gi,"").replace(/]*)>/gi,"").replace(/<\/strong>/gi,""),jQuery(this._doc.body).html(t),this.enableDesignMode()},WYMeditor.WymClassMozilla.prototype._exec=function(t,e){if(!this.selected())return!1;switch(t){case WYMeditor.INDENT:case WYMeditor.OUTDENT:var i=this.selected(),s=this._iframe.contentWindow.getSelection(),o=s.anchorNode;if("#text"==o.nodeName&&(o=o.parentNode),i=this.findUp(i,WYMeditor.BLOCKS),o=this.findUp(o,WYMeditor.BLOCKS),i&&i==o&&i.tagName.toLowerCase()==WYMeditor.LI){var r=i.parentNode.parentNode;(i.parentNode.childNodes.length>1||r.tagName.toLowerCase()==WYMeditor.OL||r.tagName.toLowerCase()==WYMeditor.UL)&&this._doc.execCommand(t,"",null)}break;default:e?this._doc.execCommand(t,"",e):this._doc.execCommand(t,"",null)}this.selected().tagName.toLowerCase()==WYMeditor.BODY&&this._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P),this.listen()},WYMeditor.WymClassMozilla.prototype.selected=function(){var t=this._iframe.contentWindow.getSelection(),e=t.focusNode;return e?"#text"==e.nodeName?e.parentNode:e:null},WYMeditor.WymClassMozilla.prototype.addCssRule=function(t,e){t.insertRule(e.name+" {"+e.css+"}",t.cssRules.length)},WYMeditor.WymClassMozilla.prototype.keydown=function(t){var e=WYMeditor.INSTANCES[this.title],i=null;if(t.keyCode===WYMeditor.KEY.ENTER&&(i=e.selected())){var s=$(i),o=(s.parent(),s.parents(".embedded-item"));if(o.size()){var r=$("

      ");return s.hasClass("title")?o.before(r):s.hasClass("content")&&o.after(r),e.setFocusToNode(r.get(0)),!1}}if(t.ctrlKey){if(66==t.keyCode)return e._exec(WYMeditor.BOLD),!1;if(73==t.keyCode)return e._exec(WYMeditor.ITALIC),!1}else 13==t.keyCode&&(t.shiftKey||(i=e.selected())&&i.tagName.toLowerCase()==WYMeditor.PRE&&(t.preventDefault(),e.insert("

      ")))},WYMeditor.WymClassMozilla.prototype.keyup=function(t){var e=WYMeditor.INSTANCES[this.title];e._selected_image=null;var i=null;if(13!=t.keyCode||t.shiftKey){if(8!=t.keyCode&&17!=t.keyCode&&46!=t.keyCode&&224!=t.keyCode&&!t.metaKey&&!t.ctrlKey){i=e.selected();var s=i.tagName.toLowerCase();"strong"!=s&&"b"!=s&&"em"!=s&&"i"!=s&&"sub"!=s&&"sup"!=s&&"a"!=s||(s=i.parentNode.tagName.toLowerCase()),s==WYMeditor.BODY&&e._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P)}}else jQuery(e._doc.body).children(WYMeditor.BR).remove()},WYMeditor.WymClassMozilla.prototype.enableDesignMode=function(){if("off"==this.designMode)try{this.designMode="on",this.execCommand("styleWithCSS","",!1)}catch(t){}},WYMeditor.WymClassMozilla.prototype.setFocusToNode=function(t){var e=document.createRange();e.selectNode(t);var i=this._iframe.contentWindow.getSelection();i.addRange(e),i.collapse(t,t.childNodes.length),this._iframe.contentWindow.focus()},WYMeditor.WymClassMozilla.prototype.openBlockTag=function(t,e){var e=this.validator.getValidTagAttributes(t,e);if("span"==t&&e.style){var i=this.getTagForStyle(e.style);if(!i)return;this._tag_stack.pop();var t=i;this._tag_stack.push(i),e.style=""}this.output+=this.helper.tag(t,e,!0)},WYMeditor.WymClassMozilla.prototype.getTagForStyle=function(t){return/bold/.test(t)?"strong":/italic/.test(t)?"em":/sub/.test(t)?"sub":!!/sub/.test(t)&&"super"},WYMeditor.WymClassOpera=function(t){this._wym=t,this._class="class",this._newLine="\r\n"},WYMeditor.WymClassOpera.prototype.initIframe=function(iframe){this._iframe=iframe,this._doc=iframe.contentWindow.document;var styles=this._doc.styleSheets[0],aCss=eval(this._options.editorStyles);this.addCssRules(this._doc,aCss),this._doc.title=this._wym._index,jQuery("html",this._doc).attr("dir",this._options.direction),this._doc.designMode="on",this.html(this._wym._html),jQuery.isFunction(this._options.preBind)&&this._options.preBind(this),this._wym.bindEvents(),jQuery(this._doc).bind("keydown",this.keydown),jQuery(this._doc).bind("keyup",this.keyup),jQuery.isFunction(this._options.postInit)&&this._options.postInit(this),this.listen()},WYMeditor.WymClassOpera.prototype._exec=function(t,e){e?this._doc.execCommand(t,!1,e):this._doc.execCommand(t),this.listen()},WYMeditor.WymClassOpera.prototype.selected=function(){var t=this._iframe.contentWindow.getSelection(),e=t.focusNode;return e?"#text"==e.nodeName?e.parentNode:e:null},WYMeditor.WymClassOpera.prototype.addCssRule=function(t,e){t.insertRule(e.name+" {"+e.css+"}",t.cssRules.length)},WYMeditor.WymClassOpera.prototype.keydown=function(t){var e=WYMeditor.INSTANCES[this.title],i=e._iframe.contentWindow.getSelection();startNode=i.getRangeAt(0).startContainer,jQuery(startNode).parentsOrSelf(WYMeditor.MAIN_CONTAINERS.join(","))[0]||jQuery(startNode).parentsOrSelf("li")||t.keyCode==WYMeditor.KEY.ENTER||t.keyCode==WYMeditor.KEY.LEFT||t.keyCode==WYMeditor.KEY.UP||t.keyCode==WYMeditor.KEY.RIGHT||t.keyCode==WYMeditor.KEY.DOWN||t.keyCode==WYMeditor.KEY.BACKSPACE||t.keyCode==WYMeditor.KEY.DELETE||e._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P)},WYMeditor.WymClassOpera.prototype.keyup=function(t){WYMeditor.INSTANCES[this.title]._selected_image=null},WYMeditor.WymClassOpera.prototype.setFocusToNode=function(t){},WYMeditor.WymClassSafari=function(t){this._wym=t,this._class="class",this._newLine="\n"},WYMeditor.WymClassSafari.prototype.initIframe=function(iframe){this._iframe=iframe,this._doc=iframe.contentDocument;var styles=this._doc.styleSheets[0],aCss=eval(this._options.editorStyles);this.addCssRules(this._doc,aCss),this._doc.title=this._wym._index,jQuery("html",this._doc).attr("dir",this._options.direction),this._doc.designMode="on",this.html(this._wym._html),jQuery.isFunction(this._options.preBind)&&this._options.preBind(this),this._wym.bindEvents(),jQuery(this._doc).bind("keydown",this.keydown),jQuery(this._doc).bind("keyup",this.keyup),jQuery.isFunction(this._options.postInit)&&this._options.postInit(this),this.listen()},WYMeditor.WymClassSafari.prototype._exec=function(t,e){if(!this.selected())return!1;switch(t){case WYMeditor.INDENT:case WYMeditor.OUTDENT:var i=this.selected(),s=this._iframe.contentWindow.getSelection(),o=s.anchorNode;if("#text"==o.nodeName&&(o=o.parentNode),i=this.findUp(i,WYMeditor.BLOCKS),o=this.findUp(o,WYMeditor.BLOCKS),i&&i==o&&i.tagName.toLowerCase()==WYMeditor.LI){var r=i.parentNode.parentNode;(i.parentNode.childNodes.length>1||r.tagName.toLowerCase()==WYMeditor.OL||r.tagName.toLowerCase()==WYMeditor.UL)&&this._doc.execCommand(t,"",null)}break;case WYMeditor.INSERT_ORDEREDLIST:case WYMeditor.INSERT_UNORDEREDLIST:this._doc.execCommand(t,"",null);var i=this.selected(),a=this.findUp(i,WYMeditor.MAIN_CONTAINERS);a&&jQuery(a).replaceWith(jQuery(a).html());break;default:e?this._doc.execCommand(t,"",e):this._doc.execCommand(t,"",null)}var a=this.selected();a&&a.tagName.toLowerCase()==WYMeditor.BODY&&this._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P),this.listen()},WYMeditor.WymClassSafari.prototype.selected=function(){var t=this._iframe.contentWindow.getSelection(),e=t.focusNode;return e?"#text"==e.nodeName?e.parentNode:e:null},WYMeditor.WymClassSafari.prototype.addCssRule=function(t,e){t.insertRule(e.name+" {"+e.css+"}",t.cssRules.length)},WYMeditor.WymClassSafari.prototype.keydown=function(t){var e=WYMeditor.INSTANCES[this.title];if(t.keyCode===WYMeditor.KEY.ENTER){var i=e.selected();if(i){var s=$(i),o=(s.parent(),s.parents(".embedded-item"));if(o.size()){var r=$("

      ");return s.hasClass("title")?o.before(r):s.hasClass("content")&&o.after(r),e.setFocusToNode(r.get(0)),!1}}}if(t.ctrlKey){if(66==t.keyCode)return e._exec(WYMeditor.BOLD),!1;if(73==t.keyCode)return e._exec(WYMeditor.ITALIC),!1}},WYMeditor.WymClassSafari.prototype.keyup=function(t){var e=WYMeditor.INSTANCES[this.title];e._selected_image=null;var i=null;if(13!=t.keyCode||t.shiftKey||(jQuery(e._doc.body).children(WYMeditor.BR).remove(),(i=e.selected())&&i.tagName.toLowerCase()==WYMeditor.PRE&&e._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P)),13==t.keyCode&&t.shiftKey&&e._exec("InsertLineBreak"),8!=t.keyCode&&17!=t.keyCode&&46!=t.keyCode&&224!=t.keyCode&&!t.metaKey&&!t.ctrlKey){i=e.selected();var s=i.tagName.toLowerCase();"strong"!=s&&"b"!=s&&"em"!=s&&"i"!=s&&"sub"!=s&&"sup"!=s&&"a"!=s&&"span"!=s||(s=i.parentNode.tagName.toLowerCase()),s!=WYMeditor.BODY&&s!=WYMeditor.DIV||e._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P)}},WYMeditor.WymClassSafari.prototype.setFocusToNode=function(t){var e=this._iframe.contentDocument.createRange();e.selectNode(t);var i=this._iframe.contentWindow.getSelection();i.addRange(e),i.collapse(t,t.childNodes.length),this._iframe.contentWindow.focus()},WYMeditor.WymClassSafari.prototype.openBlockTag=function(t,e){var e=this.validator.getValidTagAttributes(t,e);if("span"==t&&e.style){var i=this.getTagForStyle(e.style);if(!i)return;this._tag_stack.pop();var t=i;this._tag_stack.push(i),e.style="","string"==typeof e.class&&(e.class=e.class.replace(/apple-style-span/gi,""))}this.output+=this.helper.tag(t,e,!0)},WYMeditor.WymClassSafari.prototype.getTagForStyle=function(t){return/bold/.test(t)?"strong":/italic/.test(t)?"em":/sub/.test(t)?"sub":!!/super/.test(t)&&"sup"}; +//# sourceMappingURL=../../../maps/libs/jquery/jquery.wymeditor.js.map diff --git a/static/scripts/libs/jquery/jstorage.js b/static/scripts/libs/jquery/jstorage.js index 0abdd835695..6122d5f6649 100644 --- a/static/scripts/libs/jquery/jstorage.js +++ b/static/scripts/libs/jquery/jstorage.js @@ -1,2 +1,2 @@ -!function(){function a(){var a=!1;if("localStorage"in window)try{window.localStorage.setItem("_tmptest","tmpval"),a=!0,window.localStorage.removeItem("_tmptest")}catch(b){}if(a)try{window.localStorage&&(v=window.localStorage,y="localStorage",B=v.jStorage_update)}catch(e){}else if("globalStorage"in window)try{window.globalStorage&&(v="localhost"==window.location.hostname?window.globalStorage["localhost.localdomain"]:window.globalStorage[window.location.hostname],y="globalStorage",B=v.jStorage_update)}catch(f){}else{if(w=document.createElement("link"),!w.addBehavior)return void(w=null);w.style.behavior="url(#default#userData)",document.getElementsByTagName("head")[0].appendChild(w);try{w.load("jStorage")}catch(g){w.setAttribute("jStorage","{}"),w.save("jStorage"),w.load("jStorage")}var i="{}";try{i=w.getAttribute("jStorage")}catch(j){}try{B=w.getAttribute("jStorage_update")}catch(m){}v.jStorage=i,y="userDataBehavior"}h(),k(),c(),l(),"addEventListener"in window&&window.addEventListener("pageshow",function(a){a.persisted&&d()},!1)}function b(){var a="{}";if("userDataBehavior"==y){w.load("jStorage");try{a=w.getAttribute("jStorage")}catch(b){}try{B=w.getAttribute("jStorage_update")}catch(c){}v.jStorage=a}h(),k(),l()}function c(){"localStorage"==y||"globalStorage"==y?"addEventListener"in window?window.addEventListener("storage",d,!1):document.attachEvent("onstorage",d):"userDataBehavior"==y&&setInterval(d,1e3)}function d(){var a;clearTimeout(A),A=setTimeout(function(){if("localStorage"==y||"globalStorage"==y)a=v.jStorage_update;else if("userDataBehavior"==y){w.load("jStorage");try{a=w.getAttribute("jStorage_update")}catch(b){}}a&&a!=B&&(B=a,e())},25)}function e(){var a,c=s.parse(s.stringify(u.__jstorage_meta.CRC32));b(),a=s.parse(s.stringify(u.__jstorage_meta.CRC32));var d,e=[],g=[];for(d in c)if(c.hasOwnProperty(d)){if(!a[d]){g.push(d);continue}c[d]!=a[d]&&"2."==String(c[d]).substr(0,2)&&e.push(d)}for(d in a)a.hasOwnProperty(d)&&(c[d]||e.push(d));f(e,"updated"),f(g,"deleted")}function f(a,b){if(a=[].concat(a||[]),"flushed"==b){a=[];for(var c in z)z.hasOwnProperty(c)&&a.push(c);b="deleted"}for(var d=0,e=a.length;e>d;d++){if(z[a[d]])for(var f=0,g=z[a[d]].length;g>f;f++)z[a[d]][f](a[d],b);if(z["*"])for(var f=0,g=z["*"].length;g>f;f++)z["*"][f](a[d],b)}}function g(){var a=(+new Date).toString();if("localStorage"==y||"globalStorage"==y)try{v.jStorage_update=a}catch(b){y=!1}else"userDataBehavior"==y&&(w.setAttribute("jStorage_update",a),w.save("jStorage"));d()}function h(){if(v.jStorage)try{u=s.parse(String(v.jStorage))}catch(a){v.jStorage="{}"}else v.jStorage="{}";x=v.jStorage?String(v.jStorage).length:0,u.__jstorage_meta||(u.__jstorage_meta={}),u.__jstorage_meta.CRC32||(u.__jstorage_meta.CRC32={})}function i(){n();try{v.jStorage=s.stringify(u),w&&(w.setAttribute("jStorage",v.jStorage),w.save("jStorage")),x=v.jStorage?String(v.jStorage).length:0}catch(a){}}function j(a){if(!a||"string"!=typeof a&&"number"!=typeof a)throw new TypeError("Key name must be string or numeric");if("__jstorage_meta"==a)throw new TypeError("Reserved key name");return!0}function k(){var a,b,c,d,e=1/0,h=!1,j=[];if(clearTimeout(t),u.__jstorage_meta&&"object"==typeof u.__jstorage_meta.TTL){a=+new Date,c=u.__jstorage_meta.TTL,d=u.__jstorage_meta.CRC32;for(b in c)c.hasOwnProperty(b)&&(c[b]<=a?(delete c[b],delete d[b],delete u[b],h=!0,j.push(b)):c[b]=0;a--)c=u.__jstorage_meta.PubSub[a],c[0]>D&&(d=c[0],m(c[1],c[2]));D=d}}function m(a,b){if(C[a])for(var c=0,d=C[a].length;d>c;c++)C[a][c](a,s.parse(s.stringify(b)))}function n(){if(u.__jstorage_meta.PubSub){for(var a=+new Date-2e3,b=0,c=u.__jstorage_meta.PubSub.length;c>b;b++)if(u.__jstorage_meta.PubSub[b][0]<=a){u.__jstorage_meta.PubSub.splice(b,u.__jstorage_meta.PubSub.length-b);break}u.__jstorage_meta.PubSub.length||delete u.__jstorage_meta.PubSub}}function o(a,b){u.__jstorage_meta||(u.__jstorage_meta={}),u.__jstorage_meta.PubSub||(u.__jstorage_meta.PubSub=[]),u.__jstorage_meta.PubSub.unshift([+new Date,a,b]),i(),g()}function p(a,b){for(var c,d=a.length,e=b^d,f=0;d>=4;)c=255&a.charCodeAt(f)|(255&a.charCodeAt(++f))<<8|(255&a.charCodeAt(++f))<<16|(255&a.charCodeAt(++f))<<24,c=1540483477*(65535&c)+((1540483477*(c>>>16)&65535)<<16),c^=c>>>24,c=1540483477*(65535&c)+((1540483477*(c>>>16)&65535)<<16),e=1540483477*(65535&e)+((1540483477*(e>>>16)&65535)<<16)^c,d-=4,++f;switch(d){case 3:e^=(255&a.charCodeAt(f+2))<<16;case 2:e^=(255&a.charCodeAt(f+1))<<8;case 1:e^=255&a.charCodeAt(f),e=1540483477*(65535&e)+((1540483477*(e>>>16)&65535)<<16)}return e^=e>>>13,e=1540483477*(65535&e)+((1540483477*(e>>>16)&65535)<<16),e^=e>>>15,e>>>0}var q="0.4.4",r=window.jQuery||window.$||(window.$={}),s={parse:window.JSON&&(window.JSON.parse||window.JSON.decode)||String.prototype.evalJSON&&function(a){return String(a).evalJSON()}||r.parseJSON||r.evalJSON,stringify:Object.toJSON||window.JSON&&(window.JSON.stringify||window.JSON.encode)||r.toJSON};if(!("parse"in s&&"stringify"in s))throw new Error("No JSON support found, include //cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js to page");var t,u={__jstorage_meta:{CRC32:{}}},v={jStorage:"{}"},w=null,x=0,y=!1,z={},A=!1,B=0,C={},D=+new Date,E={isXML:function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?"HTML"!==b.nodeName:!1},encode:function(a){if(!this.isXML(a))return!1;try{return(new XMLSerializer).serializeToString(a)}catch(b){try{return a.xml}catch(c){}}return!1},decode:function(a){var b,c="DOMParser"in window&&(new DOMParser).parseFromString||window.ActiveXObject&&function(a){var b=new ActiveXObject("Microsoft.XMLDOM");return b.async="false",b.loadXML(a),b};return c?(b=c.call("DOMParser"in window&&new DOMParser||window,a,"text/xml"),this.isXML(b)?b:!1):!1}};r.jStorage={version:q,set:function(a,b,c){if(j(a),c=c||{},"undefined"==typeof b)return this.deleteKey(a),b;if(E.isXML(b))b={_is_xml:!0,xml:E.encode(b)};else{if("function"==typeof b)return void 0;b&&"object"==typeof b&&(b=s.parse(s.stringify(b)))}return u[a]=b,u.__jstorage_meta.CRC32[a]="2."+p(s.stringify(b),2538058380),this.setTTL(a,c.TTL||0),f(a,"updated"),b},get:function(a,b){return j(a),a in u?u[a]&&"object"==typeof u[a]&&u[a]._is_xml?E.decode(u[a].xml):u[a]:"undefined"==typeof b?null:b},deleteKey:function(a){return j(a),a in u?(delete u[a],"object"==typeof u.__jstorage_meta.TTL&&a in u.__jstorage_meta.TTL&&delete u.__jstorage_meta.TTL[a],delete u.__jstorage_meta.CRC32[a],i(),g(),f(a,"deleted"),!0):!1},setTTL:function(a,b){var c=+new Date;return j(a),b=Number(b)||0,a in u?(u.__jstorage_meta.TTL||(u.__jstorage_meta.TTL={}),b>0?u.__jstorage_meta.TTL[a]=c+b:delete u.__jstorage_meta.TTL[a],i(),k(),g(),!0):!1},getTTL:function(a){var b,c=+new Date;return j(a),a in u&&u.__jstorage_meta.TTL&&u.__jstorage_meta.TTL[a]?(b=u.__jstorage_meta.TTL[a]-c,b||0):0},flush:function(){return u={__jstorage_meta:{CRC32:{}}},i(),g(),f(null,"flushed"),!0},storageObj:function(){function a(){}return a.prototype=u,new a},index:function(){var a,b=[];for(a in u)u.hasOwnProperty(a)&&"__jstorage_meta"!=a&&b.push(a);return b},storageSize:function(){return x},currentBackend:function(){return y},storageAvailable:function(){return!!y},listenKeyChange:function(a,b){j(a),z[a]||(z[a]=[]),z[a].push(b)},stopListening:function(a,b){if(j(a),z[a]){if(!b)return void delete z[a];for(var c=z[a].length-1;c>=0;c--)z[a][c]==b&&z[a].splice(c,1)}},subscribe:function(a,b){if(a=(a||"").toString(),!a)throw new TypeError("Channel not defined");C[a]||(C[a]=[]),C[a].push(b)},publish:function(a,b){if(a=(a||"").toString(),!a)throw new TypeError("Channel not defined");o(a,b)},reInit:function(){b()}},a()}(); -//# sourceMappingURL=../../../maps/libs/jquery/jstorage.js.map \ No newline at end of file +!function(){function e(){var e="{}";if("userDataBehavior"==v){p.load("jStorage");try{e=p.getAttribute("jStorage")}catch(e){}try{C=p.getAttribute("jStorage_update")}catch(e){}m.jStorage=e}i(),g(),_()}function t(){"localStorage"==v||"globalStorage"==v?"addEventListener"in window?window.addEventListener("storage",r,!1):document.attachEvent("onstorage",r):"userDataBehavior"==v&&setInterval(r,1e3)}function r(){var e;clearTimeout(T),T=setTimeout(function(){if("localStorage"==v||"globalStorage"==v)e=m.jStorage_update;else if("userDataBehavior"==v){p.load("jStorage");try{e=p.getAttribute("jStorage_update")}catch(e){}}e&&e!=C&&(C=e,a())},25)}function a(){var t,r=j.parse(j.stringify(h.__jstorage_meta.CRC32));e(),t=j.parse(j.stringify(h.__jstorage_meta.CRC32));var a,n=[],i=[];for(a in r)if(r.hasOwnProperty(a)){if(!t[a]){i.push(a);continue}r[a]!=t[a]&&"2."==String(r[a]).substr(0,2)&&n.push(a)}for(a in t)t.hasOwnProperty(a)&&(r[a]||n.push(a));o(n,"updated"),o(i,"deleted")}function o(e,t){if(e=[].concat(e||[]),"flushed"==t){e=[];for(var r in y)y.hasOwnProperty(r)&&e.push(r);t="deleted"}for(var a=0,o=e.length;a=0;e--)t=h.__jstorage_meta.PubSub[e],t[0]>O&&(r=t[0],c(t[1],t[2]));O=r}}function c(e,t){if(L[e])for(var r=0,a=L[e].length;r=4;)r=255&e.charCodeAt(n)|(255&e.charCodeAt(++n))<<8|(255&e.charCodeAt(++n))<<16|(255&e.charCodeAt(++n))<<24,r=1540483477*(65535&r)+((1540483477*(r>>>16)&65535)<<16),r^=r>>>24,r=1540483477*(65535&r)+((1540483477*(r>>>16)&65535)<<16),o=1540483477*(65535&o)+((1540483477*(o>>>16)&65535)<<16)^r,a-=4,++n;switch(a){case 3:o^=(255&e.charCodeAt(n+2))<<16;case 2:o^=(255&e.charCodeAt(n+1))<<8;case 1:o^=255&e.charCodeAt(n),o=1540483477*(65535&o)+((1540483477*(o>>>16)&65535)<<16)}return o^=o>>>13,o=1540483477*(65535&o)+((1540483477*(o>>>16)&65535)<<16),(o^=o>>>15)>>>0}var S=window.jQuery||window.$||(window.$={}),j={parse:window.JSON&&(window.JSON.parse||window.JSON.decode)||String.prototype.evalJSON&&function(e){return String(e).evalJSON()}||S.parseJSON||S.evalJSON,stringify:Object.toJSON||window.JSON&&(window.JSON.stringify||window.JSON.encode)||S.toJSON};if(!("parse"in j&&"stringify"in j))throw new Error("No JSON support found, include //cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js to page");var w,h={__jstorage_meta:{CRC32:{}}},m={jStorage:"{}"},p=null,b=0,v=!1,y={},T=!1,C=0,L={},O=+new Date,P={isXML:function(e){var t=(e?e.ownerDocument||e:0).documentElement;return!!t&&"HTML"!==t.nodeName},encode:function(e){if(!this.isXML(e))return!1;try{return(new XMLSerializer).serializeToString(e)}catch(t){try{return e.xml}catch(e){}}return!1},decode:function(e){var t,r="DOMParser"in window&&(new DOMParser).parseFromString||window.ActiveXObject&&function(e){var t=new ActiveXObject("Microsoft.XMLDOM");return t.async="false",t.loadXML(e),t};return!!r&&(t=r.call("DOMParser"in window&&new DOMParser||window,e,"text/xml"),!!this.isXML(t)&&t)}};S.jStorage={version:"0.4.4",set:function(e,t,r){if(u(e),r=r||{},void 0===t)return this.deleteKey(e),t;if(P.isXML(t))t={_is_xml:!0,xml:P.encode(t)};else{if("function"==typeof t)return;t&&"object"==typeof t&&(t=j.parse(j.stringify(t)))}return h[e]=t,h.__jstorage_meta.CRC32[e]="2."+f(j.stringify(t),2538058380),this.setTTL(e,r.TTL||0),o(e,"updated"),t},get:function(e,t){return u(e),e in h?h[e]&&"object"==typeof h[e]&&h[e]._is_xml?P.decode(h[e].xml):h[e]:void 0===t?null:t},deleteKey:function(e){return u(e),e in h&&(delete h[e],"object"==typeof h.__jstorage_meta.TTL&&e in h.__jstorage_meta.TTL&&delete h.__jstorage_meta.TTL[e],delete h.__jstorage_meta.CRC32[e],s(),n(),o(e,"deleted"),!0)},setTTL:function(e,t){var r=+new Date;return u(e),t=Number(t)||0,e in h&&(h.__jstorage_meta.TTL||(h.__jstorage_meta.TTL={}),t>0?h.__jstorage_meta.TTL[e]=r+t:delete h.__jstorage_meta.TTL[e],s(),g(),n(),!0)},getTTL:function(e){var t=+new Date;return u(e),e in h&&h.__jstorage_meta.TTL&&h.__jstorage_meta.TTL[e]?h.__jstorage_meta.TTL[e]-t||0:0},flush:function(){return h={__jstorage_meta:{CRC32:{}}},s(),n(),o(null,"flushed"),!0},storageObj:function(){function e(){}return e.prototype=h,new e},index:function(){var e,t=[];for(e in h)h.hasOwnProperty(e)&&"__jstorage_meta"!=e&&t.push(e);return t},storageSize:function(){return b},currentBackend:function(){return v},storageAvailable:function(){return!!v},listenKeyChange:function(e,t){u(e),y[e]||(y[e]=[]),y[e].push(t)},stopListening:function(e,t){if(u(e),y[e]){if(!t)return void delete y[e];for(var r=y[e].length-1;r>=0;r--)y[e][r]==t&&y[e].splice(r,1)}},subscribe:function(e,t){if(!(e=(e||"").toString()))throw new TypeError("Channel not defined");L[e]||(L[e]=[]),L[e].push(t)},publish:function(e,t){if(!(e=(e||"").toString()))throw new TypeError("Channel not defined");d(e,t)},reInit:function(){e()}},function(){var e=!1;if("localStorage"in window)try{window.localStorage.setItem("_tmptest","tmpval"),e=!0,window.localStorage.removeItem("_tmptest")}catch(e){}if(e)try{window.localStorage&&(m=window.localStorage,v="localStorage",C=m.jStorage_update)}catch(e){}else if("globalStorage"in window)try{window.globalStorage&&(m="localhost"==window.location.hostname?window.globalStorage["localhost.localdomain"]:window.globalStorage[window.location.hostname],v="globalStorage",C=m.jStorage_update)}catch(e){}else{if(p=document.createElement("link"),!p.addBehavior)return void(p=null);p.style.behavior="url(#default#userData)",document.getElementsByTagName("head")[0].appendChild(p);try{p.load("jStorage")}catch(e){p.setAttribute("jStorage","{}"),p.save("jStorage"),p.load("jStorage")}var a="{}";try{a=p.getAttribute("jStorage")}catch(e){}try{C=p.getAttribute("jStorage_update")}catch(e){}m.jStorage=a,v="userDataBehavior"}i(),g(),t(),_(),"addEventListener"in window&&window.addEventListener("pageshow",function(e){e.persisted&&r()},!1)}()}(); +//# sourceMappingURL=../../../maps/libs/jquery/jstorage.js.map diff --git a/static/scripts/libs/jquery/jstree.js b/static/scripts/libs/jquery/jstree.js index bbe55b4fc66..51ad4683e0b 100755 --- a/static/scripts/libs/jquery/jstree.js +++ b/static/scripts/libs/jquery/jstree.js @@ -1,6 +1,5 @@ -!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a,b){"use strict";if(!a.jstree){var c,d,e=0,f=!1,g=!1,h=!1,i=[],j=a("script:last").attr("src"),k=document,l=k.createElement("LI");l.setAttribute("role","treeitem"),c=k.createElement("I"),c.className="jstree-icon jstree-ocl",l.appendChild(c),c=k.createElement("A"),c.className="jstree-anchor",c.setAttribute("href","#"),d=k.createElement("I"),d.className="jstree-icon jstree-themeicon",c.appendChild(d),l.appendChild(c),c=d=null,a.jstree={version:"3.0.3",defaults:{plugins:[]},plugins:{},path:j&&-1!==j.indexOf("/")?j.replace(/\/[^\/]+$/,""):"",idregex:/[\\:&!^|()\[\]<>@*'+~#";.,=\- \/${}%]/g},a.jstree.create=function(b,c){var d=new a.jstree.core(++e),f=c;return c=a.extend(!0,{},a.jstree.defaults,c),f&&f.plugins&&(c.plugins=f.plugins),a.each(c.plugins,function(a,b){"core"!==a&&(d=d.plugin(b,c[b]))}),d.init(b,c),d},a.jstree.core=function(a){this._id=a,this._cnt=0,this._wrk=null,this._data={core:{themes:{name:!1,dots:!1,icons:!1},selected:[],last_error:{},working:!1,worker_queue:[]}}},a.jstree.reference=function(b){var c=null,d=null;if(b&&b.id&&(b=b.id),!d||!d.length)try{d=a(b)}catch(e){}if(!d||!d.length)try{d=a("#"+b.replace(a.jstree.idregex,"\\$&"))}catch(e){}return d&&d.length&&(d=d.closest(".jstree")).length&&(d=d.data("jstree"))?c=d:a(".jstree").each(function(){var d=a(this).data("jstree");return d&&d._model.data[b]?(c=d,!1):void 0}),c},a.fn.jstree=function(c){var d="string"==typeof c,e=Array.prototype.slice.call(arguments,1),f=null;return this.each(function(){var g=a.jstree.reference(this),h=d&&g?g[c]:null;return f=d&&h?h.apply(g,e):null,g||d||c!==b&&!a.isPlainObject(c)||a(this).data("jstree",new a.jstree.create(this,c)),(g&&!d||c===!0)&&(f=g||!1),null!==f&&f!==b?!1:void 0}),null!==f&&f!==b?f:this},a.expr[":"].jstree=a.expr.createPseudo(function(){return function(c){return a(c).hasClass("jstree")&&a(c).data("jstree")!==b}}),a.jstree.defaults.core={data:!1,strings:!1,check_callback:!1,error:a.noop,animation:200,multiple:!0,themes:{name:!1,url:!1,dir:!1,dots:!0,icons:!0,stripes:!1,variant:!1,responsive:!1},expand_selected_onload:!0,worker:!0,force_text:!1},a.jstree.core.prototype={plugin:function(b,c){var d=a.jstree.plugins[b];return d?(this._data[b]={},d.prototype=this,new d(c,this)):this},init:function(b,c){this._model={data:{"#":{id:"#",parent:null,parents:[],children:[],children_d:[],state:{loaded:!1}}},changed:[],force_full_redraw:!1,redraw_timeout:!1,default_state:{loaded:!0,opened:!1,selected:!1,disabled:!1}},this.element=a(b).addClass("jstree jstree-"+this._id),this.settings=c,this.element.bind("destroyed",a.proxy(this.teardown,this)),this._data.core.ready=!1,this._data.core.loaded=!1,this._data.core.rtl="rtl"===this.element.css("direction"),this.element[this._data.core.rtl?"addClass":"removeClass"]("jstree-rtl"),this.element.attr("role","tree"),this.bind(),this.trigger("init"),this._data.core.original_container_html=this.element.find(" > ul > li").clone(!0),this._data.core.original_container_html.find("li").addBack().contents().filter(function(){return 3===this.nodeType&&(!this.nodeValue||/^\s+$/.test(this.nodeValue))}).remove(),this.element.html("

      "),this._data.core.li_height=this.get_container_ul().children("li:eq(0)").height()||24,this.trigger("loading"),this.load_node("#")},destroy:function(a){a||this.element.empty(),this.element.unbind("destroyed",this.teardown),this.teardown()},teardown:function(){this.unbind(),this.element.removeClass("jstree").removeData("jstree").find("[class^='jstree']").addBack().attr("class",function(){return this.className.replace(/jstree[^ ]*|$/gi,"")}),this.element=null},bind:function(){this.element.on("dblclick.jstree",function(){if(document.selection&&document.selection.empty)document.selection.empty();else if(window.getSelection){var a=window.getSelection();try{a.removeAllRanges(),a.collapse()}catch(b){}}}).on("click.jstree",".jstree-ocl",a.proxy(function(a){this.toggle_node(a.target)},this)).on("click.jstree",".jstree-anchor",a.proxy(function(b){b.preventDefault(),a(b.currentTarget).focus(),this.activate_node(b.currentTarget,b)},this)).on("keydown.jstree",".jstree-anchor",a.proxy(function(b){if("INPUT"===b.target.tagName)return!0;var c=null;switch(b.which){case 13:case 32:b.type="click",a(b.currentTarget).trigger(b);break;case 37:b.preventDefault(),this.is_open(b.currentTarget)?this.close_node(b.currentTarget):(c=this.get_prev_dom(b.currentTarget),c&&c.length&&c.children(".jstree-anchor").focus());break;case 38:b.preventDefault(),c=this.get_prev_dom(b.currentTarget),c&&c.length&&c.children(".jstree-anchor").focus();break;case 39:b.preventDefault(),this.is_closed(b.currentTarget)?this.open_node(b.currentTarget,function(a){this.get_node(a,!0).children(".jstree-anchor").focus()}):(c=this.get_next_dom(b.currentTarget),c&&c.length&&c.children(".jstree-anchor").focus());break;case 40:b.preventDefault(),c=this.get_next_dom(b.currentTarget),c&&c.length&&c.children(".jstree-anchor").focus();break;case 46:b.preventDefault(),c=this.get_node(b.currentTarget),c&&c.id&&"#"!==c.id&&(c=this.is_selected(c)?this.get_selected():c);break;case 113:b.preventDefault(),c=this.get_node(b.currentTarget)}},this)).on("load_node.jstree",a.proxy(function(b,c){if(c.status&&("#"!==c.node.id||this._data.core.loaded||(this._data.core.loaded=!0,this.trigger("loaded")),!this._data.core.ready&&!this.get_container_ul().find(".jstree-loading:eq(0)").length)){if(this._data.core.ready=!0,this._data.core.selected.length){if(this.settings.core.expand_selected_onload){var d,e,f=[];for(d=0,e=this._data.core.selected.length;e>d;d++)f=f.concat(this._model.data[this._data.core.selected[d]].parents);for(f=a.vakata.array_unique(f),d=0,e=f.length;e>d;d++)this.open_node(f[d],!1,0)}this.trigger("changed",{action:"ready",selected:this._data.core.selected})}setTimeout(a.proxy(function(){this.trigger("ready")},this),0)}},this)).on("init.jstree",a.proxy(function(){var a=this.settings.core.themes;this._data.core.themes.dots=a.dots,this._data.core.themes.stripes=a.stripes,this._data.core.themes.icons=a.icons,this.set_theme(a.name||"default",a.url),this.set_theme_variant(a.variant)},this)).on("loading.jstree",a.proxy(function(){this[this._data.core.themes.dots?"show_dots":"hide_dots"](),this[this._data.core.themes.icons?"show_icons":"hide_icons"](),this[this._data.core.themes.stripes?"show_stripes":"hide_stripes"]()},this)).on("blur.jstree",".jstree-anchor",a.proxy(function(b){a(b.currentTarget).filter(".jstree-hovered").mouseleave()},this)).on("focus.jstree",".jstree-anchor",a.proxy(function(b){this.element.find(".jstree-hovered").not(b.currentTarget).mouseleave(),a(b.currentTarget).mouseenter()},this)).on("mouseenter.jstree",".jstree-anchor",a.proxy(function(a){this.hover_node(a.currentTarget)},this)).on("mouseleave.jstree",".jstree-anchor",a.proxy(function(a){this.dehover_node(a.currentTarget)},this))},unbind:function(){this.element.off(".jstree"),a(document).off(".jstree-"+this._id)},trigger:function(a,b){b||(b={}),b.instance=this,this.element.triggerHandler(a.replace(".jstree","")+".jstree",b)},get_container:function(){return this.element},get_container_ul:function(){return this.element.children(".jstree-children:eq(0)")},get_string:function(b){var c=this.settings.core.strings;return a.isFunction(c)?c.call(this,b):c&&c[b]?c[b]:b},_firstChild:function(a){for(a=a?a.firstChild:null;null!==a&&1!==a.nodeType;)a=a.nextSibling;return a},_nextSibling:function(a){for(a=a?a.nextSibling:null;null!==a&&1!==a.nodeType;)a=a.nextSibling;return a},_previousSibling:function(a){for(a=a?a.previousSibling:null;null!==a&&1!==a.nodeType;)a=a.previousSibling;return a},get_node:function(b,c){b&&b.id&&(b=b.id);var d;try{if(this._model.data[b])b=this._model.data[b];else if(((d=a(b,this.element)).length||(d=a("#"+b.replace(a.jstree.idregex,"\\$&"),this.element)).length)&&this._model.data[d.closest(".jstree-node").attr("id")])b=this._model.data[d.closest(".jstree-node").attr("id")];else{if(!(d=a(b,this.element)).length||!d.hasClass("jstree"))return!1;b=this._model.data["#"]}return c&&(b="#"===b.id?this.element:a("#"+b.id.replace(a.jstree.idregex,"\\$&"),this.element)),b}catch(e){return!1}},get_path:function(a,b,c){if(a=a.parents?a:this.get_node(a),!a||"#"===a.id||!a.parents)return!1;var d,e,f=[];for(f.push(c?a.id:a.text),d=0,e=a.parents.length;e>d;d++)f.push(c?a.parents[d]:this.get_text(a.parents[d]));return f=f.reverse().slice(1),b?f.join(b):f},get_next_dom:function(b,c){var d;return b=this.get_node(b,!0),b[0]===this.element[0]?(d=this._firstChild(this.get_container_ul()[0]),d?a(d):!1):b&&b.length?c?(d=this._nextSibling(b[0]),d?a(d):!1):b.hasClass("jstree-open")?(d=this._firstChild(b.children(".jstree-children")[0]),d?a(d):!1):null!==(d=this._nextSibling(b[0]))?a(d):b.parentsUntil(".jstree",".jstree-node").next(".jstree-node").eq(0):!1},get_prev_dom:function(b,c){var d;if(b=this.get_node(b,!0),b[0]===this.element[0])return d=this.get_container_ul()[0].lastChild,d?a(d):!1;if(!b||!b.length)return!1;if(c)return d=this._previousSibling(b[0]),d?a(d):!1;if(null!==(d=this._previousSibling(b[0]))){for(b=a(d);b.hasClass("jstree-open");)b=b.children(".jstree-children:eq(0)").children(".jstree-node:last");return b}return d=b[0].parentNode.parentNode,d&&d.className&&-1!==d.className.indexOf("jstree-node")?a(d):!1},get_parent:function(a){return a=this.get_node(a),a&&"#"!==a.id?a.parent:!1},get_children_dom:function(a){return a=this.get_node(a,!0),a[0]===this.element[0]?this.get_container_ul().children(".jstree-node"):a&&a.length?a.children(".jstree-children").children(".jstree-node"):!1},is_parent:function(a){return a=this.get_node(a),a&&(a.state.loaded===!1||a.children.length>0)},is_loaded:function(a){return a=this.get_node(a),a&&a.state.loaded},is_loading:function(a){return a=this.get_node(a),a&&a.state&&a.state.loading},is_open:function(a){return a=this.get_node(a),a&&a.state.opened},is_closed:function(a){return a=this.get_node(a),a&&this.is_parent(a)&&!a.state.opened},is_leaf:function(a){return!this.is_parent(a)},load_node:function(b,c){var d,e,f,g,h;if(a.isArray(b))return this._load_nodes(b.slice(),c),!0;if(b=this.get_node(b),!b)return c&&c.call(this,b,!1),!1;if(b.state.loaded){for(b.state.loaded=!1,d=0,e=b.children_d.length;e>d;d++){for(f=0,g=b.parents.length;g>f;f++)this._model.data[b.parents[f]].children_d=a.vakata.array_remove_item(this._model.data[b.parents[f]].children_d,b.children_d[d]);this._model.data[b.children_d[d]].state.selected&&(h=!0,this._data.core.selected=a.vakata.array_remove_item(this._data.core.selected,b.children_d[d])),delete this._model.data[b.children_d[d]]}b.children=[],b.children_d=[],h&&this.trigger("changed",{action:"load_node",node:b,selected:this._data.core.selected})}return b.state.loading=!0,this.get_node(b,!0).addClass("jstree-loading"),this._load_node(b,a.proxy(function(a){b=this._model.data[b.id],b.state.loading=!1,b.state.loaded=a;var d=this.get_node(b,!0);b.state.loaded&&!b.children.length&&d&&d.length&&!d.hasClass("jstree-leaf")&&d.removeClass("jstree-closed jstree-open").addClass("jstree-leaf"),d.removeClass("jstree-loading"),this.trigger("load_node",{node:b,status:a}),c&&c.call(this,b,a)},this)),!0},_load_nodes:function(a,b,c){var d,e,f=!0,g=function(){this._load_nodes(a,b,!0)},h=this._model.data;for(d=0,e=a.length;e>d;d++)!h[a[d]]||h[a[d]].state.loaded&&c||(this.is_loading(a[d])||this.load_node(a[d],g),f=!1);f&&b&&!b.done&&(b.call(this,a),b.done=!0)},_load_node:function(b,c){var d,e=this.settings.core.data;return e?a.isFunction(e)?e.call(this,b,a.proxy(function(d){d===!1&&c.call(this,!1),this["string"==typeof d?"_append_html_data":"_append_json_data"](b,"string"==typeof d?a(d):d,function(a){c.call(this,a)})},this)):"object"==typeof e?e.url?(e=a.extend(!0,{},e),a.isFunction(e.url)&&(e.url=e.url.call(this,b)),a.isFunction(e.data)&&(e.data=e.data.call(this,b)),a.ajax(e).done(a.proxy(function(d,e,f){var g=f.getResponseHeader("Content-Type");return-1!==g.indexOf("json")||"object"==typeof d?this._append_json_data(b,d,function(a){c.call(this,a)}):-1!==g.indexOf("html")||"string"==typeof d?this._append_html_data(b,a(d),function(a){c.call(this,a)}):(this._data.core.last_error={error:"ajax",plugin:"core",id:"core_04",reason:"Could not load node",data:JSON.stringify({id:b.id,xhr:f})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1))},this)).fail(a.proxy(function(a){c.call(this,!1),this._data.core.last_error={error:"ajax",plugin:"core",id:"core_04",reason:"Could not load node",data:JSON.stringify({id:b.id,xhr:a})},this.settings.core.error.call(this,this._data.core.last_error)},this))):(d=a.isArray(e)||a.isPlainObject(e)?JSON.parse(JSON.stringify(e)):e,"#"===b.id?this._append_json_data(b,d,function(a){c.call(this,a)}):(this._data.core.last_error={error:"nodata",plugin:"core",id:"core_05",reason:"Could not load node",data:JSON.stringify({id:b.id})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1))):"string"==typeof e?"#"===b.id?this._append_html_data(b,a(e),function(a){c.call(this,a)}):(this._data.core.last_error={error:"nodata",plugin:"core",id:"core_06",reason:"Could not load node",data:JSON.stringify({id:b.id})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1)):c.call(this,!1):"#"===b.id?this._append_html_data(b,this._data.core.original_container_html.clone(!0),function(a){c.call(this,a)}):c.call(this,!1)},_node_changed:function(a){a=this.get_node(a),a&&this._model.changed.push(a.id)},_append_html_data:function(b,c,d){b=this.get_node(b),b.children=[],b.children_d=[];var e,f,g,h=c.is("ul")?c.children():c,i=b.id,j=[],k=[],l=this._model.data,m=l[i],n=this._data.core.selected.length;for(h.each(a.proxy(function(b,c){e=this._parse_model_from_html(a(c),i,m.parents.concat()),e&&(j.push(e),k.push(e),l[e].children_d.length&&(k=k.concat(l[e].children_d)))},this)),m.children=j,m.children_d=k,f=0,g=m.parents.length;g>f;f++)l[m.parents[f]].children_d=l[m.parents[f]].children_d.concat(k);this.trigger("model",{nodes:k,parent:i}),"#"!==i?(this._node_changed(i),this.redraw()):(this.get_container_ul().children(".jstree-initial-node").remove(),this.redraw(!0)),this._data.core.selected.length!==n&&this.trigger("changed",{action:"model",selected:this._data.core.selected}),d.call(this,!0)},_append_json_data:function(b,c,d){b=this.get_node(b),b.children=[],b.children_d=[],c.d&&(c=c.d,"string"==typeof c&&(c=JSON.parse(c))),a.isArray(c)||(c=[c]);var e=null,f={df:this._model.default_state,dat:c,par:b.id,m:this._model.data,t_id:this._id,t_cnt:this._cnt,sel:this._data.core.selected},g=function(a,b){a.data&&(a=a.data);var c,d,e,f,g=a.dat,h=a.par,i=[],j=[],k=[],l=a.df,m=a.t_id,n=a.t_cnt,o=a.m,p=o[h],q=a.sel,r=function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e,f,g,h,i=a.id.toString(),j={id:i,text:a.text||"",icon:a.icon!==b?a.icon:!0,parent:c,parents:d,children:a.children||[],children_d:a.children_d||[],data:a.data,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(e in l)l.hasOwnProperty(e)&&(j.state[e]=l[e]);if(a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(j.icon=a.data.jstree.icon),a&&a.data&&(j.data=a.data,a.data.jstree))for(e in a.data.jstree)a.data.jstree.hasOwnProperty(e)&&(j.state[e]=a.data.jstree[e]);if(a&&"object"==typeof a.state)for(e in a.state)a.state.hasOwnProperty(e)&&(j.state[e]=a.state[e]);if(a&&"object"==typeof a.li_attr)for(e in a.li_attr)a.li_attr.hasOwnProperty(e)&&(j.li_attr[e]=a.li_attr[e]);if(j.li_attr.id||(j.li_attr.id=i),a&&"object"==typeof a.a_attr)for(e in a.a_attr)a.a_attr.hasOwnProperty(e)&&(j.a_attr[e]=a.a_attr[e]);for(a&&a.children&&a.children===!0&&(j.state.loaded=!1,j.children=[],j.children_d=[]),o[j.id]=j,e=0,f=j.children.length;f>e;e++)g=r(o[j.children[e]],j.id,d),h=o[g],j.children_d.push(g),h.children_d.length&&(j.children_d=j.children_d.concat(h.children_d));return delete a.data,delete a.children,o[j.id].original=a,j.state.selected&&k.push(j.id),j.id},s=function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e,f,g,h,i,j=!1;do j="j"+m+"_"+ ++n;while(o[j]);i={id:!1,text:"string"==typeof a?a:"",icon:"object"==typeof a&&a.icon!==b?a.icon:!0,parent:c,parents:d,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(e in l)l.hasOwnProperty(e)&&(i.state[e]=l[e]);if(a&&a.id&&(i.id=a.id.toString()),a&&a.text&&(i.text=a.text),a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(i.icon=a.data.jstree.icon),a&&a.data&&(i.data=a.data,a.data.jstree))for(e in a.data.jstree)a.data.jstree.hasOwnProperty(e)&&(i.state[e]=a.data.jstree[e]);if(a&&"object"==typeof a.state)for(e in a.state)a.state.hasOwnProperty(e)&&(i.state[e]=a.state[e]);if(a&&"object"==typeof a.li_attr)for(e in a.li_attr)a.li_attr.hasOwnProperty(e)&&(i.li_attr[e]=a.li_attr[e]);if(i.li_attr.id&&!i.id&&(i.id=i.li_attr.id.toString()),i.id||(i.id=j),i.li_attr.id||(i.li_attr.id=i.id),a&&"object"==typeof a.a_attr)for(e in a.a_attr)a.a_attr.hasOwnProperty(e)&&(i.a_attr[e]=a.a_attr[e]);if(a&&a.children&&a.children.length){for(e=0,f=a.children.length;f>e;e++)g=s(a.children[e],i.id,d),h=o[g],i.children.push(g),h.children_d.length&&(i.children_d=i.children_d.concat(h.children_d));i.children_d=i.children_d.concat(i.children)}return a&&a.children&&a.children===!0&&(i.state.loaded=!1,i.children=[],i.children_d=[]),delete a.data,delete a.children,i.original=a,o[i.id]=i,i.state.selected&&k.push(i.id),i.id};if(g.length&&g[0].id!==b&&g[0].parent!==b){for(d=0,e=g.length;e>d;d++)g[d].children||(g[d].children=[]),o[g[d].id.toString()]=g[d];for(d=0,e=g.length;e>d;d++)o[g[d].parent.toString()].children.push(g[d].id.toString()),p.children_d.push(g[d].id.toString());for(d=0,e=p.children.length;e>d;d++)c=r(o[p.children[d]],h,p.parents.concat()),j.push(c),o[c].children_d.length&&(j=j.concat(o[c].children_d));for(d=0,e=p.parents.length;e>d;d++)o[p.parents[d]].children_d=o[p.parents[d]].children_d.concat(j);f={cnt:n,mod:o,sel:q,par:h,dpc:j,add:k}}else{for(d=0,e=g.length;e>d;d++)c=s(g[d],h,p.parents.concat()),c&&(i.push(c),j.push(c),o[c].children_d.length&&(j=j.concat(o[c].children_d)));for(p.children=i,p.children_d=j,d=0,e=p.parents.length;e>d;d++)o[p.parents[d]].children_d=o[p.parents[d]].children_d.concat(j);f={cnt:n,mod:o,sel:q,par:h,dpc:j,add:k}}return f},h=function(b,c){if(this._cnt=b.cnt,this._model.data=b.mod,c){var e,f,g=b.add,h=b.sel,i=this._data.core.selected.slice(),j=this._model.data;if(h.length!==i.length||a.vakata.array_unique(h.concat(i)).length!==h.length){for(e=0,f=h.length;f>e;e++)-1===a.inArray(h[e],g)&&-1===a.inArray(h[e],i)&&(j[h[e]].state.selected=!1);for(e=0,f=i.length;f>e;e++)-1===a.inArray(i[e],h)&&(j[i[e]].state.selected=!0)}}b.add.length&&(this._data.core.selected=this._data.core.selected.concat(b.add)),this.trigger("model",{nodes:b.dpc,parent:b.par}),"#"!==b.par?(this._node_changed(b.par),this.redraw()):this.redraw(!0),b.add.length&&this.trigger("changed",{action:"model",selected:this._data.core.selected}),d.call(this,!0)};if(this.settings.core.worker&&window.Blob&&window.URL&&window.Worker)try{null===this._wrk&&(this._wrk=window.URL.createObjectURL(new window.Blob(["self.onmessage = "+g.toString().replace(/return ([^;}]+)[\s;}]+$/,"postMessage($1);}")],{type:"text/javascript"}))),e=new window.Worker(this._wrk),e.onmessage=a.proxy(function(a){h.call(this,a.data,!0),this._data.core.working=!1,this._data.core.worker_queue.length&&this._append_json_data.apply(this,this._data.core.worker_queue.shift())},this),this._data.core.working?this._data.core.worker_queue.push([b,c,d]):(this._data.core.working=!0,e.postMessage(f))}catch(i){h.call(this,g(f),!1)}else h.call(this,g(f),!1)},_parse_model_from_html:function(b,c,d){d=d?[].concat(d):[],c&&d.unshift(c);var e,f,g,h,i,j=this._model.data,k={id:!1,text:!1,icon:!0,parent:c,parents:d,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(g in this._model.default_state)this._model.default_state.hasOwnProperty(g)&&(k.state[g]=this._model.default_state[g]);if(h=a.vakata.attributes(b,!0),a.each(h,function(b,c){return c=a.trim(c),c.length?(k.li_attr[b]=c,void("id"===b&&(k.id=c.toString()))):!0}),h=b.children("a").eq(0),h.length&&(h=a.vakata.attributes(h,!0),a.each(h,function(b,c){c=a.trim(c),c.length&&(k.a_attr[b]=c)})),h=b.children("a:eq(0)").length?b.children("a:eq(0)").clone():b.clone(),h.children("ins, i, ul").remove(),h=h.html(),h=a("
      ").html(h),k.text=this.settings.core.force_text?h.text():h.html(),h=b.data(),k.data=h?a.extend(!0,{},h):null,k.state.opened=b.hasClass("jstree-open"),k.state.selected=b.children("a").hasClass("jstree-clicked"),k.state.disabled=b.children("a").hasClass("jstree-disabled"),k.data&&k.data.jstree)for(g in k.data.jstree)k.data.jstree.hasOwnProperty(g)&&(k.state[g]=k.data.jstree[g]);h=b.children("a").children(".jstree-themeicon"),h.length&&(k.icon=h.hasClass("jstree-themeicon-hidden")?!1:h.attr("rel")),k.state.icon&&(k.icon=k.state.icon),h=b.children("ul").children("li");do i="j"+this._id+"_"+ ++this._cnt;while(j[i]);return k.id=k.li_attr.id?k.li_attr.id.toString():i,h.length?(h.each(a.proxy(function(b,c){e=this._parse_model_from_html(a(c),k.id,d),f=this._model.data[e],k.children.push(e),f.children_d.length&&(k.children_d=k.children_d.concat(f.children_d))},this)),k.children_d=k.children_d.concat(k.children)):b.hasClass("jstree-closed")&&(k.state.loaded=!1),k.li_attr.class&&(k.li_attr.class=k.li_attr.class.replace("jstree-closed","").replace("jstree-open","")),k.a_attr.class&&(k.a_attr.class=k.a_attr.class.replace("jstree-clicked","").replace("jstree-disabled","")),j[k.id]=k,k.state.selected&&this._data.core.selected.push(k.id),k.id},_parse_model_from_flat_json:function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e,f,g,h,i=a.id.toString(),j=this._model.data,k=this._model.default_state,l={id:i,text:a.text||"",icon:a.icon!==b?a.icon:!0,parent:c,parents:d,children:a.children||[],children_d:a.children_d||[],data:a.data,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(e in k)k.hasOwnProperty(e)&&(l.state[e]=k[e]);if(a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(l.icon=a.data.jstree.icon),a&&a.data&&(l.data=a.data,a.data.jstree))for(e in a.data.jstree)a.data.jstree.hasOwnProperty(e)&&(l.state[e]=a.data.jstree[e]);if(a&&"object"==typeof a.state)for(e in a.state)a.state.hasOwnProperty(e)&&(l.state[e]=a.state[e]);if(a&&"object"==typeof a.li_attr)for(e in a.li_attr)a.li_attr.hasOwnProperty(e)&&(l.li_attr[e]=a.li_attr[e]);if(l.li_attr.id||(l.li_attr.id=i),a&&"object"==typeof a.a_attr)for(e in a.a_attr)a.a_attr.hasOwnProperty(e)&&(l.a_attr[e]=a.a_attr[e]);for(a&&a.children&&a.children===!0&&(l.state.loaded=!1,l.children=[],l.children_d=[]),j[l.id]=l,e=0,f=l.children.length;f>e;e++)g=this._parse_model_from_flat_json(j[l.children[e]],l.id,d),h=j[g],l.children_d.push(g),h.children_d.length&&(l.children_d=l.children_d.concat(h.children_d));return delete a.data,delete a.children,j[l.id].original=a,l.state.selected&&this._data.core.selected.push(l.id),l.id},_parse_model_from_json:function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e,f,g,h,i,j=!1,k=this._model.data,l=this._model.default_state;do j="j"+this._id+"_"+ ++this._cnt;while(k[j]);i={id:!1,text:"string"==typeof a?a:"",icon:"object"==typeof a&&a.icon!==b?a.icon:!0,parent:c,parents:d,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(e in l)l.hasOwnProperty(e)&&(i.state[e]=l[e]);if(a&&a.id&&(i.id=a.id.toString()),a&&a.text&&(i.text=a.text),a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(i.icon=a.data.jstree.icon),a&&a.data&&(i.data=a.data,a.data.jstree))for(e in a.data.jstree)a.data.jstree.hasOwnProperty(e)&&(i.state[e]=a.data.jstree[e]);if(a&&"object"==typeof a.state)for(e in a.state)a.state.hasOwnProperty(e)&&(i.state[e]=a.state[e]);if(a&&"object"==typeof a.li_attr)for(e in a.li_attr)a.li_attr.hasOwnProperty(e)&&(i.li_attr[e]=a.li_attr[e]);if(i.li_attr.id&&!i.id&&(i.id=i.li_attr.id.toString()),i.id||(i.id=j),i.li_attr.id||(i.li_attr.id=i.id),a&&"object"==typeof a.a_attr)for(e in a.a_attr)a.a_attr.hasOwnProperty(e)&&(i.a_attr[e]=a.a_attr[e]);if(a&&a.children&&a.children.length){for(e=0,f=a.children.length;f>e;e++)g=this._parse_model_from_json(a.children[e],i.id,d),h=k[g],i.children.push(g),h.children_d.length&&(i.children_d=i.children_d.concat(h.children_d));i.children_d=i.children_d.concat(i.children)}return a&&a.children&&a.children===!0&&(i.state.loaded=!1,i.children=[],i.children_d=[]),delete a.data,delete a.children,i.original=a,k[i.id]=i,i.state.selected&&this._data.core.selected.push(i.id),i.id},_redraw:function(){var a,b,c,d=this._model.force_full_redraw?this._model.data["#"].children.concat([]):this._model.changed.concat([]),e=document.createElement("UL");for(b=0,c=d.length;c>b;b++)a=this.redraw_node(d[b],!0,this._model.force_full_redraw),a&&this._model.force_full_redraw&&e.appendChild(a);this._model.force_full_redraw&&(e.className=this.get_container_ul()[0].className,this.element.empty().append(e)),this._model.force_full_redraw=!1,this._model.changed=[],this.trigger("redraw",{nodes:d})},redraw:function(a){a&&(this._model.force_full_redraw=!0),this._redraw()},redraw_node:function(b,c,d){var e=this.get_node(b),f=!1,g=!1,h=!1,i=!1,j=!1,k=!1,m="",n=document,o=this._model.data,p=!1,q=!1,r=null;if(!e)return!1;if("#"===e.id)return this.redraw(!0);if(c=c||0===e.children.length,b=document.querySelector?this.element[0].querySelector("#"+(-1!=="0123456789".indexOf(e.id[0])?"\\3"+e.id[0]+" "+e.id.substr(1).replace(a.jstree.idregex,"\\$&"):e.id.replace(a.jstree.idregex,"\\$&"))):document.getElementById(e.id))b=a(b),d||(f=b.parent().parent()[0],f===this.element[0]&&(f=null),g=b.index()),c||!e.children.length||b.children(".jstree-children").length||(c=!0),c||(h=b.children(".jstree-children")[0]),q=b.attr("aria-selected"),p=b.children(".jstree-anchor")[0]===document.activeElement,b.remove();else if(c=!0,!d){if(f="#"!==e.parent?a("#"+e.parent.replace(a.jstree.idregex,"\\$&"),this.element)[0]:null,!(null===f||f&&o[e.parent].state.opened))return!1;g=a.inArray(e.id,null===f?o["#"].children:o[e.parent].children)}b=l.cloneNode(!0),m="jstree-node ";for(i in e.li_attr)if(e.li_attr.hasOwnProperty(i)){if("id"===i)continue;"class"!==i?b.setAttribute(i,e.li_attr[i]):m+=e.li_attr[i]}q&&"false"!==q&&b.setAttribute("aria-selected",!0),e.state.loaded&&!e.children.length?m+=" jstree-leaf":(m+=e.state.opened&&e.state.loaded?" jstree-open":" jstree-closed",b.setAttribute("aria-expanded",e.state.opened&&e.state.loaded)),null!==e.parent&&o[e.parent].children[o[e.parent].children.length-1]===e.id&&(m+=" jstree-last"),b.id=e.id,b.className=m,m=(e.state.selected?" jstree-clicked":"")+(e.state.disabled?" jstree-disabled":"");for(j in e.a_attr)if(e.a_attr.hasOwnProperty(j)){if("href"===j&&"#"===e.a_attr[j])continue;"class"!==j?b.childNodes[1].setAttribute(j,e.a_attr[j]):m+=" "+e.a_attr[j]}if(m.length&&(b.childNodes[1].className="jstree-anchor "+m),(e.icon&&e.icon!==!0||e.icon===!1)&&(e.icon===!1?b.childNodes[1].childNodes[0].className+=" jstree-themeicon-hidden":-1===e.icon.indexOf("/")&&-1===e.icon.indexOf(".")?b.childNodes[1].childNodes[0].className+=" "+e.icon+" jstree-themeicon-custom":(b.childNodes[1].childNodes[0].style.backgroundImage="url("+e.icon+")",b.childNodes[1].childNodes[0].style.backgroundPosition="center center",b.childNodes[1].childNodes[0].style.backgroundSize="auto",b.childNodes[1].childNodes[0].className+=" jstree-themeicon-custom")),this.settings.core.force_text?b.childNodes[1].appendChild(n.createTextNode(e.text)):b.childNodes[1].innerHTML+=e.text,c&&e.children.length&&e.state.opened&&e.state.loaded){for(k=n.createElement("UL"),k.setAttribute("role","group"),k.className="jstree-children",i=0,j=e.children.length;j>i;i++)k.appendChild(this.redraw_node(e.children[i],c,!0));b.appendChild(k)}if(h&&b.appendChild(h),!d){for(f||(f=this.element[0]),i=0,j=f.childNodes.length;j>i;i++)if(f.childNodes[i]&&f.childNodes[i].className&&-1!==f.childNodes[i].className.indexOf("jstree-children")){r=f.childNodes[i];break}r||(r=n.createElement("UL"),r.setAttribute("role","group"),r.className="jstree-children",f.appendChild(r)),f=r,gf;f++)this.open_node(c[f],d,e);return!0}if(c=this.get_node(c),!c||"#"===c.id)return!1;if(e=e===b?this.settings.core.animation:e,!this.is_closed(c))return d&&d.call(this,c,!1),!1;if(this.is_loaded(c))h=this.get_node(c,!0),i=this,h.length&&(c.children.length&&!this._firstChild(h.children(".jstree-children")[0])&&(c.state.opened=!0,this.redraw_node(c,!0),h=this.get_node(c,!0)),e?(this.trigger("before_open",{node:c}),h.children(".jstree-children").css("display","none").end().removeClass("jstree-closed").addClass("jstree-open").attr("aria-expanded",!0).children(".jstree-children").stop(!0,!0).slideDown(e,function(){this.style.display="",i.trigger("after_open",{node:c})})):(this.trigger("before_open",{node:c}),h[0].className=h[0].className.replace("jstree-closed","jstree-open"),h[0].setAttribute("aria-expanded",!0))),c.state.opened=!0,d&&d.call(this,c,!0),h.length||this.trigger("before_open",{node:c}),this.trigger("open_node",{node:c}),e&&h.length||this.trigger("after_open",{node:c});else{if(this.is_loading(c))return setTimeout(a.proxy(function(){this.open_node(c,d,e)},this),500);this.load_node(c,function(a,b){return b?this.open_node(a,d,e):d?d.call(this,a,!1):!1})}},_open_to:function(b){if(b=this.get_node(b),!b||"#"===b.id)return!1;var c,d,e=b.parents;for(c=0,d=e.length;d>c;c+=1)"#"!==c&&this.open_node(e[c],!1,0);return a("#"+b.id.replace(a.jstree.idregex,"\\$&"),this.element)},close_node:function(c,d){var e,f,g,h;if(a.isArray(c)){for(c=c.slice(),e=0,f=c.length;f>e;e++)this.close_node(c[e],d);return!0}return c=this.get_node(c),c&&"#"!==c.id?this.is_closed(c)?!1:(d=d===b?this.settings.core.animation:d,g=this,h=this.get_node(c,!0),h.length&&(d?h.children(".jstree-children").attr("style","display:block !important").end().removeClass("jstree-open").addClass("jstree-closed").attr("aria-expanded",!1).children(".jstree-children").stop(!0,!0).slideUp(d,function(){this.style.display="",h.children(".jstree-children").remove(),g.trigger("after_close",{node:c})}):(h[0].className=h[0].className.replace("jstree-open","jstree-closed"),h.attr("aria-expanded",!1).children(".jstree-children").remove())),c.state.opened=!1,this.trigger("close_node",{node:c}),void(d&&h.length||this.trigger("after_close",{node:c}))):!1},toggle_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.toggle_node(b[c]);return!0}return this.is_closed(b)?this.open_node(b):this.is_open(b)?this.close_node(b):void 0},open_all:function(a,b,c){if(a||(a="#"),a=this.get_node(a),!a)return!1;var d,e,f,g="#"===a.id?this.get_container_ul():this.get_node(a,!0);if(!g.length){for(d=0,e=a.children_d.length;e>d;d++)this.is_closed(this._model.data[a.children_d[d]])&&(this._model.data[a.children_d[d]].state.opened=!0);return this.trigger("open_all",{node:a})}c=c||g,f=this,g=this.is_closed(a)?g.find(".jstree-closed").addBack():g.find(".jstree-closed"),g.each(function(){f.open_node(this,function(a,d){d&&this.is_parent(a)&&this.open_all(a,b,c)},b||0)}),0===c.find(".jstree-closed").length&&this.trigger("open_all",{node:this.get_node(c)})},close_all:function(b,c){if(b||(b="#"),b=this.get_node(b),!b)return!1;var d,e,f="#"===b.id?this.get_container_ul():this.get_node(b,!0),g=this;if(!f.length){for(d=0,e=b.children_d.length;e>d;d++)this._model.data[b.children_d[d]].state.opened=!1; - -return this.trigger("close_all",{node:b})}f=this.is_open(b)?f.find(".jstree-open").addBack():f.find(".jstree-open"),a(f.get().reverse()).each(function(){g.close_node(this,c||0)}),this.trigger("close_all",{node:b})},is_disabled:function(a){return a=this.get_node(a),a&&a.state&&a.state.disabled},enable_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.enable_node(b[c]);return!0}return b=this.get_node(b),b&&"#"!==b.id?(b.state.disabled=!1,this.get_node(b,!0).children(".jstree-anchor").removeClass("jstree-disabled"),void this.trigger("enable_node",{node:b})):!1},disable_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.disable_node(b[c]);return!0}return b=this.get_node(b),b&&"#"!==b.id?(b.state.disabled=!0,this.get_node(b,!0).children(".jstree-anchor").addClass("jstree-disabled"),void this.trigger("disable_node",{node:b})):!1},activate_node:function(a,c){if(this.is_disabled(a))return!1;if(this._data.core.last_clicked=this._data.core.last_clicked&&this._data.core.last_clicked.id!==b?this.get_node(this._data.core.last_clicked.id):null,this._data.core.last_clicked&&!this._data.core.last_clicked.state.selected&&(this._data.core.last_clicked=null),!this._data.core.last_clicked&&this._data.core.selected.length&&(this._data.core.last_clicked=this.get_node(this._data.core.selected[this._data.core.selected.length-1])),this.settings.core.multiple&&(c.metaKey||c.ctrlKey||c.shiftKey)&&(!c.shiftKey||this._data.core.last_clicked&&this.get_parent(a)&&this.get_parent(a)===this._data.core.last_clicked.parent))if(c.shiftKey){var d,e,f=this.get_node(a).id,g=this._data.core.last_clicked.id,h=this.get_node(this._data.core.last_clicked.parent).children,i=!1;for(d=0,e=h.length;e>d;d+=1)h[d]===f&&(i=!i),h[d]===g&&(i=!i),i||h[d]===f||h[d]===g?this.select_node(h[d],!1,!1,c):this.deselect_node(h[d],!1,c)}else this.is_selected(a)?this.deselect_node(a,!1,c):this.select_node(a,!1,!1,c);else!this.settings.core.multiple&&(c.metaKey||c.ctrlKey||c.shiftKey)&&this.is_selected(a)?this.deselect_node(a,!1,c):(this.deselect_all(!0),this.select_node(a,!1,!1,c),this._data.core.last_clicked=this.get_node(a));this.trigger("activate_node",{node:this.get_node(a)})},hover_node:function(a){if(a=this.get_node(a,!0),!a||!a.length||a.children(".jstree-hovered").length)return!1;var b=this.element.find(".jstree-hovered"),c=this.element;b&&b.length&&this.dehover_node(b),a.children(".jstree-anchor").addClass("jstree-hovered"),this.trigger("hover_node",{node:this.get_node(a)}),setTimeout(function(){c.attr("aria-activedescendant",a[0].id),a.attr("aria-selected",!0)},0)},dehover_node:function(a){return a=this.get_node(a,!0),a&&a.length&&a.children(".jstree-hovered").length?(a.attr("aria-selected",!1).children(".jstree-anchor").removeClass("jstree-hovered"),void this.trigger("dehover_node",{node:this.get_node(a)})):!1},select_node:function(b,c,d,e){var f,g,h;if(a.isArray(b)){for(b=b.slice(),g=0,h=b.length;h>g;g++)this.select_node(b[g],c,d,e);return!0}return b=this.get_node(b),b&&"#"!==b.id?(f=this.get_node(b,!0),void(b.state.selected||(b.state.selected=!0,this._data.core.selected.push(b.id),d||(f=this._open_to(b)),f&&f.length&&f.children(".jstree-anchor").addClass("jstree-clicked"),this.trigger("select_node",{node:b,selected:this._data.core.selected,event:e}),c||this.trigger("changed",{action:"select_node",node:b,selected:this._data.core.selected,event:e})))):!1},deselect_node:function(b,c,d){var e,f,g;if(a.isArray(b)){for(b=b.slice(),e=0,f=b.length;f>e;e++)this.deselect_node(b[e],c,d);return!0}return b=this.get_node(b),b&&"#"!==b.id?(g=this.get_node(b,!0),void(b.state.selected&&(b.state.selected=!1,this._data.core.selected=a.vakata.array_remove_item(this._data.core.selected,b.id),g.length&&g.children(".jstree-anchor").removeClass("jstree-clicked"),this.trigger("deselect_node",{node:b,selected:this._data.core.selected,event:d}),c||this.trigger("changed",{action:"deselect_node",node:b,selected:this._data.core.selected,event:d})))):!1},select_all:function(a){var b,c,d=this._data.core.selected.concat([]);for(this._data.core.selected=this._model.data["#"].children_d.concat(),b=0,c=this._data.core.selected.length;c>b;b++)this._model.data[this._data.core.selected[b]]&&(this._model.data[this._data.core.selected[b]].state.selected=!0);this.redraw(!0),this.trigger("select_all",{selected:this._data.core.selected}),a||this.trigger("changed",{action:"select_all",selected:this._data.core.selected,old_selection:d})},deselect_all:function(a){var b,c,d=this._data.core.selected.concat([]);for(b=0,c=this._data.core.selected.length;c>b;b++)this._model.data[this._data.core.selected[b]]&&(this._model.data[this._data.core.selected[b]].state.selected=!1);this._data.core.selected=[],this.element.find(".jstree-clicked").removeClass("jstree-clicked"),this.trigger("deselect_all",{selected:this._data.core.selected,node:d}),a||this.trigger("changed",{action:"deselect_all",selected:this._data.core.selected,old_selection:d})},is_selected:function(a){return a=this.get_node(a),a&&"#"!==a.id?a.state.selected:!1},get_selected:function(b){return b?a.map(this._data.core.selected,a.proxy(function(a){return this.get_node(a)},this)):this._data.core.selected.slice()},get_top_selected:function(b){var c,d,e,f,g=this.get_selected(!0),h={};for(c=0,d=g.length;d>c;c++)h[g[c].id]=g[c];for(c=0,d=g.length;d>c;c++)for(e=0,f=g[c].children_d.length;f>e;e++)h[g[c].children_d[e]]&&delete h[g[c].children_d[e]];g=[];for(c in h)h.hasOwnProperty(c)&&g.push(c);return b?a.map(g,a.proxy(function(a){return this.get_node(a)},this)):g},get_bottom_selected:function(b){var c,d,e=this.get_selected(!0),f=[];for(c=0,d=e.length;d>c;c++)e[c].children.length||f.push(e[c].id);return b?a.map(f,a.proxy(function(a){return this.get_node(a)},this)):f},get_state:function(){var a,b={core:{open:[],scroll:{left:this.element.scrollLeft(),top:this.element.scrollTop()},selected:[]}};for(a in this._model.data)this._model.data.hasOwnProperty(a)&&"#"!==a&&(this._model.data[a].state.opened&&b.core.open.push(a),this._model.data[a].state.selected&&b.core.selected.push(a));return b},set_state:function(c,d){if(c){if(c.core){var e,f,g,h;if(c.core.open)return a.isArray(c.core.open)?(e=!0,f=!1,g=this,a.each(c.core.open.concat([]),function(b,h){f=g.get_node(h),f&&(g.is_loaded(h)?(g.is_closed(h)&&g.open_node(h,!1,0),c&&c.core&&c.core.open&&a.vakata.array_remove_item(c.core.open,h)):(g.is_loading(h)||g.open_node(h,a.proxy(function(b,e){!e&&c&&c.core&&c.core.open&&a.vakata.array_remove_item(c.core.open,b.id),this.set_state(c,d)},g),0),e=!1))}),e&&(delete c.core.open,this.set_state(c,d)),!1):(delete c.core.open,this.set_state(c,d),!1);if(c.core.scroll)return c.core.scroll&&c.core.scroll.left!==b&&this.element.scrollLeft(c.core.scroll.left),c.core.scroll&&c.core.scroll.top!==b&&this.element.scrollTop(c.core.scroll.top),delete c.core.scroll,this.set_state(c,d),!1;if(c.core.selected)return h=this,this.deselect_all(),a.each(c.core.selected,function(a,b){h.select_node(b)}),delete c.core.selected,this.set_state(c,d),!1;if(a.isEmptyObject(c.core))return delete c.core,this.set_state(c,d),!1}return a.isEmptyObject(c)?(c=null,d&&d.call(this),this.trigger("set_state"),!1):!0}return!1},refresh:function(b,c){this._data.core.state=c===!0?{}:this.get_state(),c&&a.isFunction(c)&&(this._data.core.state=c.call(this,this._data.core.state)),this._cnt=0,this._model.data={"#":{id:"#",parent:null,parents:[],children:[],children_d:[],state:{loaded:!1}}};var d=this.get_container_ul()[0].className;b||this.element.html(""),this.load_node("#",function(b,c){c&&(this.get_container_ul()[0].className=d,this.set_state(a.extend(!0,{},this._data.core.state),function(){this.trigger("refresh")})),this._data.core.state=null})},refresh_node:function(b){if(b=this.get_node(b),!b||"#"===b.id)return!1;{var c=[],d=[];this._data.core.selected.concat([])}d.push(b.id),b.state.opened===!0&&c.push(b.id),this.get_node(b,!0).find(".jstree-open").each(function(){c.push(this.id)}),this._load_nodes(d,a.proxy(function(a){this.open_node(c,!1,0),this.select_node(this._data.core.selected),this.trigger("refresh_node",{node:b,nodes:a})},this))},set_id:function(b,c){if(b=this.get_node(b),!b||"#"===b.id)return!1;var d,e,f=this._model.data;for(c=c.toString(),f[b.parent].children[a.inArray(b.id,f[b.parent].children)]=c,d=0,e=b.parents.length;e>d;d++)f[b.parents[d]].children_d[a.inArray(b.id,f[b.parents[d]].children_d)]=c;for(d=0,e=b.children.length;e>d;d++)f[b.children[d]].parent=c;for(d=0,e=b.children_d.length;e>d;d++)f[b.children_d[d]].parents[a.inArray(b.id,f[b.children_d[d]].parents)]=c;return d=a.inArray(b.id,this._data.core.selected),-1!==d&&(this._data.core.selected[d]=c),d=this.get_node(b.id,!0),d&&d.attr("id",c),delete f[b.id],b.id=c,f[c]=b,!0},get_text:function(a){return a=this.get_node(a),a&&"#"!==a.id?a.text:!1},set_text:function(b,c){var d,e;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.set_text(b[d],c);return!0}return b=this.get_node(b),b&&"#"!==b.id?(b.text=c,this.get_node(b,!0).length&&this.redraw_node(b.id),this.trigger("set_text",{obj:b,text:c}),!0):!1},get_json:function(a,b,c){if(a=this.get_node(a||"#"),!a)return!1;b&&b.flat&&!c&&(c=[]);var d,e,f={id:a.id,text:a.text,icon:this.get_icon(a),li_attr:a.li_attr,a_attr:a.a_attr,state:{},data:b&&b.no_data?!1:a.data};if(b&&b.flat?f.parent=a.parent:f.children=[],!b||!b.no_state)for(d in a.state)a.state.hasOwnProperty(d)&&(f.state[d]=a.state[d]);if(b&&b.no_id&&(delete f.id,f.li_attr&&f.li_attr.id&&delete f.li_attr.id),b&&b.flat&&"#"!==a.id&&c.push(f),!b||!b.no_children)for(d=0,e=a.children.length;e>d;d++)b&&b.flat?this.get_json(a.children[d],b,c):f.children.push(this.get_json(a.children[d],b));return b&&b.flat?c:"#"===a.id?f.children:f},create_node:function(c,d,e,f,g){if(null===c&&(c="#"),c=this.get_node(c),!c)return!1;if(e=e===b?"last":e,!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(c))return this.load_node(c,function(){this.create_node(c,d,e,f,!0)});d||(d={text:this.get_string("New node")}),d.text===b&&(d.text=this.get_string("New node"));var h,i,j,k;switch("#"===c.id&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":h=this.get_node(c.parent),e=a.inArray(c.id,h.children),c=h;break;case"after":h=this.get_node(c.parent),e=a.inArray(c.id,h.children)+1,c=h;break;case"inside":case"first":e=0;break;case"last":e=c.children.length;break;default:e||(e=0)}if(e>c.children.length&&(e=c.children.length),d.id||(d.id=!0),!this.check("create_node",d,c,e))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(d.id===!0&&delete d.id,d=this._parse_model_from_json(d,c.id,c.parents.concat()),!d)return!1;for(h=this.get_node(d),i=[],i.push(d),i=i.concat(h.children_d),this.trigger("model",{nodes:i,parent:c.id}),c.children_d=c.children_d.concat(i),j=0,k=c.parents.length;k>j;j++)this._model.data[c.parents[j]].children_d=this._model.data[c.parents[j]].children_d.concat(i);for(d=h,h=[],j=0,k=c.children.length;k>j;j++)h[j>=e?j+1:j]=c.children[j];return h[e]=d.id,c.children=h,this.redraw_node(c,!0),f&&f.call(this,this.get_node(d)),this.trigger("create_node",{node:this.get_node(d),parent:c.id,position:e}),d.id},rename_node:function(b,c){var d,e,f;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.rename_node(b[d],c);return!0}return b=this.get_node(b),b&&"#"!==b.id?(f=b.text,this.check("rename_node",b,this.get_parent(b),c)?(this.set_text(b,c),this.trigger("rename_node",{node:b,text:c,old:f}),!0):(this.settings.core.error.call(this,this._data.core.last_error),!1)):!1},delete_node:function(b){var c,d,e,f,g,h,i,j,k,l;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.delete_node(b[c]);return!0}if(b=this.get_node(b),!b||"#"===b.id)return!1;if(e=this.get_node(b.parent),f=a.inArray(b.id,e.children),l=!1,!this.check("delete_node",b,e,f))return this.settings.core.error.call(this,this._data.core.last_error),!1;for(-1!==f&&(e.children=a.vakata.array_remove(e.children,f)),g=b.children_d.concat([]),g.push(b.id),j=0,k=g.length;k>j;j++){for(h=0,i=b.parents.length;i>h;h++)f=a.inArray(g[j],this._model.data[b.parents[h]].children_d),-1!==f&&(this._model.data[b.parents[h]].children_d=a.vakata.array_remove(this._model.data[b.parents[h]].children_d,f));this._model.data[g[j]].state.selected&&(l=!0,f=a.inArray(g[j],this._data.core.selected),-1!==f&&(this._data.core.selected=a.vakata.array_remove(this._data.core.selected,f)))}for(this.trigger("delete_node",{node:b,parent:e.id}),l&&this.trigger("changed",{action:"delete_node",node:b,selected:this._data.core.selected,parent:e.id}),j=0,k=g.length;k>j;j++)delete this._model.data[g[j]];return this.redraw_node(e,!0),!0},check:function(b,c,d,e,f){c=c&&c.id?c:this.get_node(c),d=d&&d.id?d:this.get_node(d);var g=b.match(/^move_node|copy_node|create_node$/i)?d:c,h=this.settings.core.check_callback;return"move_node"!==b&&"copy_node"!==b||f&&f.is_multi||c.id!==d.id&&a.inArray(c.id,d.children)!==e&&-1===a.inArray(d.id,c.children_d)?(g&&g.data&&(g=g.data),g&&g.functions&&(g.functions[b]===!1||g.functions[b]===!0)?(g.functions[b]===!1&&(this._data.core.last_error={error:"check",plugin:"core",id:"core_02",reason:"Node data prevents function: "+b,data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})}),g.functions[b]):h===!1||a.isFunction(h)&&h.call(this,b,c,d,e,f)===!1||h&&h[b]===!1?(this._data.core.last_error={error:"check",plugin:"core",id:"core_03",reason:"User config for core.check_callback prevents function: "+b,data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})},!1):!0):(this._data.core.last_error={error:"check",plugin:"core",id:"core_01",reason:"Moving parent inside child",data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})},!1)},last_error:function(){return this._data.core.last_error},move_node:function(c,d,e,f,g){var h,i,j,k,l,m,n,o,p,q,r,s,t,u;if(d=this.get_node(d),e=e===b?0:e,!d)return!1;if(!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(d))return this.load_node(d,function(){this.move_node(c,d,e,f,!0)});if(a.isArray(c)){for(c=c.reverse().slice(),h=0,i=c.length;i>h;h++)this.move_node(c[h],d,e,f,g);return!0}if(c=c&&c.id?c:this.get_node(c),!c||"#"===c.id)return!1;if(j=(c.parent||"#").toString(),l=e.toString().match(/^(before|after)$/)&&"#"!==d.id?this.get_node(d.parent):d,m=c.instance?c.instance:this._model.data[c.id]?this:a.jstree.reference(c.id),n=!m||!m._id||this._id!==m._id,k=m&&m._id&&j&&m._model.data[j]&&m._model.data[j].children?a.inArray(c.id,m._model.data[j].children):-1,n)return this.copy_node(c,d,e,f,g)?(m&&m.delete_node(c),!0):!1;switch("#"===l.id&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":e=a.inArray(d.id,l.children);break;case"after":e=a.inArray(d.id,l.children)+1;break;case"inside":case"first":e=0;break;case"last":e=l.children.length;break;default:e||(e=0)}if(e>l.children.length&&(e=l.children.length),!this.check("move_node",c,l,e,{core:!0,is_multi:m&&m._id&&m._id!==this._id,is_foreign:!m||!m._id}))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(c.parent===l.id){for(o=l.children.concat(),p=a.inArray(c.id,o),-1!==p&&(o=a.vakata.array_remove(o,p),e>p&&e--),p=[],q=0,r=o.length;r>q;q++)p[q>=e?q+1:q]=o[q];p[e]=c.id,l.children=p,this._node_changed(l.id),this.redraw("#"===l.id)}else{for(p=c.children_d.concat(),p.push(c.id),q=0,r=c.parents.length;r>q;q++){for(o=[],u=m._model.data[c.parents[q]].children_d,s=0,t=u.length;t>s;s++)-1===a.inArray(u[s],p)&&o.push(u[s]);m._model.data[c.parents[q]].children_d=o}for(m._model.data[j].children=a.vakata.array_remove_item(m._model.data[j].children,c.id),q=0,r=l.parents.length;r>q;q++)this._model.data[l.parents[q]].children_d=this._model.data[l.parents[q]].children_d.concat(p);for(o=[],q=0,r=l.children.length;r>q;q++)o[q>=e?q+1:q]=l.children[q];for(o[e]=c.id,l.children=o,l.children_d.push(c.id),l.children_d=l.children_d.concat(c.children_d),c.parent=l.id,p=l.parents.concat(),p.unshift(l.id),u=c.parents.length,c.parents=p,p=p.concat(),q=0,r=c.children_d.length;r>q;q++)this._model.data[c.children_d[q]].parents=this._model.data[c.children_d[q]].parents.slice(0,-1*u),Array.prototype.push.apply(this._model.data[c.children_d[q]].parents,p);this._node_changed(j),this._node_changed(l.id),this.redraw("#"===j||"#"===l.id)}return f&&f.call(this,c,l,e),this.trigger("move_node",{node:c,parent:l.id,position:e,old_parent:j,old_position:k,is_multi:m&&m._id&&m._id!==this._id,is_foreign:!m||!m._id,old_instance:m,new_instance:this}),!0},copy_node:function(c,d,e,f,g){var h,i,j,k,l,m,n,o,p,q,r;if(d=this.get_node(d),e=e===b?0:e,!d)return!1;if(!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(d))return this.load_node(d,function(){this.copy_node(c,d,e,f,!0)});if(a.isArray(c)){for(c=c.reverse().slice(),h=0,i=c.length;i>h;h++)this.copy_node(c[h],d,e,f,g);return!0}if(c=c&&c.id?c:this.get_node(c),!c||"#"===c.id)return!1;switch(o=(c.parent||"#").toString(),p=e.toString().match(/^(before|after)$/)&&"#"!==d.id?this.get_node(d.parent):d,q=c.instance?c.instance:this._model.data[c.id]?this:a.jstree.reference(c.id),r=!q||!q._id||this._id!==q._id,"#"===p.id&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":e=a.inArray(d.id,p.children);break;case"after":e=a.inArray(d.id,p.children)+1;break;case"inside":case"first":e=0;break;case"last":e=p.children.length;break;default:e||(e=0)}if(e>p.children.length&&(e=p.children.length),!this.check("copy_node",c,p,e,{core:!0,is_multi:q&&q._id&&q._id!==this._id,is_foreign:!q||!q._id}))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(n=q?q.get_json(c,{no_id:!0,no_data:!0,no_state:!0}):c,!n)return!1;if(n.id===!0&&delete n.id,n=this._parse_model_from_json(n,p.id,p.parents.concat()),!n)return!1;for(k=this.get_node(n),c&&c.state&&c.state.loaded===!1&&(k.state.loaded=!1),j=[],j.push(n),j=j.concat(k.children_d),this.trigger("model",{nodes:j,parent:p.id}),l=0,m=p.parents.length;m>l;l++)this._model.data[p.parents[l]].children_d=this._model.data[p.parents[l]].children_d.concat(j);for(j=[],l=0,m=p.children.length;m>l;l++)j[l>=e?l+1:l]=p.children[l];return j[e]=k.id,p.children=j,p.children_d.push(k.id),p.children_d=p.children_d.concat(k.children_d),this._node_changed(p.id),this.redraw("#"===p.id),f&&f.call(this,k,p,e),this.trigger("copy_node",{node:k,original:c,parent:p.id,position:e,old_parent:o,old_position:q&&q._id&&o&&q._model.data[o]&&q._model.data[o].children?a.inArray(c.id,q._model.data[o].children):-1,is_multi:q&&q._id&&q._id!==this._id,is_foreign:!q||!q._id,old_instance:q,new_instance:this}),k.id},cut:function(b){if(b||(b=this._data.core.selected.concat()),a.isArray(b)||(b=[b]),!b.length)return!1;var c,d,e,i=[];for(d=0,e=b.length;e>d;d++)c=this.get_node(b[d]),c&&c.id&&"#"!==c.id&&i.push(c);return i.length?(f=i,h=this,g="move_node",void this.trigger("cut",{node:b})):!1},copy:function(b){if(b||(b=this._data.core.selected.concat()),a.isArray(b)||(b=[b]),!b.length)return!1;var c,d,e,i=[];for(d=0,e=b.length;e>d;d++)c=this.get_node(b[d]),c&&c.id&&"#"!==c.id&&i.push(c);return i.length?(f=i,h=this,g="copy_node",void this.trigger("copy",{node:b})):!1},get_buffer:function(){return{mode:g,node:f,inst:h}},can_paste:function(){return g!==!1&&f!==!1},paste:function(a,b){return a=this.get_node(a),a&&g&&g.match(/^(copy_node|move_node)$/)&&f?(this[g](f,a,b)&&this.trigger("paste",{parent:a.id,node:f,mode:g}),f=!1,g=!1,void(h=!1)):!1},edit:function(b,c){if(b=this.get_node(b),!b)return!1;if(this.settings.core.check_callback===!1)return this._data.core.last_error={error:"check",plugin:"core",id:"core_07",reason:"Could not edit node because of check_callback"},this.settings.core.error.call(this,this._data.core.last_error),!1;c="string"==typeof c?c:b.text,this.set_text(b,""),b=this._open_to(b);var d=this._data.core.rtl,e=this.element.width(),f=b.children(".jstree-anchor"),g=a(""),h=c,i=a("
      ",{css:{position:"absolute",top:"-200px",left:d?"0px":"-1000px",visibility:"hidden"}}).appendTo("body"),j=a("",{value:h,"class":"jstree-rename-input",css:{padding:"0",border:"1px solid silver","box-sizing":"border-box",display:"inline-block",height:this._data.core.li_height+"px",lineHeight:this._data.core.li_height+"px",width:"150px"},blur:a.proxy(function(){var c=g.children(".jstree-rename-input"),d=c.val();""===d&&(d=h),i.remove(),g.replaceWith(f),g.remove(),this.set_text(b,h),this.rename_node(b,a("
      ").text(d)[this.settings.core.force_text?"text":"html"]())===!1&&this.set_text(b,h)},this),keydown:function(a){var b=a.which;27===b&&(this.value=h),(27===b||13===b||37===b||38===b||39===b||40===b||32===b)&&a.stopImmediatePropagation(),(27===b||13===b)&&(a.preventDefault(),this.blur())},click:function(a){a.stopImmediatePropagation()},mousedown:function(a){a.stopImmediatePropagation()},keyup:function(){j.width(Math.min(i.text("pW"+this.value).width(),e))},keypress:function(a){return 13===a.which?!1:void 0}}),k={fontFamily:f.css("fontFamily")||"",fontSize:f.css("fontSize")||"",fontWeight:f.css("fontWeight")||"",fontStyle:f.css("fontStyle")||"",fontStretch:f.css("fontStretch")||"",fontVariant:f.css("fontVariant")||"",letterSpacing:f.css("letterSpacing")||"",wordSpacing:f.css("wordSpacing")||""};g.attr("class",f.attr("class")).append(f.contents().clone()).append(j),f.replaceWith(g),i.css(k),j.css(k).width(Math.min(i.text("pW"+j[0].value).width(),e))[0].select()},set_theme:function(b,c){if(!b)return!1;if(c===!0){var d=this.settings.core.themes.dir;d||(d=a.jstree.path+"/themes"),c=d+"/"+b+"/style.css"}c&&-1===a.inArray(c,i)&&(a("head").append(''),i.push(c)),this._data.core.themes.name&&this.element.removeClass("jstree-"+this._data.core.themes.name),this._data.core.themes.name=b,this.element.addClass("jstree-"+b),this.element[this.settings.core.themes.responsive?"addClass":"removeClass"]("jstree-"+b+"-responsive"),this.trigger("set_theme",{theme:b})},get_theme:function(){return this._data.core.themes.name},set_theme_variant:function(a){this._data.core.themes.variant&&this.element.removeClass("jstree-"+this._data.core.themes.name+"-"+this._data.core.themes.variant),this._data.core.themes.variant=a,a&&this.element.addClass("jstree-"+this._data.core.themes.name+"-"+this._data.core.themes.variant)},get_theme_variant:function(){return this._data.core.themes.variant},show_stripes:function(){this._data.core.themes.stripes=!0,this.get_container_ul().addClass("jstree-striped")},hide_stripes:function(){this._data.core.themes.stripes=!1,this.get_container_ul().removeClass("jstree-striped")},toggle_stripes:function(){this._data.core.themes.stripes?this.hide_stripes():this.show_stripes()},show_dots:function(){this._data.core.themes.dots=!0,this.get_container_ul().removeClass("jstree-no-dots")},hide_dots:function(){this._data.core.themes.dots=!1,this.get_container_ul().addClass("jstree-no-dots")},toggle_dots:function(){this._data.core.themes.dots?this.hide_dots():this.show_dots()},show_icons:function(){this._data.core.themes.icons=!0,this.get_container_ul().removeClass("jstree-no-icons")},hide_icons:function(){this._data.core.themes.icons=!1,this.get_container_ul().addClass("jstree-no-icons")},toggle_icons:function(){this._data.core.themes.icons?this.hide_icons():this.show_icons()},set_icon:function(b,c){var d,e,f,g;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.set_icon(b[d],c);return!0}return b=this.get_node(b),b&&"#"!==b.id?(g=b.icon,b.icon=c,f=this.get_node(b,!0).children(".jstree-anchor").children(".jstree-themeicon"),c===!1?this.hide_icon(b):c===!0?f.removeClass("jstree-themeicon-custom "+g).css("background","").removeAttr("rel"):-1===c.indexOf("/")&&-1===c.indexOf(".")?(f.removeClass(g).css("background",""),f.addClass(c+" jstree-themeicon-custom").attr("rel",c)):(f.removeClass(g).css("background",""),f.addClass("jstree-themeicon-custom").css("background","url('"+c+"') center center no-repeat").attr("rel",c)),!0):!1},get_icon:function(a){return a=this.get_node(a),a&&"#"!==a.id?a.icon:!1},hide_icon:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.hide_icon(b[c]);return!0}return b=this.get_node(b),b&&"#"!==b?(b.icon=!1,this.get_node(b,!0).children(".jstree-anchor").children(".jstree-themeicon").addClass("jstree-themeicon-hidden"),!0):!1},show_icon:function(b){var c,d,e;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.show_icon(b[c]);return!0}return b=this.get_node(b),b&&"#"!==b?(e=this.get_node(b,!0),b.icon=e.length?e.children(".jstree-anchor").children(".jstree-themeicon").attr("rel"):!0,b.icon||(b.icon=!0),e.children(".jstree-anchor").children(".jstree-themeicon").removeClass("jstree-themeicon-hidden"),!0):!1}},a.vakata={},a.vakata.attributes=function(b,c){b=a(b)[0];var d=c?{}:[];return b&&b.attributes&&a.each(b.attributes,function(b,e){-1===a.inArray(e.nodeName.toLowerCase(),["style","contenteditable","hasfocus","tabindex"])&&null!==e.nodeValue&&""!==a.trim(e.nodeValue)&&(c?d[e.nodeName]=e.nodeValue:d.push(e.nodeName))}),d},a.vakata.array_unique=function(a){var b,c,d,e=[];for(b=0,d=a.length;d>b;b++){for(c=0;b>=c&&a[b]!==a[c];c++);c===b&&e.push(a[b])}return e},a.vakata.array_remove=function(a,b,c){var d=a.slice((c||b)+1||a.length);return a.length=0>b?a.length+b:b,a.push.apply(a,d),a},a.vakata.array_remove_item=function(b,c){var d=a.inArray(c,b);return-1!==d?a.vakata.array_remove(b,d):b};var m=document.createElement("I");m.className="jstree-icon jstree-checkbox",a.jstree.defaults.checkbox={visible:!0,three_state:!0,whole_node:!0,keep_selected_style:!0,cascade:"",tie_selection:!0},a.jstree.plugins.checkbox=function(b,c){this.bind=function(){c.bind.call(this),this._data.checkbox.uto=!1,this._data.checkbox.selected=[],this.settings.checkbox.three_state&&(this.settings.checkbox.cascade="up+down+undetermined"),this.element.on("init.jstree",a.proxy(function(){this._data.checkbox.visible=this.settings.checkbox.visible,this.settings.checkbox.keep_selected_style||this.element.addClass("jstree-checkbox-no-clicked"),this.settings.checkbox.tie_selection&&this.element.addClass("jstree-checkbox-selection")},this)).on("loading.jstree",a.proxy(function(){this[this._data.checkbox.visible?"show_checkboxes":"hide_checkboxes"]()},this)),-1!==this.settings.checkbox.cascade.indexOf("undetermined")&&this.element.on("changed.jstree uncheck_node.jstree check_node.jstree uncheck_all.jstree check_all.jstree move_node.jstree copy_node.jstree redraw.jstree open_node.jstree",a.proxy(function(){this._data.checkbox.uto&&clearTimeout(this._data.checkbox.uto),this._data.checkbox.uto=setTimeout(a.proxy(this._undetermined,this),50)},this)),this.settings.checkbox.tie_selection||this.element.on("model.jstree",a.proxy(function(a,b){var c,d,e=this._model.data,f=(e[b.parent],b.nodes);for(c=0,d=f.length;d>c;c++)e[f[c]].state.checked=e[f[c]].original&&e[f[c]].original.state&&e[f[c]].original.state.checked,e[f[c]].state.checked&&this._data.checkbox.selected.push(f[c])},this)),(-1!==this.settings.checkbox.cascade.indexOf("up")||-1!==this.settings.checkbox.cascade.indexOf("down"))&&this.element.on("model.jstree",a.proxy(function(b,c){var d,e,f,g,h,i,j=this._model.data,k=j[c.parent],l=c.nodes,m=[],n=this.settings.checkbox.cascade,o=this.settings.checkbox.tie_selection;if(-1!==n.indexOf("down"))if(k.state[o?"selected":"checked"]){for(e=0,f=l.length;f>e;e++)j[l[e]].state[o?"selected":"checked"]=!0;this._data[o?"core":"checkbox"].selected=this._data[o?"core":"checkbox"].selected.concat(l)}else for(e=0,f=l.length;f>e;e++)if(j[l[e]].state[o?"selected":"checked"]){for(g=0,h=j[l[e]].children_d.length;h>g;g++)j[j[l[e]].children_d[g]].state[o?"selected":"checked"]=!0;this._data[o?"core":"checkbox"].selected=this._data[o?"core":"checkbox"].selected.concat(j[l[e]].children_d)}if(-1!==n.indexOf("up")){for(e=0,f=k.children_d.length;f>e;e++)j[k.children_d[e]].children.length||m.push(j[k.children_d[e]].parent);for(m=a.vakata.array_unique(m),g=0,h=m.length;h>g;g++)for(k=j[m[g]];k&&"#"!==k.id;){for(d=0,e=0,f=k.children.length;f>e;e++)d+=j[k.children[e]].state[o?"selected":"checked"];if(d!==f)break;k.state[o?"selected":"checked"]=!0,this._data[o?"core":"checkbox"].selected.push(k.id),i=this.get_node(k,!0),i&&i.length&&i.children(".jstree-anchor").addClass(o?"jstree-clicked":"jstree-checked"),k=this.get_node(k.parent)}}this._data[o?"core":"checkbox"].selected=a.vakata.array_unique(this._data[o?"core":"checkbox"].selected)},this)).on(this.settings.checkbox.tie_selection?"select_node.jstree":"check_node.jstree",a.proxy(function(b,c){var d,e,f,g,h=c.node,i=this._model.data,j=this.get_node(h.parent),k=this.get_node(h,!0),l=this.settings.checkbox.cascade,m=this.settings.checkbox.tie_selection;if(-1!==l.indexOf("down"))for(this._data[m?"core":"checkbox"].selected=a.vakata.array_unique(this._data[m?"core":"checkbox"].selected.concat(h.children_d)),d=0,e=h.children_d.length;e>d;d++)g=i[h.children_d[d]],g.state[m?"selected":"checked"]=!0,g&&g.original&&g.original.state&&g.original.state.undetermined&&(g.original.state.undetermined=!1);if(-1!==l.indexOf("up"))for(;j&&"#"!==j.id;){for(f=0,d=0,e=j.children.length;e>d;d++)f+=i[j.children[d]].state[m?"selected":"checked"];if(f!==e)break;j.state[m?"selected":"checked"]=!0,this._data[m?"core":"checkbox"].selected.push(j.id),g=this.get_node(j,!0),g&&g.length&&g.children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"),j=this.get_node(j.parent)}-1!==l.indexOf("down")&&k.length&&k.find(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked")},this)).on(this.settings.checkbox.tie_selection?"deselect_all.jstree":"uncheck_all.jstree",a.proxy(function(){var a,b,c,d=this.get_node("#"),e=this._model.data;for(a=0,b=d.children_d.length;b>a;a++)c=e[d.children_d[a]],c&&c.original&&c.original.state&&c.original.state.undetermined&&(c.original.state.undetermined=!1)},this)).on(this.settings.checkbox.tie_selection?"deselect_node.jstree":"uncheck_node.jstree",a.proxy(function(b,c){var d,e,f,g=c.node,h=this.get_node(g,!0),i=this.settings.checkbox.cascade,j=this.settings.checkbox.tie_selection;if(g&&g.original&&g.original.state&&g.original.state.undetermined&&(g.original.state.undetermined=!1),-1!==i.indexOf("down"))for(d=0,e=g.children_d.length;e>d;d++)f=this._model.data[g.children_d[d]],f.state[j?"selected":"checked"]=!1,f&&f.original&&f.original.state&&f.original.state.undetermined&&(f.original.state.undetermined=!1);if(-1!==i.indexOf("up"))for(d=0,e=g.parents.length;e>d;d++)f=this._model.data[g.parents[d]],f.state[j?"selected":"checked"]=!1,f&&f.original&&f.original.state&&f.original.state.undetermined&&(f.original.state.undetermined=!1),f=this.get_node(g.parents[d],!0),f&&f.length&&f.children(".jstree-anchor").removeClass(j?"jstree-clicked":"jstree-checked");for(f=[],d=0,e=this._data[j?"core":"checkbox"].selected.length;e>d;d++)-1!==i.indexOf("down")&&-1!==a.inArray(this._data[j?"core":"checkbox"].selected[d],g.children_d)||-1!==i.indexOf("up")&&-1!==a.inArray(this._data[j?"core":"checkbox"].selected[d],g.parents)||f.push(this._data[j?"core":"checkbox"].selected[d]);this._data[j?"core":"checkbox"].selected=a.vakata.array_unique(f),-1!==i.indexOf("down")&&h.length&&h.find(".jstree-anchor").removeClass(j?"jstree-clicked":"jstree-checked")},this)),-1!==this.settings.checkbox.cascade.indexOf("up")&&this.element.on("delete_node.jstree",a.proxy(function(a,b){for(var c,d,e,f,g=this.get_node(b.parent),h=this._model.data,i=this.settings.checkbox.tie_selection;g&&"#"!==g.id;){for(e=0,c=0,d=g.children.length;d>c;c++)e+=h[g.children[c]].state[i?"selected":"checked"];if(e!==d)break;g.state[i?"selected":"checked"]=!0,this._data[i?"core":"checkbox"].selected.push(g.id),f=this.get_node(g,!0),f&&f.length&&f.children(".jstree-anchor").addClass(i?"jstree-clicked":"jstree-checked"), -g=this.get_node(g.parent)}},this)).on("move_node.jstree",a.proxy(function(b,c){var d,e,f,g,h,i=c.is_multi,j=c.old_parent,k=this.get_node(c.parent),l=this._model.data,m=this.settings.checkbox.tie_selection;if(!i)for(d=this.get_node(j);d&&"#"!==d.id;){for(e=0,f=0,g=d.children.length;g>f;f++)e+=l[d.children[f]].state[m?"selected":"checked"];if(e!==g)break;d.state[m?"selected":"checked"]=!0,this._data[m?"core":"checkbox"].selected.push(d.id),h=this.get_node(d,!0),h&&h.length&&h.children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"),d=this.get_node(d.parent)}for(d=k;d&&"#"!==d.id;){for(e=0,f=0,g=d.children.length;g>f;f++)e+=l[d.children[f]].state[m?"selected":"checked"];if(e===g)d.state[m?"selected":"checked"]||(d.state[m?"selected":"checked"]=!0,this._data[m?"core":"checkbox"].selected.push(d.id),h=this.get_node(d,!0),h&&h.length&&h.children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"));else{if(!d.state[m?"selected":"checked"])break;d.state[m?"selected":"checked"]=!1,this._data[m?"core":"checkbox"].selected=a.vakata.array_remove_item(this._data[m?"core":"checkbox"].selected,d.id),h=this.get_node(d,!0),h&&h.length&&h.children(".jstree-anchor").removeClass(m?"jstree-clicked":"jstree-checked")}d=this.get_node(d.parent)}},this))},this._undetermined=function(){var b,c,d=this._model.data,e=this.settings.checkbox.tie_selection,f=this._data[e?"core":"checkbox"].selected,g=[],h=this;for(b=0,c=f.length;c>b;b++)d[f[b]]&&d[f[b]].parents&&(g=g.concat(d[f[b]].parents));for(this.element.find(".jstree-closed").not(":has(.jstree-children)").each(function(){var a,e=h.get_node(this);if(e.state.loaded)for(b=0,c=e.children_d.length;c>b;b++)a=d[e.children_d[b]],!a.state.loaded&&a.original&&a.original.state&&a.original.state.undetermined&&a.original.state.undetermined===!0&&(g.push(a.id),g=g.concat(a.parents));else e.original&&e.original.state&&e.original.state.undetermined&&e.original.state.undetermined===!0&&(g.push(e.id),g=g.concat(e.parents))}),g=a.vakata.array_unique(g),g=a.vakata.array_remove_item(g,"#"),this.element.find(".jstree-undetermined").removeClass("jstree-undetermined"),b=0,c=g.length;c>b;b++)d[g[b]].state[e?"selected":"checked"]||(f=this.get_node(g[b],!0),f&&f.length&&f.children(".jstree-anchor").children(".jstree-checkbox").addClass("jstree-undetermined"))},this.redraw_node=function(b,d,e){if(b=c.redraw_node.call(this,b,d,e)){var f,g,h=null;for(f=0,g=b.childNodes.length;g>f;f++)if(b.childNodes[f]&&b.childNodes[f].className&&-1!==b.childNodes[f].className.indexOf("jstree-anchor")){h=b.childNodes[f];break}h&&(!this.settings.checkbox.tie_selection&&this._model.data[b.id].state.checked&&(h.className+=" jstree-checked"),h.insertBefore(m.cloneNode(!1),h.childNodes[0]))}return e||-1===this.settings.checkbox.cascade.indexOf("undetermined")||(this._data.checkbox.uto&&clearTimeout(this._data.checkbox.uto),this._data.checkbox.uto=setTimeout(a.proxy(this._undetermined,this),50)),b},this.show_checkboxes=function(){this._data.core.themes.checkboxes=!0,this.get_container_ul().removeClass("jstree-no-checkboxes")},this.hide_checkboxes=function(){this._data.core.themes.checkboxes=!1,this.get_container_ul().addClass("jstree-no-checkboxes")},this.toggle_checkboxes=function(){this._data.core.themes.checkboxes?this.hide_checkboxes():this.show_checkboxes()},this.is_undetermined=function(b){b=this.get_node(b);var c,d,e=this.settings.checkbox.cascade,f=this.settings.checkbox.tie_selection,g=this._data[f?"core":"checkbox"].selected,h=this._model.data;if(!b||b.state[f?"selected":"checked"]===!0||-1===e.indexOf("undetermined")||-1===e.indexOf("down")&&-1===e.indexOf("up"))return!1;if(!b.state.loaded&&b.original.state.undetermined===!0)return!0;for(c=0,d=b.children_d.length;d>c;c++)if(-1!==a.inArray(b.children_d[c],g)||!h[b.children_d[c]].state.loaded&&h[b.children_d[c]].original.state.undetermined)return!0;return!1},this.activate_node=function(b,d){return this.settings.checkbox.tie_selection&&(this.settings.checkbox.whole_node||a(d.target).hasClass("jstree-checkbox"))&&(d.ctrlKey=!0),this.settings.checkbox.tie_selection||!this.settings.checkbox.whole_node&&!a(d.target).hasClass("jstree-checkbox")?c.activate_node.call(this,b,d):(this.is_checked(b)?this.uncheck_node(b,d):this.check_node(b,d),void this.trigger("activate_node",{node:this.get_node(b)}))},this.check_node=function(b,c){if(this.settings.checkbox.tie_selection)return this.select_node(b,!1,!0,c);var d,e,f;if(a.isArray(b)){for(b=b.slice(),e=0,f=b.length;f>e;e++)this.check_node(b[e],c);return!0}return b=this.get_node(b),b&&"#"!==b.id?(d=this.get_node(b,!0),void(b.state.checked||(b.state.checked=!0,this._data.checkbox.selected.push(b.id),d&&d.length&&d.children(".jstree-anchor").addClass("jstree-checked"),this.trigger("check_node",{node:b,selected:this._data.checkbox.selected,event:c})))):!1},this.uncheck_node=function(b,c){if(this.settings.checkbox.tie_selection)return this.deselect_node(b,!1,c);var d,e,f;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.uncheck_node(b[d],c);return!0}return b=this.get_node(b),b&&"#"!==b.id?(f=this.get_node(b,!0),void(b.state.checked&&(b.state.checked=!1,this._data.checkbox.selected=a.vakata.array_remove_item(this._data.checkbox.selected,b.id),f.length&&f.children(".jstree-anchor").removeClass("jstree-checked"),this.trigger("uncheck_node",{node:b,selected:this._data.checkbox.selected,event:c})))):!1},this.check_all=function(){if(this.settings.checkbox.tie_selection)return this.select_all();{var a,b;this._data.checkbox.selected.concat([])}for(this._data.checkbox.selected=this._model.data["#"].children_d.concat(),a=0,b=this._data.checkbox.selected.length;b>a;a++)this._model.data[this._data.checkbox.selected[a]]&&(this._model.data[this._data.checkbox.selected[a]].state.checked=!0);this.redraw(!0),this.trigger("check_all",{selected:this._data.checkbox.selected})},this.uncheck_all=function(){if(this.settings.checkbox.tie_selection)return this.deselect_all();var a,b,c=this._data.checkbox.selected.concat([]);for(a=0,b=this._data.checkbox.selected.length;b>a;a++)this._model.data[this._data.checkbox.selected[a]]&&(this._model.data[this._data.checkbox.selected[a]].state.checked=!1);this._data.checkbox.selected=[],this.element.find(".jstree-checked").removeClass("jstree-checked"),this.trigger("uncheck_all",{selected:this._data.checkbox.selected,node:c})},this.is_checked=function(a){return this.settings.checkbox.tie_selection?this.is_selected(a):(a=this.get_node(a),a&&"#"!==a.id?a.state.checked:!1)},this.get_checked=function(b){return this.settings.checkbox.tie_selection?this.get_selected(b):b?a.map(this._data.checkbox.selected,a.proxy(function(a){return this.get_node(a)},this)):this._data.checkbox.selected},this.get_top_checked=function(b){if(this.settings.checkbox.tie_selection)return this.get_top_selected(b);var c,d,e,f,g=this.get_checked(!0),h={};for(c=0,d=g.length;d>c;c++)h[g[c].id]=g[c];for(c=0,d=g.length;d>c;c++)for(e=0,f=g[c].children_d.length;f>e;e++)h[g[c].children_d[e]]&&delete h[g[c].children_d[e]];g=[];for(c in h)h.hasOwnProperty(c)&&g.push(c);return b?a.map(g,a.proxy(function(a){return this.get_node(a)},this)):g},this.get_bottom_checked=function(b){if(this.settings.checkbox.tie_selection)return this.get_bottom_selected(b);var c,d,e=this.get_checked(!0),f=[];for(c=0,d=e.length;d>c;c++)e[c].children.length||f.push(e[c].id);return b?a.map(f,a.proxy(function(a){return this.get_node(a)},this)):f}},a.jstree.defaults.contextmenu={select_node:!0,show_at_node:!0,items:function(){return{create:{separator_before:!1,separator_after:!0,_disabled:!1,label:"Create",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.create_node(d,{},"last",function(a){setTimeout(function(){c.edit(a)},0)})}},rename:{separator_before:!1,separator_after:!1,_disabled:!1,label:"Rename",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.edit(d)}},remove:{separator_before:!1,icon:!1,separator_after:!1,_disabled:!1,label:"Delete",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.delete_node(c.is_selected(d)?c.get_selected():d)}},ccp:{separator_before:!0,icon:!1,separator_after:!1,label:"Edit",action:!1,submenu:{cut:{separator_before:!1,separator_after:!1,label:"Cut",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.cut(c.is_selected(d)?c.get_selected():d)}},copy:{separator_before:!1,icon:!1,separator_after:!1,label:"Copy",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.copy(c.is_selected(d)?c.get_selected():d)}},paste:{separator_before:!1,icon:!1,_disabled:function(b){return!a.jstree.reference(b.reference).can_paste()},separator_after:!1,label:"Paste",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.paste(d)}}}}}}},a.jstree.plugins.contextmenu=function(c,d){this.bind=function(){d.bind.call(this);var b=0;this.element.on("contextmenu.jstree",".jstree-anchor",a.proxy(function(a){a.preventDefault(),b=a.ctrlKey?a.timeStamp:0,this.is_loading(a.currentTarget)||this.show_contextmenu(a.currentTarget,a.pageX,a.pageY,a)},this)).on("click.jstree",".jstree-anchor",a.proxy(function(c){this._data.contextmenu.visible&&(!b||c.timeStamp-b>250)&&a.vakata.context.hide()},this)),a(document).on("context_hide.vakata",a.proxy(function(){this._data.contextmenu.visible=!1},this))},this.teardown=function(){this._data.contextmenu.visible&&a.vakata.context.hide(),d.teardown.call(this)},this.show_contextmenu=function(c,d,e,f){if(c=this.get_node(c),!c||"#"===c.id)return!1;var g=this.settings.contextmenu,h=this.get_node(c,!0),i=h.children(".jstree-anchor"),j=!1,k=!1;(g.show_at_node||d===b||e===b)&&(j=i.offset(),d=j.left,e=j.top+this._data.core.li_height),this.settings.contextmenu.select_node&&!this.is_selected(c)&&this.activate_node(c,f),k=g.items,a.isFunction(k)&&(k=k.call(this,c,a.proxy(function(a){this._show_contextmenu(c,d,e,a)},this))),a.isPlainObject(k)&&this._show_contextmenu(c,d,e,k)},this._show_contextmenu=function(b,c,d,e){var f=this.get_node(b,!0),g=f.children(".jstree-anchor");a(document).one("context_show.vakata",a.proxy(function(b,c){var d="jstree-contextmenu jstree-"+this.get_theme()+"-contextmenu";a(c.element).addClass(d)},this)),this._data.contextmenu.visible=!0,a.vakata.context.show(g,{x:c,y:d},e),this.trigger("show_contextmenu",{node:b,x:c,y:d})}},function(a){var b=!1,c={element:!1,reference:!1,position_x:0,position_y:0,items:[],html:"",is_visible:!1};a.vakata.context={settings:{hide_onmouseleave:0,icons:!0},_trigger:function(b){a(document).triggerHandler("context_"+b+".vakata",{reference:c.reference,element:c.element,position:{x:c.position_x,y:c.position_y}})},_execute:function(b){return b=c.items[b],b&&(!b._disabled||a.isFunction(b._disabled)&&!b._disabled({item:b,reference:c.reference,element:c.element}))&&b.action?b.action.call(null,{item:b,reference:c.reference,element:c.element,position:{x:c.position_x,y:c.position_y}}):!1},_parse:function(b,d){if(!b)return!1;d||(c.html="",c.items=[]);var e,f="",g=!1;return d&&(f+=""),d||(c.html=f,a.vakata.context._trigger("parse")),f.length>10?f:!1},_show_submenu:function(c){if(c=a(c),c.length&&c.children("ul").length){var d=c.children("ul"),e=c.offset().left+c.outerWidth(),f=c.offset().top,g=d.width(),h=d.height(),i=a(window).width()+a(window).scrollLeft(),j=a(window).height()+a(window).scrollTop();b?c[e-(g+10+c.outerWidth())<0?"addClass":"removeClass"]("vakata-context-left"):c[e+g+10>i?"addClass":"removeClass"]("vakata-context-right"),f+h+10>j&&d.css("bottom","-1px"),d.show()}},show:function(d,e,f){var g,h,i,j,k,l,m,n,o=!0;switch(c.element&&c.element.length&&c.element.width(""),o){case!e&&!d:return!1;case!!e&&!!d:c.reference=d,c.position_x=e.x,c.position_y=e.y;break;case!e&&!!d:c.reference=d,g=d.offset(),c.position_x=g.left+d.outerHeight(),c.position_y=g.top;break;case!!e&&!d:c.position_x=e.x,c.position_y=e.y}d&&!f&&a(d).data("vakata_contextmenu")&&(f=a(d).data("vakata_contextmenu")),a.vakata.context._parse(f)&&c.element.html(c.html),c.items.length&&(h=c.element,i=c.position_x,j=c.position_y,k=h.width(),l=h.height(),m=a(window).width()+a(window).scrollLeft(),n=a(window).height()+a(window).scrollTop(),b&&(i-=h.outerWidth(),im&&(i=m-(k+20)),j+l+20>n&&(j=n-(l+20)),c.element.css({left:i,top:j}).show().find("a:eq(0)").focus().parent().addClass("vakata-context-hover"),c.is_visible=!0,a.vakata.context._trigger("show"))},hide:function(){c.is_visible&&(c.element.hide().find("ul").hide().end().find(":focus").blur(),c.is_visible=!1,a.vakata.context._trigger("hide"))}},a(function(){b="rtl"===a("body").css("direction");var d=!1;c.element=a("
        "),c.element.on("mouseenter","li",function(b){b.stopImmediatePropagation(),a.contains(this,b.relatedTarget)||(d&&clearTimeout(d),c.element.find(".vakata-context-hover").removeClass("vakata-context-hover").end(),a(this).siblings().find("ul").hide().end().end().parentsUntil(".vakata-context","li").addBack().addClass("vakata-context-hover"),a.vakata.context._show_submenu(this))}).on("mouseleave","li",function(b){a.contains(this,b.relatedTarget)||a(this).find(".vakata-context-hover").addBack().removeClass("vakata-context-hover")}).on("mouseleave",function(){a(this).find(".vakata-context-hover").removeClass("vakata-context-hover"),a.vakata.context.settings.hide_onmouseleave&&(d=setTimeout(function(){return function(){a.vakata.context.hide()}}(this),a.vakata.context.settings.hide_onmouseleave))}).on("click","a",function(b){b.preventDefault(),a(this).blur().parent().hasClass("vakata-context-disabled")||a.vakata.context._execute(a(this).attr("rel"))===!1||a.vakata.context.hide()}).on("keydown","a",function(b){var d=null;switch(b.which){case 13:case 32:b.type="mouseup",b.preventDefault(),a(b.currentTarget).trigger(b);break;case 37:c.is_visible&&(c.element.find(".vakata-context-hover").last().parents("li:eq(0)").find("ul").hide().find(".vakata-context-hover").removeClass("vakata-context-hover").end().end().children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 38:c.is_visible&&(d=c.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").prevAll("li:not(.vakata-context-separator)").first(),d.length||(d=c.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").last()),d.addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 39:c.is_visible&&(c.element.find(".vakata-context-hover").last().children("ul").show().children("li:not(.vakata-context-separator)").removeClass("vakata-context-hover").first().addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 40:c.is_visible&&(d=c.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").nextAll("li:not(.vakata-context-separator)").first(),d.length||(d=c.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").first()),d.addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 27:a.vakata.context.hide(),b.preventDefault()}}).on("keydown",function(a){a.preventDefault();var b=c.element.find(".vakata-contextmenu-shortcut-"+a.which).parent();b.parent().not(".vakata-context-disabled")&&b.mouseup()}).appendTo("body"),a(document).on("mousedown",function(b){c.is_visible&&!a.contains(c.element[0],b.target)&&a.vakata.context.hide()}).on("context_show.vakata",function(){c.element.find("li:has(ul)").children("a").addClass("vakata-context-parent"),b&&c.element.addClass("vakata-context-rtl").css("direction","rtl"),c.element.find("ul").hide().end()})})}(a),a.jstree.defaults.dnd={copy:!0,open_timeout:500,is_draggable:!0,check_while_dragging:!0,always_copy:!1,inside_pos:0},a.jstree.plugins.dnd=function(b,c){this.bind=function(){c.bind.call(this),this.element.on("mousedown.jstree touchstart.jstree",".jstree-anchor",a.proxy(function(b){var c=this.get_node(b.target),d=this.is_selected(c)?this.get_selected().length:1;return c&&c.id&&"#"!==c.id&&(1===b.which||"touchstart"===b.type)&&(this.settings.dnd.is_draggable===!0||a.isFunction(this.settings.dnd.is_draggable)&&this.settings.dnd.is_draggable.call(this,d>1?this.get_selected(!0):[c]))?(this.element.trigger("mousedown.jstree"),a.vakata.dnd.start(b,{jstree:!0,origin:this,obj:this.get_node(c,!0),nodes:d>1?this.get_selected():[c.id]},'
        '+(d>1?d+" "+this.get_string("nodes"):this.get_text(b.currentTarget,!0))+'
        ')):void 0},this))}},a(function(){var b=!1,c=!1,d=!1,e=a('
         
        ').hide().appendTo("body");a(document).bind("dnd_start.vakata",function(){b=!1}).bind("dnd_move.vakata",function(f,g){if(d&&clearTimeout(d),g&&g.data&&g.data.jstree&&(!g.event.target.id||"jstree-marker"!==g.event.target.id)){var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v=a.jstree.reference(g.event.target),w=!1,x=!1,y=!1;if(v&&v._data&&v._data.dnd)if(e.attr("class","jstree-"+v.get_theme()+(v.settings.core.themes.responsive?" jstree-dnd-responsive":"")),g.helper.children().attr("class","jstree-"+v.get_theme()+(v.settings.core.themes.responsive?" jstree-dnd-responsive":"")).find(".jstree-copy:eq(0)")[g.data.origin&&(g.data.origin.settings.dnd.always_copy||g.data.origin.settings.dnd.copy&&(g.event.metaKey||g.event.ctrlKey))?"show":"hide"](),g.event.target!==v.element[0]&&g.event.target!==v.get_container_ul()[0]||0!==v.get_container_ul().children().length){if(w=a(g.event.target).closest(".jstree-anchor"),w&&w.length&&w.parent().is(".jstree-closed, .jstree-open, .jstree-leaf")&&(x=w.offset(),y=g.event.pageY-x.top,j=w.height(),m=j/3>y?["b","i","a"]:y>j-j/3?["a","i","b"]:y>j/2?["i","a","b"]:["i","b","a"],a.each(m,function(f,y){switch(y){case"b":h=x.left-6,i=x.top,k=v.get_parent(w),l=w.parent().index();break;case"i":t=v.settings.dnd.inside_pos,u=v.get_node(w.parent()),h=x.left-2,i=x.top+j/2+1,k=u.id,l="first"===t?0:"last"===t?u.children.length:Math.min(t,u.children.length);break;case"a":h=x.left-6,i=x.top+j,k=v.get_parent(w),l=w.parent().index()+1}for(n=!0,o=0,p=g.data.nodes.length;p>o;o++)if(q=g.data.origin&&(g.data.origin.settings.dnd.always_copy||g.data.origin.settings.dnd.copy&&(g.event.metaKey||g.event.ctrlKey))?"copy_node":"move_node",r=l,"move_node"===q&&"a"===y&&g.data.origin&&g.data.origin===v&&k===v.get_parent(g.data.nodes[o])&&(s=v.get_node(k),r>a.inArray(g.data.nodes[o],s.children)&&(r-=1)),n=n&&(v&&v.settings&&v.settings.dnd&&v.settings.dnd.check_while_dragging===!1||v.check(q,g.data.origin&&g.data.origin!==v?g.data.origin.get_node(g.data.nodes[o]):g.data.nodes[o],k,r,{dnd:!0,ref:v.get_node(w.parent()),pos:y,is_multi:g.data.origin&&g.data.origin!==v,is_foreign:!g.data.origin})),!n){v&&v.last_error&&(c=v.last_error());break}return n?("i"===y&&w.parent().is(".jstree-closed")&&v.settings.dnd.open_timeout&&(d=setTimeout(function(a,b){return function(){a.open_node(b)}}(v,w),v.settings.dnd.open_timeout)),b={ins:v,par:k,pos:"i"!==y||"last"!==t||0!==l||v.is_loaded(u)?l:"last"},e.css({left:h+"px",top:i+"px"}).show(),g.helper.find(".jstree-icon:eq(0)").removeClass("jstree-er").addClass("jstree-ok"),c={},m=!0,!1):void 0}),m===!0))return}else{for(n=!0,o=0,p=g.data.nodes.length;p>o&&(n=n&&v.check(g.data.origin&&(g.data.origin.settings.dnd.always_copy||g.data.origin.settings.dnd.copy&&(g.event.metaKey||g.event.ctrlKey))?"copy_node":"move_node",g.data.origin&&g.data.origin!==v?g.data.origin.get_node(g.data.nodes[o]):g.data.nodes[o],"#","last",{dnd:!0,ref:v.get_node("#"),pos:"i",is_multi:g.data.origin&&g.data.origin!==v,is_foreign:!g.data.origin}),n);o++);if(n)return b={ins:v,par:"#",pos:"last"},e.hide(),void g.helper.find(".jstree-icon:eq(0)").removeClass("jstree-er").addClass("jstree-ok")}b=!1,g.helper.find(".jstree-icon").removeClass("jstree-ok").addClass("jstree-er"),e.hide()}}).bind("dnd_scroll.vakata",function(a,c){c&&c.data&&c.data.jstree&&(e.hide(),b=!1,c.helper.find(".jstree-icon:eq(0)").removeClass("jstree-ok").addClass("jstree-er"))}).bind("dnd_stop.vakata",function(f,g){if(d&&clearTimeout(d),g&&g.data&&g.data.jstree){e.hide();var h,i,j=[];if(b){for(h=0,i=g.data.nodes.length;i>h;h++)j[h]=g.data.origin?g.data.origin.get_node(g.data.nodes[h]):g.data.nodes[h],g.data.origin&&(j[h].instance=g.data.origin);b.ins[g.data.origin&&(g.data.origin.settings.dnd.always_copy||g.data.origin.settings.dnd.copy&&(g.event.metaKey||g.event.ctrlKey))?"copy_node":"move_node"](j,b.par,b.pos)}else h=a(g.event.target).closest(".jstree"),h.length&&c&&c.error&&"check"===c.error&&(h=h.jstree(!0),h&&h.settings.core.error.call(this,c))}}).bind("keyup keydown",function(b,c){c=a.vakata.dnd._get(),c&&c.data&&c.data.jstree&&c.helper.find(".jstree-copy:eq(0)")[c.data.origin&&(c.data.origin.settings.dnd.always_copy||c.data.origin.settings.dnd.copy&&(b.metaKey||b.ctrlKey))?"show":"hide"]()})}),function(a){var b={element:!1,target:!1,is_down:!1,is_drag:!1,helper:!1,helper_w:0,data:!1,init_x:0,init_y:0,scroll_l:0,scroll_t:0,scroll_e:!1,scroll_i:!1,is_touch:!1};a.vakata.dnd={settings:{scroll_speed:10,scroll_proximity:20,helper_left:5,helper_top:10,threshold:5,threshold_touch:50},_trigger:function(b,c){var d=a.vakata.dnd._get();d.event=c,a(document).triggerHandler("dnd_"+b+".vakata",d)},_get:function(){return{data:b.data,element:b.element,helper:b.helper}},_clean:function(){b.helper&&b.helper.remove(),b.scroll_i&&(clearInterval(b.scroll_i),b.scroll_i=!1),b={element:!1,target:!1,is_down:!1,is_drag:!1,helper:!1,helper_w:0,data:!1,init_x:0,init_y:0,scroll_l:0,scroll_t:0,scroll_e:!1,scroll_i:!1,is_touch:!1},a(document).off("mousemove touchmove",a.vakata.dnd.drag),a(document).off("mouseup touchend",a.vakata.dnd.stop)},_scroll:function(c){if(!b.scroll_e||!b.scroll_l&&!b.scroll_t)return b.scroll_i&&(clearInterval(b.scroll_i),b.scroll_i=!1),!1;if(!b.scroll_i)return b.scroll_i=setInterval(a.vakata.dnd._scroll,100),!1;if(c===!0)return!1;var d=b.scroll_e.scrollTop(),e=b.scroll_e.scrollLeft();b.scroll_e.scrollTop(d+b.scroll_t*a.vakata.dnd.settings.scroll_speed),b.scroll_e.scrollLeft(e+b.scroll_l*a.vakata.dnd.settings.scroll_speed),(d!==b.scroll_e.scrollTop()||e!==b.scroll_e.scrollLeft())&&a.vakata.dnd._trigger("scroll",b.scroll_e)},start:function(c,d,e){"touchstart"===c.type&&c.originalEvent&&c.originalEvent.changedTouches&&c.originalEvent.changedTouches[0]&&(c.pageX=c.originalEvent.changedTouches[0].pageX,c.pageY=c.originalEvent.changedTouches[0].pageY,c.target=document.elementFromPoint(c.originalEvent.changedTouches[0].pageX-window.pageXOffset,c.originalEvent.changedTouches[0].pageY-window.pageYOffset)),b.is_drag&&a.vakata.dnd.stop({});try{c.currentTarget.unselectable="on",c.currentTarget.onselectstart=function(){return!1},c.currentTarget.style&&(c.currentTarget.style.MozUserSelect="none")}catch(f){}return b.init_x=c.pageX,b.init_y=c.pageY,b.data=d,b.is_down=!0,b.element=c.currentTarget,b.target=c.target,b.is_touch="touchstart"===c.type,e!==!1&&(b.helper=a("
        ").html(e).css({display:"block",margin:"0",padding:"0",position:"absolute",top:"-2000px",lineHeight:"16px",zIndex:"10000"})),a(document).bind("mousemove touchmove",a.vakata.dnd.drag),a(document).bind("mouseup touchend",a.vakata.dnd.stop),!1},drag:function(c){if("touchmove"===c.type&&c.originalEvent&&c.originalEvent.changedTouches&&c.originalEvent.changedTouches[0]&&(c.pageX=c.originalEvent.changedTouches[0].pageX,c.pageY=c.originalEvent.changedTouches[0].pageY,c.target=document.elementFromPoint(c.originalEvent.changedTouches[0].pageX-window.pageXOffset,c.originalEvent.changedTouches[0].pageY-window.pageYOffset)),b.is_down){if(!b.is_drag){if(!(Math.abs(c.pageX-b.init_x)>(b.is_touch?a.vakata.dnd.settings.threshold_touch:a.vakata.dnd.settings.threshold)||Math.abs(c.pageY-b.init_y)>(b.is_touch?a.vakata.dnd.settings.threshold_touch:a.vakata.dnd.settings.threshold)))return;b.helper&&(b.helper.appendTo("body"),b.helper_w=b.helper.outerWidth()),b.is_drag=!0,a.vakata.dnd._trigger("start",c)}var d=!1,e=!1,f=!1,g=!1,h=!1,i=!1,j=!1,k=!1,l=!1,m=!1;return b.scroll_t=0,b.scroll_l=0,b.scroll_e=!1,a(a(c.target).parentsUntil("body").addBack().get().reverse()).filter(function(){return/^auto|scroll$/.test(a(this).css("overflow"))&&(this.scrollHeight>this.offsetHeight||this.scrollWidth>this.offsetWidth)}).each(function(){var d=a(this),e=d.offset();return this.scrollHeight>this.offsetHeight&&(e.top+d.height()-c.pageYthis.offsetWidth&&(e.left+d.width()-c.pageXg&&c.pageY-jg&&g-(c.pageY-j)i&&c.pageX-ki&&i-(c.pageX-k)f&&(l=f-50),h&&m+b.helper_w>h&&(m=h-(b.helper_w+2)),b.helper.css({left:m+"px",top:l+"px"})),a.vakata.dnd._trigger("move",c),!1}},stop:function(c){if("touchend"===c.type&&c.originalEvent&&c.originalEvent.changedTouches&&c.originalEvent.changedTouches[0]&&(c.pageX=c.originalEvent.changedTouches[0].pageX,c.pageY=c.originalEvent.changedTouches[0].pageY,c.target=document.elementFromPoint(c.originalEvent.changedTouches[0].pageX-window.pageXOffset,c.originalEvent.changedTouches[0].pageY-window.pageYOffset)),b.is_drag)a.vakata.dnd._trigger("stop",c);else if("touchend"===c.type&&c.target===b.target){var d=setTimeout(function(){a(c.target).click()},100);a(c.target).one("click",function(){d&&clearTimeout(d)})}return a.vakata.dnd._clean(),!1}}}(a),a.jstree.defaults.search={ajax:!1,fuzzy:!1,case_sensitive:!1,show_only_matches:!1,close_opened_onclear:!0,search_leaves_only:!1,search_callback:!1},a.jstree.plugins.search=function(b,c){this.bind=function(){c.bind.call(this),this._data.search.str="",this._data.search.dom=a(),this._data.search.res=[],this._data.search.opn=[],this.element.on("before_open.jstree",a.proxy(function(){var b,c,d=this._data.search.res,e=[],f=a();if(d&&d.length&&(this._data.search.dom=a(this.element[0].querySelectorAll("#"+a.map(d,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #"))),this._data.search.dom.children(".jstree-anchor").addClass("jstree-search"),this.settings.search.show_only_matches&&this._data.search.res.length)){for(b=0,c=d.length;c>b;b++)e=e.concat(this.get_node(d[b]).parents);e=a.vakata.array_remove_item(a.vakata.array_unique(e),"#"),f=e.length?a(this.element[0].querySelectorAll("#"+a.map(e,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #"))):a(),this.element.find(".jstree-node").hide().filter(".jstree-last").filter(function(){return this.nextSibling}).removeClass("jstree-last"),f=f.add(this._data.search.dom),f.parentsUntil(".jstree").addBack().show().filter(".jstree-children").each(function(){a(this).children(".jstree-node:visible").eq(-1).addClass("jstree-last")})}},this)),this.settings.search.show_only_matches&&this.element.on("search.jstree",function(b,c){c.nodes.length&&(a(this).find(".jstree-node").hide().filter(".jstree-last").filter(function(){return this.nextSibling}).removeClass("jstree-last"),c.nodes.parentsUntil(".jstree").addBack().show().filter(".jstree-children").each(function(){a(this).children(".jstree-node:visible").eq(-1).addClass("jstree-last")}))}).on("clear_search.jstree",function(b,c){c.nodes.length&&a(this).find(".jstree-node").css("display","").filter(".jstree-last").filter(function(){return this.nextSibling}).removeClass("jstree-last")})},this.search=function(b,c){if(b===!1||""===a.trim(b.toString()))return this.clear_search();b=b.toString();var d=this.settings.search,e=d.ajax?d.ajax:!1,f=null,g=[],h=[];return this._data.search.res.length&&this.clear_search(),c||e===!1?(this._data.search.str=b,this._data.search.dom=a(),this._data.search.res=[],this._data.search.opn=[],f=new a.vakata.search(b,!0,{caseSensitive:d.case_sensitive,fuzzy:d.fuzzy}),a.each(this._model.data,function(a,c){c.text&&(d.search_callback&&d.search_callback.call(this,b,c)||!d.search_callback&&f.search(c.text).isMatch)&&(!d.search_leaves_only||c.state.loaded&&0===c.children.length)&&(g.push(a),h=h.concat(c.parents))}),g.length&&(h=a.vakata.array_unique(h),this._search_open(h),this._data.search.dom=a(this.element[0].querySelectorAll("#"+a.map(g,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #"))),this._data.search.res=g,this._data.search.dom.children(".jstree-anchor").addClass("jstree-search")),void this.trigger("search",{nodes:this._data.search.dom,str:b,res:this._data.search.res})):a.isFunction(e)?e.call(this,b,a.proxy(function(c){c&&c.d&&(c=c.d),this._load_nodes(a.isArray(c)?a.vakata.array_unique(c):[],function(){this.search(b,!0)},!0)},this)):(e=a.extend({},e),e.data||(e.data={}),e.data.str=b,a.ajax(e).fail(a.proxy(function(){this._data.core.last_error={error:"ajax",plugin:"search",id:"search_01",reason:"Could not load search parents",data:JSON.stringify(e)},this.settings.core.error.call(this,this._data.core.last_error)},this)).done(a.proxy(function(c){c&&c.d&&(c=c.d),this._load_nodes(a.isArray(c)?a.vakata.array_unique(c):[],function(){this.search(b,!0)},!0)},this)))},this.clear_search=function(){this._data.search.dom.children(".jstree-anchor").removeClass("jstree-search"),this.settings.search.close_opened_onclear&&this.close_node(this._data.search.opn,0),this.trigger("clear_search",{nodes:this._data.search.dom,str:this._data.search.str,res:this._data.search.res}),this._data.search.str="",this._data.search.res=[], -this._data.search.opn=[],this._data.search.dom=a()},this._search_open=function(b){var c=this;a.each(b.concat([]),function(d,e){if("#"===e)return!0;try{e=a("#"+e.replace(a.jstree.idregex,"\\$&"),c.element)}catch(f){}e&&e.length&&c.is_closed(e)&&(c._data.search.opn.push(e[0].id),c.open_node(e,function(){c._search_open(b)},0))})}},function(a){a.vakata.search=function(a,b,c){c=c||{},c.fuzzy!==!1&&(c.fuzzy=!0),a=c.caseSensitive?a:a.toLowerCase();var d,e,f,g,h=c.location||0,i=c.distance||100,j=c.threshold||.6,k=a.length;return k>32&&(c.fuzzy=!1),c.fuzzy&&(d=1<c;c++)b[a.charAt(c)]=0;for(c=0;k>c;c++)b[a.charAt(c)]|=1<g;g++){for(l=0,m=v;m>l;)f(g,h+m)<=t?l=m:v=m,m=Math.floor((v-l)/2+l);for(v=m,o=Math.max(1,h-m+1),p=Math.min(h+m,s)+k,q=new Array(p+2),q[p+1]=(1<=o;i--)if(r=e[b.charAt(i-1)],q[i]=0===g?(q[i+1]<<1|1)&r:(q[i+1]<<1|1)&r|((n[i+1]|n[i])<<1|1)|n[i+1],q[i]&d&&(w=f(g,i-1),t>=w)){if(t=w,u=i-1,x.push(u),!(u>h))break;o=Math.max(1,2*h-u)}if(f(g+1,h)>t)break;n=q}return{isMatch:u>=0,score:w}},b===!0?{search:g}:g(b)}}(a),a.jstree.defaults.sort=function(a,b){return this.get_text(a)>this.get_text(b)?1:-1},a.jstree.plugins.sort=function(b,c){this.bind=function(){c.bind.call(this),this.element.on("model.jstree",a.proxy(function(a,b){this.sort(b.parent,!0)},this)).on("rename_node.jstree create_node.jstree",a.proxy(function(a,b){this.sort(b.parent||b.node.parent,!1),this.redraw_node(b.parent||b.node.parent,!0)},this)).on("move_node.jstree copy_node.jstree",a.proxy(function(a,b){this.sort(b.parent,!1),this.redraw_node(b.parent,!0)},this))},this.sort=function(b,c){var d,e;if(b=this.get_node(b),b&&b.children&&b.children.length&&(b.children.sort(a.proxy(this.settings.sort,this)),c))for(d=0,e=b.children_d.length;e>d;d++)this.sort(b.children_d[d],!1)}};var n=!1;a.jstree.defaults.state={key:"jstree",events:"changed.jstree open_node.jstree close_node.jstree",ttl:!1,filter:!1},a.jstree.plugins.state=function(b,c){this.bind=function(){c.bind.call(this);var b=a.proxy(function(){this.element.on(this.settings.state.events,a.proxy(function(){n&&clearTimeout(n),n=setTimeout(a.proxy(function(){this.save_state()},this),100)},this))},this);this.element.on("ready.jstree",a.proxy(function(){this.element.one("restore_state.jstree",b),this.restore_state()||b()},this))},this.save_state=function(){var b={state:this.get_state(),ttl:this.settings.state.ttl,sec:+new Date};a.vakata.storage.set(this.settings.state.key,JSON.stringify(b))},this.restore_state=function(){var b=a.vakata.storage.get(this.settings.state.key);if(b)try{b=JSON.parse(b)}catch(c){return!1}return b&&b.ttl&&b.sec&&+new Date-b.sec>b.ttl?!1:(b&&b.state&&(b=b.state),b&&a.isFunction(this.settings.state.filter)&&(b=this.settings.state.filter.call(this,b)),b?(this.element.one("set_state.jstree",function(c,d){d.instance.trigger("restore_state",{state:a.extend(!0,{},b)})}),this.set_state(b),!0):!1)},this.clear_state=function(){return a.vakata.storage.del(this.settings.state.key)}},function(a){a.vakata.storage={set:function(a,b){return window.localStorage.setItem(a,b)},get:function(a){return window.localStorage.getItem(a)},del:function(a){return window.localStorage.removeItem(a)}}}(a),a.jstree.defaults.types={"#":{},"default":{}},a.jstree.plugins.types=function(c,d){this.init=function(a,c){var e,f;if(c&&c.types&&c.types.default)for(e in c.types)if("default"!==e&&"#"!==e&&c.types.hasOwnProperty(e))for(f in c.types.default)c.types.default.hasOwnProperty(f)&&c.types[e][f]===b&&(c.types[e][f]=c.types.default[f]);d.init.call(this,a,c),this._model.data["#"].type="#"},this.refresh=function(a,b){d.refresh.call(this,a,b),this._model.data["#"].type="#"},this.bind=function(){this.element.on("model.jstree",a.proxy(function(a,c){var d,e,f=this._model.data,g=c.nodes,h=this.settings.types,i="default";for(d=0,e=g.length;e>d;d++)i="default",f[g[d]].original&&f[g[d]].original.type&&h[f[g[d]].original.type]&&(i=f[g[d]].original.type),f[g[d]].data&&f[g[d]].data.jstree&&f[g[d]].data.jstree.type&&h[f[g[d]].data.jstree.type]&&(i=f[g[d]].data.jstree.type),f[g[d]].type=i,f[g[d]].icon===!0&&h[i].icon!==b&&(f[g[d]].icon=h[i].icon);f["#"].type="#"},this)),d.bind.call(this)},this.get_json=function(b,c,e){var f,g,h=this._model.data,i=c?a.extend(!0,{},c,{no_id:!1}):{},j=d.get_json.call(this,b,i,e);if(j===!1)return!1;if(a.isArray(j))for(f=0,g=j.length;g>f;f++)j[f].type=j[f].id&&h[j[f].id]&&h[j[f].id].type?h[j[f].id].type:"default",c&&c.no_id&&(delete j[f].id,j[f].li_attr&&j[f].li_attr.id&&delete j[f].li_attr.id);else j.type=j.id&&h[j.id]&&h[j.id].type?h[j.id].type:"default",c&&c.no_id&&(j=this._delete_ids(j));return j},this._delete_ids=function(b){if(a.isArray(b)){for(var c=0,d=b.length;d>c;c++)b[c]=this._delete_ids(b[c]);return b}return delete b.id,b.li_attr&&b.li_attr.id&&delete b.li_attr.id,b.children&&a.isArray(b.children)&&(b.children=this._delete_ids(b.children)),b},this.check=function(c,e,f,g,h){if(d.check.call(this,c,e,f,g,h)===!1)return!1;e=e&&e.id?e:this.get_node(e),f=f&&f.id?f:this.get_node(f);var i,j,k,l,m=e&&e.id?a.jstree.reference(e.id):null;switch(m=m&&m._model&&m._model.data?m._model.data:null,c){case"create_node":case"move_node":case"copy_node":if("move_node"!==c||-1===a.inArray(e.id,f.children)){if(i=this.get_rules(f),i.max_children!==b&&-1!==i.max_children&&i.max_children===f.children.length)return this._data.core.last_error={error:"check",plugin:"types",id:"types_01",reason:"max_children prevents function: "+c,data:JSON.stringify({chk:c,pos:g,obj:e&&e.id?e.id:!1,par:f&&f.id?f.id:!1})},!1;if(i.valid_children!==b&&-1!==i.valid_children&&-1===a.inArray(e.type,i.valid_children))return this._data.core.last_error={error:"check",plugin:"types",id:"types_02",reason:"valid_children prevents function: "+c,data:JSON.stringify({chk:c,pos:g,obj:e&&e.id?e.id:!1,par:f&&f.id?f.id:!1})},!1;if(m&&e.children_d&&e.parents){for(j=0,k=0,l=e.children_d.length;l>k;k++)j=Math.max(j,m[e.children_d[k]].parents.length);j=j-e.parents.length+1}(0>=j||j===b)&&(j=1);do{if(i.max_depth!==b&&-1!==i.max_depth&&i.max_depthf;f++)this.set_type(c[f],d);return!0}return e=this.settings.types,c=this.get_node(c),e[d]&&c?(h=c.type,i=this.get_icon(c),c.type=d,(i===!0||e[h]&&e[h].icon&&i===e[h].icon)&&this.set_icon(c,e[d].icon!==b?e[d].icon:!0),!0):!1}},a.jstree.defaults.unique={case_sensitive:!1,duplicate:function(a,b){return a+" ("+b+")"}},a.jstree.plugins.unique=function(c,d){this.check=function(b,c,e,f,g){if(d.check.call(this,b,c,e,f,g)===!1)return!1;if(c=c&&c.id?c:this.get_node(c),e=e&&e.id?e:this.get_node(e),!e||!e.children)return!0;var h,i,j="rename_node"===b?f:c.text,k=[],l=this.settings.unique.case_sensitive,m=this._model.data;for(h=0,i=e.children.length;i>h;h++)k.push(l?m[e.children[h]].text:m[e.children[h]].text.toLowerCase());switch(l||(j=j.toLowerCase()),b){case"delete_node":return!0;case"rename_node":return h=-1===a.inArray(j,k)||c.text&&c.text[l?"toString":"toLowerCase"]()===j,h||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_01",reason:"Child with name "+j+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),h;case"create_node":return h=-1===a.inArray(j,k),h||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_04",reason:"Child with name "+j+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),h;case"copy_node":return h=-1===a.inArray(j,k),h||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_02",reason:"Child with name "+j+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),h;case"move_node":return h=c.parent===e.id||-1===a.inArray(j,k),h||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_03",reason:"Child with name "+j+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),h}return!0},this.create_node=function(c,e,f,g,h){if(!e||e.text===b){if(null===c&&(c="#"),c=this.get_node(c),!c)return d.create_node.call(this,c,e,f,g,h);if(f=f===b?"last":f,!f.toString().match(/^(before|after)$/)&&!h&&!this.is_loaded(c))return d.create_node.call(this,c,e,f,g,h);e||(e={});var i,j,k,l,m,n=this._model.data,o=this.settings.unique.case_sensitive,p=this.settings.unique.duplicate;for(j=i=this.get_string("New node"),k=[],l=0,m=c.children.length;m>l;l++)k.push(o?n[c.children[l]].text:n[c.children[l]].text.toLowerCase());for(l=1;-1!==a.inArray(o?j:j.toLowerCase(),k);)j=p.call(this,i,++l).toString();e.text=j}return d.create_node.call(this,c,e,f,g,h)}};var o=document.createElement("DIV");o.setAttribute("unselectable","on"),o.className="jstree-wholerow",o.innerHTML=" ",a.jstree.plugins.wholerow=function(b,c){this.bind=function(){c.bind.call(this),this.element.on("ready.jstree set_state.jstree",a.proxy(function(){this.hide_dots()},this)).on("init.jstree loading.jstree ready.jstree",a.proxy(function(){this.get_container_ul().addClass("jstree-wholerow-ul")},this)).on("deselect_all.jstree",a.proxy(function(){this.element.find(".jstree-wholerow-clicked").removeClass("jstree-wholerow-clicked")},this)).on("changed.jstree",a.proxy(function(a,b){this.element.find(".jstree-wholerow-clicked").removeClass("jstree-wholerow-clicked");var c,d,e=!1;for(c=0,d=b.selected.length;d>c;c++)e=this.get_node(b.selected[c],!0),e&&e.length&&e.children(".jstree-wholerow").addClass("jstree-wholerow-clicked")},this)).on("open_node.jstree",a.proxy(function(a,b){this.get_node(b.node,!0).find(".jstree-clicked").parent().children(".jstree-wholerow").addClass("jstree-wholerow-clicked")},this)).on("hover_node.jstree dehover_node.jstree",a.proxy(function(a,b){this.get_node(b.node,!0).children(".jstree-wholerow")["hover_node"===a.type?"addClass":"removeClass"]("jstree-wholerow-hovered")},this)).on("contextmenu.jstree",".jstree-wholerow",a.proxy(function(b){b.preventDefault();var c=a.Event("contextmenu",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey,pageX:b.pageX,pageY:b.pageY});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor:eq(0)").trigger(c)},this)).on("click.jstree",".jstree-wholerow",function(b){b.stopImmediatePropagation();var c=a.Event("click",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor:eq(0)").trigger(c).focus()}).on("click.jstree",".jstree-leaf > .jstree-ocl",a.proxy(function(b){b.stopImmediatePropagation();var c=a.Event("click",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor:eq(0)").trigger(c).focus()},this)).on("mouseover.jstree",".jstree-wholerow, .jstree-icon",a.proxy(function(a){return a.stopImmediatePropagation(),this.hover_node(a.currentTarget),!1},this)).on("mouseleave.jstree",".jstree-node",a.proxy(function(a){this.dehover_node(a.currentTarget)},this))},this.teardown=function(){this.settings.wholerow&&this.element.find(".jstree-wholerow").remove(),c.teardown.call(this)},this.redraw_node=function(b,d,e){if(b=c.redraw_node.call(this,b,d,e)){var f=o.cloneNode(!0);-1!==a.inArray(b.id,this._data.core.selected)&&(f.className+=" jstree-wholerow-clicked"),b.insertBefore(f,b.childNodes[0])}return b}}}}); -//# sourceMappingURL=../../../maps/libs/jquery/jstree.js.map \ No newline at end of file +!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):e("object"==typeof exports?require("jquery"):jQuery)}(function(e,t){"use strict";if(!e.jstree){var i,r,s=0,n=!1,a=!1,o=!1,d=[],c=e("script:last").attr("src"),l=document,h=l.createElement("LI");h.setAttribute("role","treeitem"),i=l.createElement("I"),i.className="jstree-icon jstree-ocl",h.appendChild(i),i=l.createElement("A"),i.className="jstree-anchor",i.setAttribute("href","#"),r=l.createElement("I"),r.className="jstree-icon jstree-themeicon",i.appendChild(r),h.appendChild(i),i=r=null,e.jstree={version:"3.0.3",defaults:{plugins:[]},plugins:{},path:c&&-1!==c.indexOf("/")?c.replace(/\/[^\/]+$/,""):"",idregex:/[\\:&!^|()\[\]<>@*'+~#";.,=\- \/${}%]/g},e.jstree.create=function(t,i){var r=new e.jstree.core(++s),n=i;return i=e.extend(!0,{},e.jstree.defaults,i),n&&n.plugins&&(i.plugins=n.plugins),e.each(i.plugins,function(e,t){"core"!==e&&(r=r.plugin(t,i[t]))}),r.init(t,i),r},e.jstree.core=function(e){this._id=e,this._cnt=0,this._wrk=null,this._data={core:{themes:{name:!1,dots:!1,icons:!1},selected:[],last_error:{},working:!1,worker_queue:[]}}},e.jstree.reference=function(t){var i=null,r=null;if(t&&t.id&&(t=t.id),!r||!r.length)try{r=e(t)}catch(e){}if(!r||!r.length)try{r=e("#"+t.replace(e.jstree.idregex,"\\$&"))}catch(e){}return r&&r.length&&(r=r.closest(".jstree")).length&&(r=r.data("jstree"))?i=r:e(".jstree").each(function(){var r=e(this).data("jstree");if(r&&r._model.data[t])return i=r,!1}),i},e.fn.jstree=function(i){var r="string"==typeof i,s=Array.prototype.slice.call(arguments,1),n=null;return this.each(function(){var a=e.jstree.reference(this),o=r&&a?a[i]:null;if(n=r&&o?o.apply(a,s):null,a||r||i!==t&&!e.isPlainObject(i)||e(this).data("jstree",new e.jstree.create(this,i)),(a&&!r||!0===i)&&(n=a||!1),null!==n&&n!==t)return!1}),null!==n&&n!==t?n:this},e.expr[":"].jstree=e.expr.createPseudo(function(i){return function(i){return e(i).hasClass("jstree")&&e(i).data("jstree")!==t}}),e.jstree.defaults.core={data:!1,strings:!1,check_callback:!1,error:e.noop,animation:200,multiple:!0,themes:{name:!1,url:!1,dir:!1,dots:!0,icons:!0,stripes:!1,variant:!1,responsive:!1},expand_selected_onload:!0,worker:!0,force_text:!1},e.jstree.core.prototype={plugin:function(t,i){var r=e.jstree.plugins[t];return r?(this._data[t]={},r.prototype=this,new r(i,this)):this},init:function(t,i){this._model={data:{"#":{id:"#",parent:null,parents:[],children:[],children_d:[],state:{loaded:!1}}},changed:[],force_full_redraw:!1,redraw_timeout:!1,default_state:{loaded:!0,opened:!1,selected:!1,disabled:!1}},this.element=e(t).addClass("jstree jstree-"+this._id),this.settings=i,this.element.bind("destroyed",e.proxy(this.teardown,this)),this._data.core.ready=!1,this._data.core.loaded=!1,this._data.core.rtl="rtl"===this.element.css("direction"),this.element[this._data.core.rtl?"addClass":"removeClass"]("jstree-rtl"),this.element.attr("role","tree"),this.bind(),this.trigger("init"),this._data.core.original_container_html=this.element.find(" > ul > li").clone(!0),this._data.core.original_container_html.find("li").addBack().contents().filter(function(){return 3===this.nodeType&&(!this.nodeValue||/^\s+$/.test(this.nodeValue))}).remove(),this.element.html(""),this._data.core.li_height=this.get_container_ul().children("li:eq(0)").height()||24,this.trigger("loading"),this.load_node("#")},destroy:function(e){e||this.element.empty(),this.element.unbind("destroyed",this.teardown),this.teardown()},teardown:function(){this.unbind(),this.element.removeClass("jstree").removeData("jstree").find("[class^='jstree']").addBack().attr("class",function(){return this.className.replace(/jstree[^ ]*|$/gi,"")}),this.element=null},bind:function(){this.element.on("dblclick.jstree",function(){if(document.selection&&document.selection.empty)document.selection.empty();else if(window.getSelection){var e=window.getSelection();try{e.removeAllRanges(),e.collapse()}catch(e){}}}).on("click.jstree",".jstree-ocl",e.proxy(function(e){this.toggle_node(e.target)},this)).on("click.jstree",".jstree-anchor",e.proxy(function(t){t.preventDefault(),e(t.currentTarget).focus(),this.activate_node(t.currentTarget,t)},this)).on("keydown.jstree",".jstree-anchor",e.proxy(function(t){if("INPUT"===t.target.tagName)return!0;var i=null;switch(t.which){case 13:case 32:t.type="click",e(t.currentTarget).trigger(t);break;case 37:t.preventDefault(),this.is_open(t.currentTarget)?this.close_node(t.currentTarget):(i=this.get_prev_dom(t.currentTarget))&&i.length&&i.children(".jstree-anchor").focus();break;case 38:t.preventDefault(),i=this.get_prev_dom(t.currentTarget),i&&i.length&&i.children(".jstree-anchor").focus();break;case 39:t.preventDefault(),this.is_closed(t.currentTarget)?this.open_node(t.currentTarget,function(e){this.get_node(e,!0).children(".jstree-anchor").focus()}):(i=this.get_next_dom(t.currentTarget))&&i.length&&i.children(".jstree-anchor").focus();break;case 40:t.preventDefault(),i=this.get_next_dom(t.currentTarget),i&&i.length&&i.children(".jstree-anchor").focus();break;case 46:t.preventDefault(),i=this.get_node(t.currentTarget),i&&i.id&&"#"!==i.id&&(i=this.is_selected(i)?this.get_selected():i);break;case 113:t.preventDefault(),i=this.get_node(t.currentTarget)}},this)).on("load_node.jstree",e.proxy(function(t,i){if(i.status&&("#"!==i.node.id||this._data.core.loaded||(this._data.core.loaded=!0,this.trigger("loaded")),!this._data.core.ready&&!this.get_container_ul().find(".jstree-loading:eq(0)").length)){if(this._data.core.ready=!0,this._data.core.selected.length){if(this.settings.core.expand_selected_onload){var r,s,n=[];for(r=0,s=this._data.core.selected.length;r0)},is_loaded:function(e){return(e=this.get_node(e))&&e.state.loaded},is_loading:function(e){return(e=this.get_node(e))&&e.state&&e.state.loading},is_open:function(e){return(e=this.get_node(e))&&e.state.opened},is_closed:function(e){return(e=this.get_node(e))&&this.is_parent(e)&&!e.state.opened},is_leaf:function(e){return!this.is_parent(e)},load_node:function(t,i){var r,s,n,a,o;if(e.isArray(t))return this._load_nodes(t.slice(),i),!0;if(!(t=this.get_node(t)))return i&&i.call(this,t,!1),!1;if(t.state.loaded){for(t.state.loaded=!1,r=0,s=t.children_d.length;r").html(o),l.text=this.settings.core.force_text?o.text():o.html(),o=t.data(),l.data=o?e.extend(!0,{},o):null,l.state.opened=t.hasClass("jstree-open"),l.state.selected=t.children("a").hasClass("jstree-clicked"),l.state.disabled=t.children("a").hasClass("jstree-disabled"),l.data&&l.data.jstree)for(a in l.data.jstree)l.data.jstree.hasOwnProperty(a)&&(l.state[a]=l.data.jstree[a]);o=t.children("a").children(".jstree-themeicon"),o.length&&(l.icon=!o.hasClass("jstree-themeicon-hidden")&&o.attr("rel")),l.state.icon&&(l.icon=l.state.icon),o=t.children("ul").children("li");do{d="j"+this._id+"_"+ ++this._cnt}while(c[d]);return l.id=l.li_attr.id?l.li_attr.id.toString():d,o.length?(o.each(e.proxy(function(t,i){s=this._parse_model_from_html(e(i),l.id,r),n=this._model.data[s],l.children.push(s),n.children_d.length&&(l.children_d=l.children_d.concat(n.children_d))},this)),l.children_d=l.children_d.concat(l.children)):t.hasClass("jstree-closed")&&(l.state.loaded=!1),l.li_attr.class&&(l.li_attr.class=l.li_attr.class.replace("jstree-closed","").replace("jstree-open","")),l.a_attr.class&&(l.a_attr.class=l.a_attr.class.replace("jstree-clicked","").replace("jstree-disabled","")),c[l.id]=l,l.state.selected&&this._data.core.selected.push(l.id),l.id},_parse_model_from_flat_json:function(e,i,r){r=r?r.concat():[],i&&r.unshift(i);var s,n,a,o,d=e.id.toString(),c=this._model.data,l=this._model.default_state,h={id:d,text:e.text||"",icon:e.icon===t||e.icon,parent:i,parents:r,children:e.children||[],children_d:e.children_d||[],data:e.data,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(s in l)l.hasOwnProperty(s)&&(h.state[s]=l[s]);if(e&&e.data&&e.data.jstree&&e.data.jstree.icon&&(h.icon=e.data.jstree.icon),e&&e.data&&(h.data=e.data,e.data.jstree))for(s in e.data.jstree)e.data.jstree.hasOwnProperty(s)&&(h.state[s]=e.data.jstree[s]);if(e&&"object"==typeof e.state)for(s in e.state)e.state.hasOwnProperty(s)&&(h.state[s]=e.state[s]);if(e&&"object"==typeof e.li_attr)for(s in e.li_attr)e.li_attr.hasOwnProperty(s)&&(h.li_attr[s]=e.li_attr[s]);if(h.li_attr.id||(h.li_attr.id=d),e&&"object"==typeof e.a_attr)for(s in e.a_attr)e.a_attr.hasOwnProperty(s)&&(h.a_attr[s]=e.a_attr[s]);for(e&&e.children&&!0===e.children&&(h.state.loaded=!1,h.children=[],h.children_d=[]),c[h.id]=h,s=0,n=h.children.length;s
      • "+this.get_string("Loading ...")+"
      • "),this.load_node("#",function(t,i){i&&(this.get_container_ul()[0].className=r,this.set_state(e.extend(!0,{},this._data.core.state),function(){this.trigger("refresh")})),this._data.core.state=null})},refresh_node:function(t){if(!(t=this.get_node(t))||"#"===t.id)return!1;var i=[],r=[];this._data.core.selected.concat([]);r.push(t.id),!0===t.state.opened&&i.push(t.id),this.get_node(t,!0).find(".jstree-open").each(function(){i.push(this.id)}),this._load_nodes(r,e.proxy(function(e){this.open_node(i,!1,0),this.select_node(this._data.core.selected),this.trigger("refresh_node",{node:t,nodes:e})},this))},set_id:function(t,i){if(!(t=this.get_node(t))||"#"===t.id)return!1;var r,s,n=this._model.data;for(i=i.toString(),n[t.parent].children[e.inArray(t.id,n[t.parent].children)]=i,r=0,s=t.parents.length;ri.children.length&&(s=i.children.length),r.id||(r.id=!0),!this.check("create_node",r,i,s))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(!0===r.id&&delete r.id,!(r=this._parse_model_from_json(r,i.id,i.parents.concat())))return!1;for(o=this.get_node(r),d=[],d.push(r),d=d.concat(o.children_d),this.trigger("model",{nodes:d,parent:i.id}),i.children_d=i.children_d.concat(d),c=0,l=i.parents.length;c=s?c+1:c]=i.children[c];return o[s]=r.id,i.children=o,this.redraw_node(i,!0),n&&n.call(this,this.get_node(r)),this.trigger("create_node",{node:this.get_node(r),parent:i.id,position:s}),r.id},rename_node:function(t,i){var r,s,n;if(e.isArray(t)){for(t=t.slice(),r=0,s=t.length;rh.children.length&&(s=h.children.length),!this.check("move_node",i,h,s,{core:!0,is_multi:_&&_._id&&_._id!==this._id,is_foreign:!_||!_._id}))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(i.parent===h.id){for(g=h.children.concat(),f=e.inArray(i.id,g),-1!==f&&(g=e.vakata.array_remove(g,f),s>f&&s--),f=[],p=0,m=g.length;p=s?p+1:p]=g[p];f[s]=i.id,h.children=f,this._node_changed(h.id),this.redraw("#"===h.id)}else{for(f=i.children_d.concat(),f.push(i.id),p=0,m=i.parents.length;p=s?p+1:p]=h.children[p];for(g[s]=i.id,h.children=g,h.children_d.push(i.id),h.children_d=h.children_d.concat(i.children_d),i.parent=h.id,f=h.parents.concat(),f.unshift(h.id),y=i.parents.length,i.parents=f,f=f.concat(),p=0,m=i.children_d.length;pf.children.length&&(s=f.children.length),!this.check("copy_node",i,f,s,{core:!0,is_multi:p&&p._id&&p._id!==this._id,is_foreign:!p||!p._id}))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(!(u=p?p.get_json(i,{no_id:!0,no_data:!0,no_state:!0}):i))return!1;if(!0===u.id&&delete u.id,!(u=this._parse_model_from_json(u,f.id,f.parents.concat())))return!1;for(l=this.get_node(u),i&&i.state&&!1===i.state.loaded&&(l.state.loaded=!1),c=[],c.push(u),c=c.concat(l.children_d),this.trigger("model",{nodes:c,parent:f.id}),h=0,_=f.parents.length;h<_;h++)this._model.data[f.parents[h]].children_d=this._model.data[f.parents[h]].children_d.concat(c);for(c=[],h=0,_=f.children.length;h<_;h++)c[h>=s?h+1:h]=f.children[h];return c[s]=l.id,f.children=c,f.children_d.push(l.id),f.children_d=f.children_d.concat(l.children_d),this._node_changed(f.id),this.redraw("#"===f.id),n&&n.call(this,l,f,s),this.trigger("copy_node",{node:l,original:i,parent:f.id,position:s,old_parent:g,old_position:p&&p._id&&g&&p._model.data[g]&&p._model.data[g].children?e.inArray(i.id,p._model.data[g].children):-1,is_multi:p&&p._id&&p._id!==this._id,is_foreign:!p||!p._id,old_instance:p,new_instance:this}),l.id},cut:function(t){if(t||(t=this._data.core.selected.concat()),e.isArray(t)||(t=[t]),!t.length)return!1;var i,r,s,d=[];for(r=0,s=t.length;r"),o=i,d=e("
        ",{css:{position:"absolute",top:"-200px",left:r?"0px":"-1000px",visibility:"hidden"}}).appendTo("body"),c=e("",{value:o,class:"jstree-rename-input",css:{padding:"0",border:"1px solid silver","box-sizing":"border-box",display:"inline-block",height:this._data.core.li_height+"px",lineHeight:this._data.core.li_height+"px",width:"150px"},blur:e.proxy(function(){var i=a.children(".jstree-rename-input"),r=i.val();""===r&&(r=o),d.remove(),a.replaceWith(n),a.remove(),this.set_text(t,o),!1===this.rename_node(t,e("
        ").text(r)[this.settings.core.force_text?"text":"html"]())&&this.set_text(t,o)},this),keydown:function(e){var t=e.which;27===t&&(this.value=o),27!==t&&13!==t&&37!==t&&38!==t&&39!==t&&40!==t&&32!==t||e.stopImmediatePropagation(),27!==t&&13!==t||(e.preventDefault(),this.blur())},click:function(e){e.stopImmediatePropagation()},mousedown:function(e){e.stopImmediatePropagation()},keyup:function(e){c.width(Math.min(d.text("pW"+this.value).width(),s))},keypress:function(e){if(13===e.which)return!1}}),l={fontFamily:n.css("fontFamily")||"",fontSize:n.css("fontSize")||"",fontWeight:n.css("fontWeight")||"",fontStyle:n.css("fontStyle")||"",fontStretch:n.css("fontStretch")||"",fontVariant:n.css("fontVariant")||"",letterSpacing:n.css("letterSpacing")||"",wordSpacing:n.css("wordSpacing")||""};a.attr("class",n.attr("class")).append(n.contents().clone()).append(c),n.replaceWith(a),d.css(l),c.css(l).width(Math.min(d.text("pW"+c[0].value).width(),s))[0].select()},set_theme:function(t,i){if(!t)return!1;if(!0===i){var r=this.settings.core.themes.dir;r||(r=e.jstree.path+"/themes"),i=r+"/"+t+"/style.css"}i&&-1===e.inArray(i,d)&&(e("head").append(''),d.push(i)),this._data.core.themes.name&&this.element.removeClass("jstree-"+this._data.core.themes.name),this._data.core.themes.name=t,this.element.addClass("jstree-"+t),this.element[this.settings.core.themes.responsive?"addClass":"removeClass"]("jstree-"+t+"-responsive"),this.trigger("set_theme",{theme:t})},get_theme:function(){return this._data.core.themes.name},set_theme_variant:function(e){this._data.core.themes.variant&&this.element.removeClass("jstree-"+this._data.core.themes.name+"-"+this._data.core.themes.variant),this._data.core.themes.variant=e,e&&this.element.addClass("jstree-"+this._data.core.themes.name+"-"+this._data.core.themes.variant)},get_theme_variant:function(){return this._data.core.themes.variant},show_stripes:function(){this._data.core.themes.stripes=!0,this.get_container_ul().addClass("jstree-striped")},hide_stripes:function(){this._data.core.themes.stripes=!1,this.get_container_ul().removeClass("jstree-striped")},toggle_stripes:function(){this._data.core.themes.stripes?this.hide_stripes():this.show_stripes()},show_dots:function(){this._data.core.themes.dots=!0,this.get_container_ul().removeClass("jstree-no-dots")},hide_dots:function(){this._data.core.themes.dots=!1,this.get_container_ul().addClass("jstree-no-dots")},toggle_dots:function(){this._data.core.themes.dots?this.hide_dots():this.show_dots()},show_icons:function(){this._data.core.themes.icons=!0,this.get_container_ul().removeClass("jstree-no-icons")},hide_icons:function(){this._data.core.themes.icons=!1,this.get_container_ul().addClass("jstree-no-icons")},toggle_icons:function(){this._data.core.themes.icons?this.hide_icons():this.show_icons()},set_icon:function(t,i){var r,s,n,a;if(e.isArray(t)){for(t=t.slice(),r=0,s=t.length;r250)&&e.vakata.context.hide()},this)),e(document).on("context_hide.vakata",e.proxy(function(){this._data.contextmenu.visible=!1},this))},this.teardown=function(){this._data.contextmenu.visible&&e.vakata.context.hide(),r.teardown.call(this)},this.show_contextmenu=function(i,r,s,n){if(!(i=this.get_node(i))||"#"===i.id)return!1;var a=this.settings.contextmenu,o=this.get_node(i,!0),d=o.children(".jstree-anchor"),c=!1,l=!1;(a.show_at_node||r===t||s===t)&&(c=d.offset(),r=c.left,s=c.top+this._data.core.li_height),this.settings.contextmenu.select_node&&!this.is_selected(i)&&this.activate_node(i,n),l=a.items,e.isFunction(l)&&(l=l.call(this,i,e.proxy(function(e){this._show_contextmenu(i,r,s,e)},this))),e.isPlainObject(l)&&this._show_contextmenu(i,r,s,l)},this._show_contextmenu=function(t,i,r,s){var n=this.get_node(t,!0),a=n.children(".jstree-anchor");e(document).one("context_show.vakata",e.proxy(function(t,i){var r="jstree-contextmenu jstree-"+this.get_theme()+"-contextmenu";e(i.element).addClass(r)},this)),this._data.contextmenu.visible=!0,e.vakata.context.show(a,{x:i,y:r},s),this.trigger("show_contextmenu",{node:t,x:i,y:r})}},function(e){var t=!1,i={element:!1,reference:!1,position_x:0,position_y:0,items:[],html:"",is_visible:!1};e.vakata.context={settings:{hide_onmouseleave:0,icons:!0},_trigger:function(t){e(document).triggerHandler("context_"+t+".vakata",{reference:i.reference,element:i.element,position:{x:i.position_x,y:i.position_y}})},_execute:function(t){return!(!(t=i.items[t])||t._disabled&&(!e.isFunction(t._disabled)||t._disabled({item:t,reference:i.reference,element:i.element}))||!t.action)&&t.action.call(null,{item:t,reference:i.reference,element:i.element,position:{x:i.position_x,y:i.position_y}})},_parse:function(t,r){if(!t)return!1;r||(i.html="",i.items=[]);var s,n="",a=!1;return r&&(n+=""),r||(i.html=n,e.vakata.context._trigger("parse")),n.length>10&&n},_show_submenu:function(i){if(i=e(i),i.length&&i.children("ul").length){var r=i.children("ul"),s=i.offset().left+i.outerWidth(),n=i.offset().top,a=r.width(),o=r.height(),d=e(window).width()+e(window).scrollLeft(),c=e(window).height()+e(window).scrollTop();t?i[s-(a+10+i.outerWidth())<0?"addClass":"removeClass"]("vakata-context-left"):i[s+a+10>d?"addClass":"removeClass"]("vakata-context-right"),n+o+10>c&&r.css("bottom","-1px"),r.show()}},show:function(r,s,n){var a,o,d,c,l,h,_,u;switch(i.element&&i.element.length&&i.element.width(""),!0){case!s&&!r:return!1;case!!s&&!!r:i.reference=r,i.position_x=s.x,i.position_y=s.y;break;case!s&&!!r:i.reference=r,a=r.offset(),i.position_x=a.left+r.outerHeight(),i.position_y=a.top;break;case!!s&&!r:i.position_x=s.x,i.position_y=s.y}r&&!n&&e(r).data("vakata_contextmenu")&&(n=e(r).data("vakata_contextmenu")),e.vakata.context._parse(n)&&i.element.html(i.html),i.items.length&&(o=i.element,d=i.position_x,c=i.position_y,l=o.width(),h=o.height(),_=e(window).width()+e(window).scrollLeft(),u=e(window).height()+e(window).scrollTop(),t&&(d-=o.outerWidth())_&&(d=_-(l+20)),c+h+20>u&&(c=u-(h+20)),i.element.css({left:d,top:c}).show().find("a:eq(0)").focus().parent().addClass("vakata-context-hover"),i.is_visible=!0,e.vakata.context._trigger("show"))},hide:function(){i.is_visible&&(i.element.hide().find("ul").hide().end().find(":focus").blur(),i.is_visible=!1,e.vakata.context._trigger("hide"))}},e(function(){t="rtl"===e("body").css("direction");var r=!1;i.element=e("
          "),i.element.on("mouseenter","li",function(t){t.stopImmediatePropagation(),e.contains(this,t.relatedTarget)||(r&&clearTimeout(r),i.element.find(".vakata-context-hover").removeClass("vakata-context-hover").end(),e(this).siblings().find("ul").hide().end().end().parentsUntil(".vakata-context","li").addBack().addClass("vakata-context-hover"),e.vakata.context._show_submenu(this))}).on("mouseleave","li",function(t){e.contains(this,t.relatedTarget)||e(this).find(".vakata-context-hover").addBack().removeClass("vakata-context-hover")}).on("mouseleave",function(t){e(this).find(".vakata-context-hover").removeClass("vakata-context-hover"),e.vakata.context.settings.hide_onmouseleave&&(r=setTimeout(function(t){return function(){e.vakata.context.hide()}}(),e.vakata.context.settings.hide_onmouseleave))}).on("click","a",function(t){t.preventDefault(),e(this).blur().parent().hasClass("vakata-context-disabled")||!1===e.vakata.context._execute(e(this).attr("rel"))||e.vakata.context.hide()}).on("keydown","a",function(t){var r=null;switch(t.which){case 13:case 32:t.type="mouseup",t.preventDefault(),e(t.currentTarget).trigger(t);break;case 37:i.is_visible&&(i.element.find(".vakata-context-hover").last().parents("li:eq(0)").find("ul").hide().find(".vakata-context-hover").removeClass("vakata-context-hover").end().end().children("a").focus(),t.stopImmediatePropagation(),t.preventDefault());break;case 38:i.is_visible&&(r=i.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").prevAll("li:not(.vakata-context-separator)").first(),r.length||(r=i.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").last()),r.addClass("vakata-context-hover").children("a").focus(),t.stopImmediatePropagation(),t.preventDefault());break;case 39:i.is_visible&&(i.element.find(".vakata-context-hover").last().children("ul").show().children("li:not(.vakata-context-separator)").removeClass("vakata-context-hover").first().addClass("vakata-context-hover").children("a").focus(),t.stopImmediatePropagation(),t.preventDefault());break;case 40:i.is_visible&&(r=i.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").nextAll("li:not(.vakata-context-separator)").first(),r.length||(r=i.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").first()),r.addClass("vakata-context-hover").children("a").focus(),t.stopImmediatePropagation(),t.preventDefault());break;case 27:e.vakata.context.hide(),t.preventDefault()}}).on("keydown",function(e){e.preventDefault();var t=i.element.find(".vakata-contextmenu-shortcut-"+e.which).parent();t.parent().not(".vakata-context-disabled")&&t.mouseup()}).appendTo("body"),e(document).on("mousedown",function(t){i.is_visible&&!e.contains(i.element[0],t.target)&&e.vakata.context.hide()}).on("context_show.vakata",function(e,r){i.element.find("li:has(ul)").children("a").addClass("vakata-context-parent"),t&&i.element.addClass("vakata-context-rtl").css("direction","rtl"),i.element.find("ul").hide().end()})})}(e),e.jstree.defaults.dnd={copy:!0,open_timeout:500,is_draggable:!0,check_while_dragging:!0,always_copy:!1,inside_pos:0},e.jstree.plugins.dnd=function(t,i){this.bind=function(){i.bind.call(this),this.element.on("mousedown.jstree touchstart.jstree",".jstree-anchor",e.proxy(function(t){var i=this.get_node(t.target),r=this.is_selected(i)?this.get_selected().length:1;if(i&&i.id&&"#"!==i.id&&(1===t.which||"touchstart"===t.type)&&(!0===this.settings.dnd.is_draggable||e.isFunction(this.settings.dnd.is_draggable)&&this.settings.dnd.is_draggable.call(this,r>1?this.get_selected(!0):[i])))return this.element.trigger("mousedown.jstree"),e.vakata.dnd.start(t,{jstree:!0,origin:this,obj:this.get_node(i,!0),nodes:r>1?this.get_selected():[i.id]},'
          '+(r>1?r+" "+this.get_string("nodes"):this.get_text(t.currentTarget,!0))+'
          ')},this))}},e(function(){var t=!1,i=!1,r=!1,s=e('
           
          ').hide().appendTo("body");e(document).bind("dnd_start.vakata",function(e,i){t=!1}).bind("dnd_move.vakata",function(n,a){if(r&&clearTimeout(r),a&&a.data&&a.data.jstree&&(!a.event.target.id||"jstree-marker"!==a.event.target.id)){var o,d,c,l,h,_,u,g,f,p,m,v,j,y,k=e.jstree.reference(a.event.target),x=!1,b=!1,w=!1;if(k&&k._data&&k._data.dnd)if(s.attr("class","jstree-"+k.get_theme()+(k.settings.core.themes.responsive?" jstree-dnd-responsive":"")),a.helper.children().attr("class","jstree-"+k.get_theme()+(k.settings.core.themes.responsive?" jstree-dnd-responsive":"")).find(".jstree-copy:eq(0)")[a.data.origin&&(a.data.origin.settings.dnd.always_copy||a.data.origin.settings.dnd.copy&&(a.event.metaKey||a.event.ctrlKey))?"show":"hide"](),a.event.target!==k.element[0]&&a.event.target!==k.get_container_ul()[0]||0!==k.get_container_ul().children().length){if((x=e(a.event.target).closest(".jstree-anchor"))&&x.length&&x.parent().is(".jstree-closed, .jstree-open, .jstree-leaf")&&(b=x.offset(),w=a.event.pageY-b.top,c=x.height(),_=wc-c/3?["a","i","b"]:w>c/2?["i","a","b"]:["i","b","a"],e.each(_,function(n,w){switch(w){case"b":o=b.left-6,d=b.top,l=k.get_parent(x),h=x.parent().index();break;case"i":j=k.settings.dnd.inside_pos,y=k.get_node(x.parent()),o=b.left-2,d=b.top+c/2+1,l=y.id,h="first"===j?0:"last"===j?y.children.length:Math.min(j,y.children.length);break;case"a":o=b.left-6,d=b.top+c,l=k.get_parent(x),h=x.parent().index()+1}for(u=!0,g=0,f=a.data.nodes.length;ge.inArray(a.data.nodes[g],v.children)&&(m-=1)),!(u=u&&(k&&k.settings&&k.settings.dnd&&!1===k.settings.dnd.check_while_dragging||k.check(p,a.data.origin&&a.data.origin!==k?a.data.origin.get_node(a.data.nodes[g]):a.data.nodes[g],l,m,{dnd:!0,ref:k.get_node(x.parent()),pos:w,is_multi:a.data.origin&&a.data.origin!==k,is_foreign:!a.data.origin})))){k&&k.last_error&&(i=k.last_error());break}if(u)return"i"===w&&x.parent().is(".jstree-closed")&&k.settings.dnd.open_timeout&&(r=setTimeout(function(e,t){return function(){e.open_node(t)}}(k,x),k.settings.dnd.open_timeout)),t={ins:k,par:l,pos:"i"!==w||"last"!==j||0!==h||k.is_loaded(y)?h:"last"},s.css({left:o+"px",top:d+"px"}).show(),a.helper.find(".jstree-icon:eq(0)").removeClass("jstree-er").addClass("jstree-ok"),i={},_=!0,!1}),!0===_))return}else{for(u=!0,g=0,f=a.data.nodes.length;g
          ").html(s).css({display:"block",margin:"0",padding:"0",position:"absolute",top:"-2000px",lineHeight:"16px",zIndex:"10000"})),e(document).bind("mousemove touchmove",e.vakata.dnd.drag),e(document).bind("mouseup touchend",e.vakata.dnd.stop),!1},drag:function(i){if("touchmove"===i.type&&i.originalEvent&&i.originalEvent.changedTouches&&i.originalEvent.changedTouches[0]&&(i.pageX=i.originalEvent.changedTouches[0].pageX,i.pageY=i.originalEvent.changedTouches[0].pageY,i.target=document.elementFromPoint(i.originalEvent.changedTouches[0].pageX-window.pageXOffset,i.originalEvent.changedTouches[0].pageY-window.pageYOffset)),t.is_down){if(!t.is_drag){if(!(Math.abs(i.pageX-t.init_x)>(t.is_touch?e.vakata.dnd.settings.threshold_touch:e.vakata.dnd.settings.threshold)||Math.abs(i.pageY-t.init_y)>(t.is_touch?e.vakata.dnd.settings.threshold_touch:e.vakata.dnd.settings.threshold)))return;t.helper&&(t.helper.appendTo("body"),t.helper_w=t.helper.outerWidth()),t.is_drag=!0,e.vakata.dnd._trigger("start",i)}var r=!1,s=!1,n=!1,a=!1,o=!1,d=!1,c=!1,l=!1,h=!1,_=!1;return t.scroll_t=0,t.scroll_l=0,t.scroll_e=!1,e(e(i.target).parentsUntil("body").addBack().get().reverse()).filter(function(){return/^auto|scroll$/.test(e(this).css("overflow"))&&(this.scrollHeight>this.offsetHeight||this.scrollWidth>this.offsetWidth)}).each(function(){var r=e(this),s=r.offset();if(this.scrollHeight>this.offsetHeight&&(s.top+r.height()-i.pageYthis.offsetWidth&&(s.left+r.width()-i.pageXa&&i.pageY-ca&&a-(i.pageY-c)d&&i.pageX-ld&&d-(i.pageX-l)n&&(h=n-50),o&&_+t.helper_w>o&&(_=o-(t.helper_w+2)),t.helper.css({left:_+"px",top:h+"px"})),e.vakata.dnd._trigger("move",i),!1}},stop:function(i){if("touchend"===i.type&&i.originalEvent&&i.originalEvent.changedTouches&&i.originalEvent.changedTouches[0]&&(i.pageX=i.originalEvent.changedTouches[0].pageX,i.pageY=i.originalEvent.changedTouches[0].pageY,i.target=document.elementFromPoint(i.originalEvent.changedTouches[0].pageX-window.pageXOffset,i.originalEvent.changedTouches[0].pageY-window.pageYOffset)),t.is_drag)e.vakata.dnd._trigger("stop",i);else if("touchend"===i.type&&i.target===t.target){var r=setTimeout(function(){e(i.target).click()},100);e(i.target).one("click",function(){r&&clearTimeout(r)})}return e.vakata.dnd._clean(),!1}}}(e),e.jstree.defaults.search={ajax:!1,fuzzy:!1,case_sensitive:!1,show_only_matches:!1,close_opened_onclear:!0,search_leaves_only:!1,search_callback:!1},e.jstree.plugins.search=function(t,i){this.bind=function(){i.bind.call(this),this._data.search.str="",this._data.search.dom=e(),this._data.search.res=[],this._data.search.opn=[],this.element.on("before_open.jstree",e.proxy(function(t,i){var r,s,n=this._data.search.res,a=[],o=e();if(n&&n.length&&(this._data.search.dom=e(this.element[0].querySelectorAll("#"+e.map(n,function(t){return-1!=="0123456789".indexOf(t[0])?"\\3"+t[0]+" "+t.substr(1).replace(e.jstree.idregex,"\\$&"):t.replace(e.jstree.idregex,"\\$&")}).join(", #"))),this._data.search.dom.children(".jstree-anchor").addClass("jstree-search"),this.settings.search.show_only_matches&&this._data.search.res.length)){for(r=0,s=n.length;r32&&(i.fuzzy=!1),i.fuzzy&&(r=1<=g;d--)if(m=s[t.charAt(d-1)],p[d]=0===a?(p[d+1]<<1|1)&m:(p[d+1]<<1|1)&m|(u[d+1]|u[d])<<1|1|u[d+1],p[d]&r&&(x=n(a,d-1))<=j){if(j=x,y=d-1,b.push(y),!(y>o))break;g=Math.max(1,2*o-y)}if(n(a+1,o)>j)break;u=p}return{isMatch:y>=0,score:x}},!0===t?{search:a}:a(t)}}(e),e.jstree.defaults.sort=function(e,t){return this.get_text(e)>this.get_text(t)?1:-1},e.jstree.plugins.sort=function(t,i){this.bind=function(){i.bind.call(this),this.element.on("model.jstree",e.proxy(function(e,t){this.sort(t.parent,!0)},this)).on("rename_node.jstree create_node.jstree",e.proxy(function(e,t){this.sort(t.parent||t.node.parent,!1),this.redraw_node(t.parent||t.node.parent,!0)},this)).on("move_node.jstree copy_node.jstree",e.proxy(function(e,t){this.sort(t.parent,!1),this.redraw_node(t.parent,!0)},this))},this.sort=function(t,i){var r,s;if((t=this.get_node(t))&&t.children&&t.children.length&&(t.children.sort(e.proxy(this.settings.sort,this)),i))for(r=0,s=t.children_d.length;rt.ttl)&&(t&&t.state&&(t=t.state),t&&e.isFunction(this.settings.state.filter)&&(t=this.settings.state.filter.call(this,t)),!!t&&(this.element.one("set_state.jstree",function(i,r){r.instance.trigger("restore_state",{state:e.extend(!0,{},t)})}),this.set_state(t),!0))},this.clear_state=function(){return e.vakata.storage.del(this.settings.state.key)}},function(e,t){e.vakata.storage={set:function(e,t){return window.localStorage.setItem(e,t)},get:function(e){return window.localStorage.getItem(e)},del:function(e){return window.localStorage.removeItem(e)}}}(e),e.jstree.defaults.types={"#":{},default:{}},e.jstree.plugins.types=function(i,r){this.init=function(e,i){var s,n;if(i&&i.types&&i.types.default)for(s in i.types)if("default"!==s&&"#"!==s&&i.types.hasOwnProperty(s))for(n in i.types.default)i.types.default.hasOwnProperty(n)&&i.types[s][n]===t&&(i.types[s][n]=i.types.default[n]);r.init.call(this,e,i),this._model.data["#"].type="#"},this.refresh=function(e,t){r.refresh.call(this,e,t),this._model.data["#"].type="#"},this.bind=function(){this.element.on("model.jstree",e.proxy(function(e,i){var r,s,n=this._model.data,a=i.nodes,o=this.settings.types,d="default";for(r=0,s=a.length;r .jstree-ocl",e.proxy(function(t){t.stopImmediatePropagation();var i=e.Event("click",{metaKey:t.metaKey,ctrlKey:t.ctrlKey,altKey:t.altKey,shiftKey:t.shiftKey});e(t.currentTarget).closest(".jstree-node").children(".jstree-anchor:eq(0)").trigger(i).focus()},this)).on("mouseover.jstree",".jstree-wholerow, .jstree-icon",e.proxy(function(e){return e.stopImmediatePropagation(),this.hover_node(e.currentTarget),!1},this)).on("mouseleave.jstree",".jstree-node",e.proxy(function(e){this.dehover_node(e.currentTarget)},this))},this.teardown=function(){this.settings.wholerow&&this.element.find(".jstree-wholerow").remove(),i.teardown.call(this)},this.redraw_node=function(t,r,s){if(t=i.redraw_node.call(this,t,r,s)){var n=g.cloneNode(!0);-1!==e.inArray(t.id,this._data.core.selected)&&(n.className+=" jstree-wholerow-clicked"),t.insertBefore(n,t.childNodes[0])}return t}}}}); +//# sourceMappingURL=../../../maps/libs/jquery/jstree.js.map diff --git a/static/scripts/libs/jquery/select2.js b/static/scripts/libs/jquery/select2.js index 1159cf07cb2..468b27ec8a9 100755 --- a/static/scripts/libs/jquery/select2.js +++ b/static/scripts/libs/jquery/select2.js @@ -1,4 +1,3 @@ -!function(a){"undefined"==typeof a.fn.each2&&a.extend(a.fn,{each2:function(b){for(var c=a([0]),d=-1,e=this.length;++dc;c+=1)if(g(a,b[c]))return c;return-1}function f(){var b=a(N);b.appendTo("body");var c={width:b.width()-b[0].clientWidth,height:b.height()-b[0].clientHeight};return b.remove(),c}function g(a,c){return a===c?!0:a===b||c===b?!1:null===a||null===c?!1:a.constructor===String?a+""==c+"":c.constructor===String?c+""==a+"":!1}function h(b,c){var d,e,f;if(null===b||b.length<1)return[];for(d=b.split(c),e=0,f=d.length;f>e;e+=1)d[e]=a.trim(d[e]);return d}function i(a){return a.outerWidth(!1)-a.width()}function j(c){var d="keyup-change-value";c.on("keydown",function(){a.data(c,d)===b&&a.data(c,d,c.val())}),c.on("keyup",function(){var e=a.data(c,d);e!==b&&c.val()!==e&&(a.removeData(c,d),c.trigger("keyup-change"))})}function k(c){c.on("mousemove",function(c){var d=M;(d===b||d.x!==c.pageX||d.y!==c.pageY)&&a(c.target).trigger("mousemove-filtered",c)})}function l(a,c,d){d=d||b;var e;return function(){var b=arguments;window.clearTimeout(e),e=window.setTimeout(function(){c.apply(d,b)},a)}}function m(a,b){var c=l(a,function(a){b.trigger("scroll-debounced",a)});b.on("scroll",function(a){e(a.target,b.get())>=0&&c(a)})}function n(a){a[0]!==document.activeElement&&window.setTimeout(function(){var b,c=a[0],d=a.val().length;a.focus();var e=c.offsetWidth>0||c.offsetHeight>0;e&&c===document.activeElement&&(c.setSelectionRange?c.setSelectionRange(d,d):c.createTextRange&&(b=c.createTextRange(),b.collapse(!1),b.select()))},0)}function o(b){b=a(b)[0];var c=0,d=0;if("selectionStart"in b)c=b.selectionStart,d=b.selectionEnd-c;else if("selection"in document){b.focus();var e=document.selection.createRange();d=document.selection.createRange().text.length,e.moveStart("character",-b.value.length),c=e.text.length-d}return{offset:c,length:d}}function p(a){a.preventDefault(),a.stopPropagation()}function q(a){a.preventDefault(),a.stopImmediatePropagation()}function r(b){if(!J){var c=b[0].currentStyle||window.getComputedStyle(b[0],null);J=a(document.createElement("div")).css({position:"absolute",left:"-10000px",top:"-10000px",display:"none",fontSize:c.fontSize,fontFamily:c.fontFamily,fontStyle:c.fontStyle,fontWeight:c.fontWeight,letterSpacing:c.letterSpacing,textTransform:c.textTransform,whiteSpace:"nowrap"}),J.attr("class","select2-sizer"),a("body").append(J)}return J.text(b.val()),J.width()}function s(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each2(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each2(function(){0!==this.indexOf("select2-")&&(f=d(this),f&&g.push(f))})),b.attr("class",g.join(" "))}function t(a,b,c,e){var f=d(a.toUpperCase()).indexOf(d(b.toUpperCase())),g=b.length;return 0>f?void c.push(e(a)):(c.push(e(a.substring(0,f))),c.push(""),c.push(e(a.substring(f,f+g))),c.push(""),void c.push(e(a.substring(f+g,a.length))))}function u(a){var b={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})}function v(c){var d,e=null,f=c.quietMillis||100,g=c.url,h=this;return function(i){window.clearTimeout(d),d=window.setTimeout(function(){var d=c.data,f=g,j=c.transport||a.fn.select2.ajaxDefaults.transport,k={type:c.type||"GET",cache:c.cache||!1,jsonpCallback:c.jsonpCallback||b,dataType:c.dataType||"json"},l=a.extend({},a.fn.select2.ajaxDefaults.params,k);d=d?d.call(h,i.term,i.page,i.context):null,f="function"==typeof f?f.call(h,i.term,i.page,i.context):f,e&&"function"==typeof e.abort&&e.abort(),c.params&&(a.isFunction(c.params)?a.extend(l,c.params.call(h)):a.extend(l,c.params)),a.extend(l,{url:f,dataType:c.dataType,data:d,success:function(a){var b=c.results(a,i.page,i);i.callback(b)},error:function(a,b,c){var d={hasError:!0,jqXHR:a,textStatus:b,errorThrown:c};i.callback(d)}}),e=j.call(h,l)},f)}}function w(b){var c,d,e=b,f=function(a){return""+a.text};a.isArray(e)&&(d=e,e={results:d}),a.isFunction(e)===!1&&(d=e,e=function(){return d});var g=e();return g.text&&(f=g.text,a.isFunction(f)||(c=g.text,f=function(a){return a[c]})),function(b){var c,d=b.term,g={results:[]};return""===d?void b.callback(e()):(c=function(e,g){var h,i;if(e=e[0],e.children){h={};for(i in e)e.hasOwnProperty(i)&&(h[i]=e[i]);h.children=[],a(e.children).each2(function(a,b){c(b,h.children)}),(h.children.length||b.matcher(d,f(h),e))&&g.push(h)}else b.matcher(d,f(e),e)&&g.push(e)},a(e().results).each2(function(a,b){c(b,g.results)}),void b.callback(g))}}function x(c){var d=a.isFunction(c);return function(e){var f=e.term,g={results:[]},h=d?c(e):c;a.isArray(h)&&(a(h).each(function(){var a=this.text!==b,c=a?this.text:this;(""===f||e.matcher(f,c))&&g.results.push(a?this:{id:this,text:this})}),e.callback(g))}}function y(b,c){if(a.isFunction(b))return!0;if(!b)return!1;if("string"==typeof b)return!0;throw new Error(c+" must be a string, function, or falsy value")}function z(b,c){if(a.isFunction(b)){var d=Array.prototype.slice.call(arguments,2);return b.apply(c,d)}return b}function A(b){var c=0;return a.each(b,function(a,b){b.children?c+=A(b.children):c++}),c}function B(a,c,d,e){var f,h,i,j,k,l=a,m=!1;if(!e.createSearchChoice||!e.tokenSeparators||e.tokenSeparators.length<1)return b;for(;;){for(h=-1,i=0,j=e.tokenSeparators.length;j>i&&(k=e.tokenSeparators[i],h=a.indexOf(k),!(h>=0));i++);if(0>h)break;if(f=a.substring(0,h),a=a.substring(h+k.length),f.length>0&&(f=e.createSearchChoice.call(this,f,c),f!==b&&null!==f&&e.id(f)!==b&&null!==e.id(f))){for(m=!1,i=0,j=c.length;j>i;i++)if(g(e.id(f),e.id(c[i]))){m=!0;break}m||d(f)}}return l!==a?a:void 0}function C(){var b=this;a.each(arguments,function(a,c){b[c].remove(),b[c]=null})}function D(b,c){var d=function(){};return d.prototype=new b,d.prototype.constructor=d,d.prototype.parent=b.prototype,d.prototype=a.extend(d.prototype,c),d}if(window.Select2===b){var E,F,G,H,I,J,K,L,M={x:0,y:0},E={TAB:9,ENTER:13,ESC:27,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,SHIFT:16,CTRL:17,ALT:18,PAGE_UP:33,PAGE_DOWN:34,HOME:36,END:35,BACKSPACE:8,DELETE:46,isArrow:function(a){switch(a=a.which?a.which:a){case E.LEFT:case E.RIGHT:case E.UP:case E.DOWN:return!0}return!1},isControl:function(a){var b=a.which;switch(b){case E.SHIFT:case E.CTRL:case E.ALT:return!0}return a.metaKey?!0:!1},isFunctionKey:function(a){return a=a.which?a.which:a,a>=112&&123>=a}},N="
          ",O={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};K=a(document),I=function(){var a=1;return function(){return a++}}(),F=D(Object,{bind:function(a){var b=this;return function(){a.apply(b,arguments)}},init:function(c){var d,e,g=".select2-results";this.opts=c=this.prepareOpts(c),this.id=c.id,c.element.data("select2")!==b&&null!==c.element.data("select2")&&c.element.data("select2").destroy(),this.container=this.createContainer(),this.liveRegion=a("",{role:"status","aria-live":"polite"}).addClass("select2-hidden-accessible").appendTo(document.body),this.containerId="s2id_"+(c.element.attr("id")||"autogen"+I()),this.containerEventName=this.containerId.replace(/([.])/g,"_").replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,"\\$1"),this.container.attr("id",this.containerId),this.container.attr("title",c.element.attr("title")),this.body=a("body"),s(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.attr("style",c.element.attr("style")),this.container.css(z(c.containerCss,this.opts.element)),this.container.addClass(z(c.containerCssClass,this.opts.element)),this.elementTabIndex=this.opts.element.attr("tabindex"),this.opts.element.data("select2",this).attr("tabindex","-1").before(this.container).on("click.select2",p),this.container.data("select2",this),this.dropdown=this.container.find(".select2-drop"),s(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass),this.dropdown.addClass(z(c.dropdownCssClass,this.opts.element)),this.dropdown.data("select2",this),this.dropdown.on("click",p),this.results=d=this.container.find(g),this.search=e=this.container.find("input.select2-input"),this.queryCount=0,this.resultsPage=0,this.context=null,this.initContainer(),this.container.on("click",p),k(this.results),this.dropdown.on("mousemove-filtered",g,this.bind(this.highlightUnderEvent)),this.dropdown.on("touchstart touchmove touchend",g,this.bind(function(a){this._touchEvent=!0,this.highlightUnderEvent(a)})),this.dropdown.on("touchmove",g,this.bind(this.touchMoved)),this.dropdown.on("touchstart touchend",g,this.bind(this.clearTouchMoved)),this.dropdown.on("click",this.bind(function(){this._touchEvent&&(this._touchEvent=!1,this.selectHighlighted())})),m(80,this.results),this.dropdown.on("scroll-debounced",g,this.bind(this.loadMoreIfNeeded)),a(this.container).on("change",".select2-input",function(a){a.stopPropagation()}),a(this.dropdown).on("change",".select2-input",function(a){a.stopPropagation()}),a.fn.mousewheel&&d.mousewheel(function(a,b,c,e){var f=d.scrollTop();e>0&&0>=f-e?(d.scrollTop(0),p(a)):0>e&&d.get(0).scrollHeight-d.scrollTop()+e<=d.height()&&(d.scrollTop(d.get(0).scrollHeight-d.height()),p(a))}),j(e),e.on("keyup-change input paste",this.bind(this.updateResults)),e.on("focus",function(){e.addClass("select2-focused")}),e.on("blur",function(){e.removeClass("select2-focused")}),this.dropdown.on("mouseup",g,this.bind(function(b){a(b.target).closest(".select2-result-selectable").length>0&&(this.highlightUnderEvent(b),this.selectHighlighted(b))})),this.dropdown.on("click mouseup mousedown touchstart touchend focusin",function(a){a.stopPropagation()}),this.nextSearchTerm=b,a.isFunction(this.opts.initSelection)&&(this.initSelection(),this.monitorSource()),null!==c.maximumInputLength&&this.search.attr("maxlength",c.maximumInputLength);var h=c.element.prop("disabled");h===b&&(h=!1),this.enable(!h);var i=c.element.prop("readonly");i===b&&(i=!1),this.readonly(i),L=L||f(),this.autofocus=c.element.prop("autofocus"),c.element.prop("autofocus",!1),this.autofocus&&this.focus(),this.search.attr("placeholder",c.searchInputPlaceholder)},destroy:function(){var a=this.opts.element,c=a.data("select2"),d=this;this.close(),a.length&&a[0].detachEvent&&a.each(function(){this.detachEvent("onpropertychange",d._sync)}),this.propertyObserver&&(this.propertyObserver.disconnect(),this.propertyObserver=null),this._sync=null,c!==b&&(c.container.remove(),c.liveRegion.remove(),c.dropdown.remove(),a.removeClass("select2-offscreen").removeData("select2").off(".select2").prop("autofocus",this.autofocus||!1),this.elementTabIndex?a.attr({tabindex:this.elementTabIndex}):a.removeAttr("tabindex"),a.show()),C.call(this,"container","liveRegion","dropdown","results","search")},optionToData:function(a){return a.is("option")?{id:a.prop("value"),text:a.text(),element:a.get(),css:a.attr("class"),disabled:a.prop("disabled"),locked:g(a.attr("locked"),"locked")||g(a.data("locked"),!0)}:a.is("optgroup")?{text:a.attr("label"),children:[],element:a.get(),css:a.attr("class")}:void 0},prepareOpts:function(c){var d,e,f,i,j=this;if(d=c.element,"select"===d.get(0).tagName.toLowerCase()&&(this.select=e=c.element),e&&a.each(["id","multiple","ajax","query","createSearchChoice","initSelection","data","tags"],function(){if(this in c)throw new Error("Option '"+this+"' is not allowed for Select2 when attached to a ","
          "," ","
            ","
          ","
          "].join(""));return b},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.focusser.prop("disabled",!this.isInterfaceEnabled())},opening:function(){var c,d,e;this.opts.minimumResultsForSearch>=0&&this.showSearch(!0),this.parent.opening.apply(this,arguments),this.showSearchInput!==!1&&this.search.val(this.focusser.val()),this.opts.shouldFocusInput(this)&&(this.search.focus(),c=this.search.get(0),c.createTextRange?(d=c.createTextRange(),d.collapse(!1),d.select()):c.setSelectionRange&&(e=this.search.val().length,c.setSelectionRange(e,e))),""===this.search.val()&&this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.search.select()),this.focusser.prop("disabled",!0).val(""),this.updateResults(!0),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&(this.parent.close.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},focus:function(){this.opened()?this.close():(this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},isFocused:function(){return this.container.hasClass("select2-container-active")},cancel:function(){this.parent.cancel.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus()},destroy:function(){a("label[for='"+this.focusser.attr("id")+"']").attr("for",this.opts.element.attr("id")),this.parent.destroy.apply(this,arguments),C.call(this,"selection","focusser")},initContainer:function(){var b,d,e=this.container,f=this.dropdown,g=I();this.showSearch(this.opts.minimumResultsForSearch<0?!1:!0),this.selection=b=e.find(".select2-choice"),this.focusser=e.find(".select2-focusser"),b.find(".select2-chosen").attr("id","select2-chosen-"+g),this.focusser.attr("aria-labelledby","select2-chosen-"+g),this.results.attr("id","select2-results-"+g),this.search.attr("aria-owns","select2-results-"+g),this.focusser.attr("id","s2id_autogen"+g),d=a("label[for='"+this.opts.element.attr("id")+"']"),this.focusser.prev().text(d.text()).attr("for",this.focusser.attr("id"));var h=this.opts.element.attr("title");this.opts.element.attr("title",h||d.text()),this.focusser.attr("tabindex",this.elementTabIndex),this.search.attr("id",this.focusser.attr("id")+"_search"),this.search.prev().text(a("label[for='"+this.focusser.attr("id")+"']").text()).attr("for",this.search.attr("id")),this.search.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()&&229!=a.keyCode){if(a.which===E.PAGE_UP||a.which===E.PAGE_DOWN)return void p(a);switch(a.which){case E.UP:case E.DOWN:return this.moveHighlight(a.which===E.UP?-1:1),void p(a);case E.ENTER:return this.selectHighlighted(),void p(a);case E.TAB:return void this.selectHighlighted({noFocus:!0});case E.ESC:return this.cancel(a),void p(a)}}})),this.search.on("blur",this.bind(function(){document.activeElement===this.body.get(0)&&window.setTimeout(this.bind(function(){this.opened()&&this.search.focus()}),0)})),this.focusser.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()&&a.which!==E.TAB&&!E.isControl(a)&&!E.isFunctionKey(a)&&a.which!==E.ESC){if(this.opts.openOnEnter===!1&&a.which===E.ENTER)return void p(a);if(a.which==E.DOWN||a.which==E.UP||a.which==E.ENTER&&this.opts.openOnEnter){if(a.altKey||a.ctrlKey||a.shiftKey||a.metaKey)return;return this.open(),void p(a)}return a.which==E.DELETE||a.which==E.BACKSPACE?(this.opts.allowClear&&this.clear(),void p(a)):void 0}})),j(this.focusser),this.focusser.on("keyup-change input",this.bind(function(a){if(this.opts.minimumResultsForSearch>=0){if(a.stopPropagation(),this.opened())return;this.open()}})),b.on("mousedown touchstart","abbr",this.bind(function(a){this.isInterfaceEnabled()&&(this.clear(),q(a),this.close(),this.selection.focus())})),b.on("mousedown touchstart",this.bind(function(d){c(b),this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.opened()?this.close():this.isInterfaceEnabled()&&this.open(),p(d)})),f.on("mousedown touchstart",this.bind(function(){this.opts.shouldFocusInput(this)&&this.search.focus()})),b.on("focus",this.bind(function(a){p(a)})),this.focusser.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})).on("blur",this.bind(function(){this.opened()||(this.container.removeClass("select2-container-active"),this.opts.element.trigger(a.Event("select2-blur")))})),this.search.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.setPlaceholder()},clear:function(b){var c=this.selection.data("select2-data");if(c){var d=a.Event("select2-clearing");if(this.opts.element.trigger(d),d.isDefaultPrevented())return;var e=this.getPlaceholderOption();this.opts.element.val(e?e.val():""),this.selection.find(".select2-chosen").empty(),this.selection.removeData("select2-data"),this.setPlaceholder(),b!==!1&&(this.opts.element.trigger({type:"select2-removed",val:this.id(c),choice:c}),this.triggerChange({removed:c}))}},initSelection:function(){if(this.isPlaceholderOptionSelected())this.updateSelection(null),this.close(),this.setPlaceholder();else{var a=this;this.opts.initSelection.call(null,this.opts.element,function(c){c!==b&&null!==c&&(a.updateSelection(c),a.close(),a.setPlaceholder(),a.nextSearchTerm=a.opts.nextSearchTerm(c,a.search.val()))})}},isPlaceholderOptionSelected:function(){var a;return this.getPlaceholder()===b?!1:(a=this.getPlaceholderOption())!==b&&a.prop("selected")||""===this.opts.element.val()||this.opts.element.val()===b||null===this.opts.element.val()},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=a.find("option").filter(function(){return this.selected&&!this.disabled});b(c.optionToData(d))}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=c.val(),f=null;b.query({matcher:function(a,c,d){var h=g(e,b.id(d));return h&&(f=d),h},callback:a.isFunction(d)?function(){d(f)}:a.noop})}),b},getPlaceholder:function(){return this.select&&this.getPlaceholderOption()===b?b:this.parent.getPlaceholder.apply(this,arguments)},setPlaceholder:function(){var a=this.getPlaceholder();if(this.isPlaceholderOptionSelected()&&a!==b){if(this.select&&this.getPlaceholderOption()===b)return;this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(a)),this.selection.addClass("select2-default"),this.container.removeClass("select2-allowclear")}},postprocessResults:function(a,b,c){var d=0,e=this;if(this.findHighlightableChoices().each2(function(a,b){return g(e.id(b.data("select2-data")),e.opts.element.val())?(d=a,!1):void 0}),c!==!1&&this.highlight(b===!0&&d>=0?d:0),b===!0){var f=this.opts.minimumResultsForSearch;f>=0&&this.showSearch(A(a.results)>=f)}},showSearch:function(b){this.showSearchInput!==b&&(this.showSearchInput=b,this.dropdown.find(".select2-search").toggleClass("select2-search-hidden",!b),this.dropdown.find(".select2-search").toggleClass("select2-offscreen",!b),a(this.dropdown,this.container).toggleClass("select2-with-searchbox",b))},onSelect:function(a,b){if(this.triggerSelect(a)){var c=this.opts.element.val(),d=this.data();this.opts.element.val(this.id(a)),this.updateSelection(a),this.opts.element.trigger({type:"select2-selected",val:this.id(a),choice:a}),this.nextSearchTerm=this.opts.nextSearchTerm(a,this.search.val()),this.close(),b&&b.noFocus||!this.opts.shouldFocusInput(this)||this.focusser.focus(),g(c,this.id(a))||this.triggerChange({added:a,removed:d})}},updateSelection:function(a){var c,d,e=this.selection.find(".select2-chosen");this.selection.data("select2-data",a),e.empty(),null!==a&&(c=this.opts.formatSelection(a,e,this.opts.escapeMarkup)),c!==b&&e.append(c),d=this.opts.formatSelectionCssClass(a,e),d!==b&&e.addClass(d),this.selection.removeClass("select2-default"),this.opts.allowClear&&this.getPlaceholder()!==b&&this.container.addClass("select2-allowclear")},val:function(){var a,c=!1,d=null,e=this,f=this.data();if(0===arguments.length)return this.opts.element.val();if(a=arguments[0],arguments.length>1&&(c=arguments[1]),this.select)this.select.val(a).find("option").filter(function(){return this.selected}).each2(function(a,b){return d=e.optionToData(b),!1}),this.updateSelection(d),this.setPlaceholder(),c&&this.triggerChange({added:d,removed:f});else{if(!a&&0!==a)return void this.clear(c);if(this.opts.initSelection===b)throw new Error("cannot call val() if initSelection() is not defined");this.opts.element.val(a),this.opts.initSelection(this.opts.element,function(a){e.opts.element.val(a?e.id(a):""),e.updateSelection(a),e.setPlaceholder(),c&&e.triggerChange({added:a,removed:f})})}},clearSearch:function(){this.search.val(""),this.focusser.val("")},data:function(a){var c,d=!1;return 0===arguments.length?(c=this.selection.data("select2-data"),c==b&&(c=null),c):(arguments.length>1&&(d=arguments[1]),void(a?(c=this.data(),this.opts.element.val(a?this.id(a):""),this.updateSelection(a),d&&this.triggerChange({added:a,removed:c})):this.clear(d)))}}),H=D(F,{createContainer:function(){var b=a(document.createElement("div")).attr({"class":"select2-container select2-container-multi"}).html(["
            ","
          • "," "," ","
          • ","
          ","
          ","
            ","
          ","
          "].join(""));return b},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=[];a.find("option").filter(function(){return this.selected&&!this.disabled}).each2(function(a,b){d.push(c.optionToData(b))}),b(d)}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=h(c.val(),b.separator),f=[];b.query({matcher:function(c,d,h){var i=a.grep(e,function(a){return g(a,b.id(h))}).length;return i&&f.push(h),i},callback:a.isFunction(d)?function(){for(var a=[],c=0;c0||(this.selectChoice(null),this.clearPlaceholder(),this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.open(),this.focusSearch(),b.preventDefault()))})),this.container.on("focus",c,this.bind(function(){this.isInterfaceEnabled()&&(this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"),this.clearPlaceholder())})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.clearSearch()},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.search.prop("disabled",!this.isInterfaceEnabled())},initSelection:function(){if(""===this.opts.element.val()&&""===this.opts.element.text()&&(this.updateSelection([]),this.close(),this.clearSearch()),this.select||""!==this.opts.element.val()){var a=this;this.opts.initSelection.call(null,this.opts.element,function(c){c!==b&&null!==c&&(a.updateSelection(c),a.close(),a.clearSearch())})}},clearSearch:function(){var a=this.getPlaceholder(),c=this.getMaxSearchWidth();a!==b&&0===this.getVal().length&&this.search.hasClass("select2-focused")===!1?(this.search.val(a).addClass("select2-default"),this.search.width(c>0?c:this.container.css("width"))):this.search.val("").width(10)},clearPlaceholder:function(){this.search.hasClass("select2-default")&&this.search.val("").removeClass("select2-default")},opening:function(){this.clearPlaceholder(),this.resizeSearch(),this.parent.opening.apply(this,arguments),this.focusSearch(),""===this.search.val()&&this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.search.select()),this.updateResults(!0),this.opts.shouldFocusInput(this)&&this.search.focus(),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&this.parent.close.apply(this,arguments)},focus:function(){this.close(),this.search.focus()},isFocused:function(){return this.search.hasClass("select2-focused")},updateSelection:function(b){var c=[],d=[],f=this;a(b).each(function(){e(f.id(this),c)<0&&(c.push(f.id(this)),d.push(this))}),b=d,this.selection.find(".select2-search-choice").remove(),a(b).each(function(){f.addSelectedChoice(this)}),f.postprocessResults()},tokenize:function(){var a=this.search.val();a=this.opts.tokenizer.call(this,a,this.data(),this.bind(this.onSelect),this.opts),null!=a&&a!=b&&(this.search.val(a),a.length>0&&this.open())},onSelect:function(a,c){this.triggerSelect(a)&&""!==a.text&&(this.addSelectedChoice(a),this.opts.element.trigger({type:"selected",val:this.id(a),choice:a}),this.nextSearchTerm=this.opts.nextSearchTerm(a,this.search.val()),this.moveHighlight(1),(this.select||!this.opts.closeOnSelect)&&this.postprocessResults(a,!1,this.opts.closeOnSelect===!0),this.opts.closeOnSelect?(this.clearSearch(),this.updateResults(),this.close(),this.search.width(10)):this.countSelectableResults()>0?(this.search.width(10),this.resizeSearch(),this.getMaximumSelectionSize()>0&&this.val().length>=this.getMaximumSelectionSize()?this.updateResults(!0):this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.updateResults(),this.search.select()),this.positionDropdown()):(this.close(),this.search.width(10)),this.triggerChange({added:a}),c&&c.noFocus||this.focusSearch())},cancel:function(){this.close(),this.focusSearch()},addSelectedChoice:function(c){var d,e,f=!c.locked,g=a("
        • "),h=a("
        • "),i=f?g:h,j=this.id(c),k=this.getVal();d=this.opts.formatSelection(c,i.find("div"),this.opts.escapeMarkup),d!=b&&i.find("div").replaceWith("
          "+d+"
          "),e=this.opts.formatSelectionCssClass(c,i.find("div")),e!=b&&i.addClass(e),f&&i.find(".select2-search-choice-close").on("mousedown",p).on("click dblclick",this.bind(function(b){this.isInterfaceEnabled()&&(this.unselect(a(b.target)),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"),p(b),this.close(),this.focusSearch())})).on("focus",this.bind(function(){this.isInterfaceEnabled()&&(this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"))})),i.data("select2-data",c),i.insertBefore(this.searchContainer),k.push(j),this.setVal(k)},unselect:function(b){var c,d,f=this.getVal();if(b=b.closest(".select2-search-choice"),0===b.length)throw"Invalid argument: "+b+". Must be .select2-search-choice";if(c=b.data("select2-data")){var g=a.Event("select2-removing");if(g.val=this.id(c),g.choice=c,this.opts.element.trigger(g),g.isDefaultPrevented())return!1;for(;(d=e(this.id(c),f))>=0;)f.splice(d,1),this.setVal(f),this.select&&this.postprocessResults();return b.remove(),this.opts.element.trigger({type:"select2-removed",val:this.id(c),choice:c}),this.triggerChange({removed:c}),!0}},postprocessResults:function(a,b,c){var d=this.getVal(),f=this.results.find(".select2-result"),g=this.results.find(".select2-result-with-children"),h=this;f.each2(function(a,b){var c=h.id(b.data("select2-data"));e(c,d)>=0&&(b.addClass("select2-selected"),b.find(".select2-result-selectable").addClass("select2-selected"))}),g.each2(function(a,b){b.is(".select2-result-selectable")||0!==b.find(".select2-result-selectable:not(.select2-selected)").length||b.addClass("select2-selected")}),-1==this.highlight()&&c!==!1&&h.highlight(0),!this.opts.createSearchChoice&&!f.filter(".select2-result:not(.select2-selected)").length>0&&(!a||a&&!a.more&&0===this.results.find(".select2-no-results").length)&&y(h.opts.formatNoMatches,"formatNoMatches")&&this.results.append("
        • "+z(h.opts.formatNoMatches,h.opts.element,h.search.val())+"
        • ")},getMaxSearchWidth:function(){return this.selection.width()-i(this.search)},resizeSearch:function(){var a,b,c,d,e,f=i(this.search);a=r(this.search)+10,b=this.search.offset().left,c=this.selection.width(),d=this.selection.offset().left,e=c-(b-d)-f,a>e&&(e=c-f),40>e&&(e=c-f),0>=e&&(e=a),this.search.width(Math.floor(e))},getVal:function(){var a;return this.select?(a=this.select.val(),null===a?[]:a):(a=this.opts.element.val(),h(a,this.opts.separator))},setVal:function(b){var c;this.select?this.select.val(b):(c=[],a(b).each(function(){e(this,c)<0&&c.push(this)}),this.opts.element.val(0===c.length?"":c.join(this.opts.separator)))},buildChangeDetails:function(a,b){for(var b=b.slice(0),a=a.slice(0),c=0;c0&&c--,a.splice(d,1),d--);return{added:b,removed:a}},val:function(c,d){var e,f=this;if(0===arguments.length)return this.getVal();if(e=this.data(),e.length||(e=[]),!c&&0!==c)return this.opts.element.val(""),this.updateSelection([]),this.clearSearch(),void(d&&this.triggerChange({added:this.data(),removed:e}));if(this.setVal(c),this.select)this.opts.initSelection(this.select,this.bind(this.updateSelection)),d&&this.triggerChange(this.buildChangeDetails(e,this.data()));else{if(this.opts.initSelection===b)throw new Error("val() cannot be called if initSelection() is not defined");this.opts.initSelection(this.opts.element,function(b){var c=a.map(b,f.id);f.setVal(c),f.updateSelection(b),f.clearSearch(),d&&f.triggerChange(f.buildChangeDetails(e,f.data()))})}this.clearSearch()},onSortStart:function(){if(this.select)throw new Error("Sorting of elements is not supported when attached to instead.");this.search.width(0),this.searchContainer.hide()},onSortEnd:function(){var b=[],c=this;this.searchContainer.show(),this.searchContainer.appendTo(this.searchContainer.parent()),this.resizeSearch(),this.selection.find(".select2-search-choice").each(function(){b.push(c.opts.id(a(this).data("select2-data")))}),this.setVal(b),this.triggerChange()},data:function(b,c){var d,e,f=this;return 0===arguments.length?this.selection.children(".select2-search-choice").map(function(){return a(this).data("select2-data")}).get():(e=this.data(),b||(b=[]),d=a.map(b,function(a){return f.opts.id(a)}),this.setVal(d),this.updateSelection(b),this.clearSearch(),c&&this.triggerChange(this.buildChangeDetails(e,this.data())),void 0)}}),a.fn.select2=function(){var c,d,f,g,h,i=Array.prototype.slice.call(arguments,0),j=["val","destroy","opened","open","close","focus","isFocused","container","dropdown","onSortStart","onSortEnd","enable","disable","readonly","positionDropdown","data","search"],k=["opened","isFocused","container","dropdown"],l=["val","data"],m={search:"externalSearch"};return this.each(function(){if(0===i.length||"object"==typeof i[0])c=0===i.length?{}:a.extend({},i[0]),c.element=a(this),"select"===c.element.get(0).tagName.toLowerCase()?h=c.element.prop("multiple"):(h=c.multiple||!1,"tags"in c&&(c.multiple=h=!0)),d=h?new window.Select2.class.multi:new window.Select2.class.single,d.init(c);else{if("string"!=typeof i[0])throw"Invalid arguments to select2 plugin: "+i;if(e(i[0],j)<0)throw"Unknown method: "+i[0];if(g=b,d=a(this).data("select2"),d===b)return;if(f=i[0],"container"===f?g=d.container:"dropdown"===f?g=d.dropdown:(m[f]&&(f=m[f]),g=d[f].apply(d,i.slice(1))),e(i[0],k)>=0||e(i[0],l)>=0&&1==i.length)return!1}}),g===b?this:g},a.fn.select2.defaults={width:"copy",loadMorePadding:0,closeOnSelect:!0,openOnEnter:!0,containerCss:{},dropdownCss:{},containerCssClass:"",dropdownCssClass:"",formatResult:function(a,b,c,d){var e=[];return t(a.text,c.term,e,d),e.join("")},formatSelection:function(a,c,d){return a?d(a.text):b},sortResults:function(a){return a},formatResultCssClass:function(a){return a.css},formatSelectionCssClass:function(){return b},minimumResultsForSearch:0,minimumInputLength:0,maximumInputLength:null,maximumSelectionSize:0,id:function(a){return a==b?null:a.id},matcher:function(a,b){return d(""+b).toUpperCase().indexOf(d(""+a).toUpperCase())>=0},separator:",",tokenSeparators:[],tokenizer:B,escapeMarkup:u,blurOnChange:!1,selectOnBlur:!1,adaptContainerCssClass:function(a){return a},adaptDropdownCssClass:function(){return null},nextSearchTerm:function(){return b},searchInputPlaceholder:"",createSearchChoicePosition:"top",shouldFocusInput:function(a){var b="ontouchstart"in window||navigator.msMaxTouchPoints>0;return b&&a.opts.minimumResultsForSearch<0?!1:!0}},a.fn.select2.locales=[],a.fn.select2.locales.en={formatMatches:function(a){return 1===a?"One result is available, press enter to select it.":a+" results are available, use up and down arrow keys to navigate."},formatNoMatches:function(){return"No matches found"},formatAjaxError:function(){return"Loading failed"},formatInputTooShort:function(a,b){var c=b-a.length;return"Please enter "+c+" or more character"+(1==c?"":"s")},formatInputTooLong:function(a,b){var c=a.length-b;return"Please delete "+c+" character"+(1==c?"":"s")},formatSelectionTooBig:function(a){return"You can only select "+a+" item"+(1==a?"":"s")},formatLoadMore:function(){return"Loading more results…"},formatSearching:function(){return"Searching…"}},a.extend(a.fn.select2.defaults,a.fn.select2.locales.en),a.fn.select2.ajaxDefaults={transport:a.ajax,params:{type:"GET",cache:!1,dataType:"json"}},window.Select2={query:{ajax:v,local:w,tags:x},util:{debounce:l,markMatch:t,escapeMarkup:u,stripDiacritics:d},"class":{"abstract":F,single:G,multi:H}}}}(jQuery); -//# sourceMappingURL=../../../maps/libs/jquery/select2.js.map \ No newline at end of file +!function(e){void 0===e.fn.each2&&e.extend(e.fn,{each2:function(t){for(var s=e([0]),i=-1,n=this.length;++i=0&&s(e)})}function p(e){e[0]!==document.activeElement&&window.setTimeout(function(){var t,s=e[0],i=e.val().length;e.focus(),(s.offsetWidth>0||s.offsetHeight>0)&&s===document.activeElement&&(s.setSelectionRange?s.setSelectionRange(i,i):s.createTextRange&&(t=s.createTextRange(),t.collapse(!1),t.select()))},0)}function f(t){t=e(t)[0];var s=0,i=0;if("selectionStart"in t)s=t.selectionStart,i=t.selectionEnd-s;else if("selection"in document){t.focus();var n=document.selection.createRange();i=document.selection.createRange().text.length,n.moveStart("character",-t.value.length),s=n.text.length-i}return{offset:s,length:i}}function g(e){e.preventDefault(),e.stopPropagation()}function m(e){e.preventDefault(),e.stopImmediatePropagation()}function v(t){if(!L){var s=t[0].currentStyle||window.getComputedStyle(t[0],null);L=e(document.createElement("div")).css({position:"absolute",left:"-10000px",top:"-10000px",display:"none",fontSize:s.fontSize,fontFamily:s.fontFamily,fontStyle:s.fontStyle,fontWeight:s.fontWeight,letterSpacing:s.letterSpacing,textTransform:s.textTransform,whiteSpace:"nowrap"}),L.attr("class","select2-sizer"),e("body").append(L)}return L.text(t.val()),L.width()}function w(t,s,i){var n,o,a=[];n=e.trim(t.attr("class")),n&&(n=""+n,e(n.split(/\s+/)).each2(function(){0===this.indexOf("select2-")&&a.push(this)})),n=e.trim(s.attr("class")),n&&(n=""+n,e(n.split(/\s+/)).each2(function(){0!==this.indexOf("select2-")&&(o=i(this))&&a.push(o)})),t.attr("class",a.join(" "))}function b(e,t,s,n){var o=i(e.toUpperCase()).indexOf(i(t.toUpperCase())),a=t.length;if(o<0)return void s.push(n(e));s.push(n(e.substring(0,o))),s.push(""),s.push(n(e.substring(o,o+a))),s.push(""),s.push(n(e.substring(o+a,e.length)))}function C(e){var t={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})}function S(s){var i,n=null,o=s.quietMillis||100,a=s.url,r=this;return function(c){window.clearTimeout(i),i=window.setTimeout(function(){var i=s.data,o=a,l=s.transport||e.fn.select2.ajaxDefaults.transport,h={type:s.type||"GET",cache:s.cache||!1,jsonpCallback:s.jsonpCallback||t,dataType:s.dataType||"json"},u=e.extend({},e.fn.select2.ajaxDefaults.params,h);i=i?i.call(r,c.term,c.page,c.context):null,o="function"==typeof o?o.call(r,c.term,c.page,c.context):o,n&&"function"==typeof n.abort&&n.abort(),s.params&&(e.isFunction(s.params)?e.extend(u,s.params.call(r)):e.extend(u,s.params)),e.extend(u,{url:o,dataType:s.dataType,data:i,success:function(e){var t=s.results(e,c.page,c);c.callback(t)},error:function(e,t,s){var i={hasError:!0,jqXHR:e,textStatus:t,errorThrown:s};c.callback(i)}}),n=l.call(r,u)},o)}}function y(t){var s,i,n=t,o=function(e){return""+e.text};e.isArray(n)&&(i=n,n={results:i}),!1===e.isFunction(n)&&(i=n,n=function(){return i});var a=n();return a.text&&(o=a.text,e.isFunction(o)||(s=a.text,o=function(e){return e[s]})),function(t){var s,i=t.term,a={results:[]};if(""===i)return void t.callback(n());s=function(n,a){var r,c;if(n=n[0],n.children){r={};for(c in n)n.hasOwnProperty(c)&&(r[c]=n[c]);r.children=[],e(n.children).each2(function(e,t){s(t,r.children)}),(r.children.length||t.matcher(i,o(r),n))&&a.push(r)}else t.matcher(i,o(n),n)&&a.push(n)},e(n().results).each2(function(e,t){s(t,a.results)}),t.callback(a)}}function E(s){var i=e.isFunction(s);return function(n){var o=n.term,a={results:[]},r=i?s(n):s;e.isArray(r)&&(e(r).each(function(){var e=this.text!==t,s=e?this.text:this;(""===o||n.matcher(o,s))&&a.results.push(e?this:{id:this,text:this})}),n.callback(a))}}function x(t,s){if(e.isFunction(t))return!0;if(!t)return!1;if("string"==typeof t)return!0;throw new Error(s+" must be a string, function, or falsy value")}function T(t,s){if(e.isFunction(t)){var i=Array.prototype.slice.call(arguments,2);return t.apply(s,i)}return t}function O(t){var s=0;return e.each(t,function(e,t){t.children?s+=O(t.children):s++}),s}function P(e,s,i,n){var o,r,c,l,h,u=e,d=!1;if(!n.createSearchChoice||!n.tokenSeparators||n.tokenSeparators.length<1)return t;for(;;){for(r=-1,c=0,l=n.tokenSeparators.length;c=0));c++);if(r<0)break;if(o=e.substring(0,r),e=e.substring(r+h.length),o.length>0&&(o=n.createSearchChoice.call(this,o,s))!==t&&null!==o&&n.id(o)!==t&&null!==n.id(o)){for(d=!1,c=0,l=s.length;c=112&&e<=123}},z="
          ",j={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};N=e(document),M=function(){var e=1;return function(){return e++}}(),R=k(Object,{bind:function(e){var t=this;return function(){e.apply(t,arguments)}},init:function(s){var i,n;this.opts=s=this.prepareOpts(s),this.id=s.id,s.element.data("select2")!==t&&null!==s.element.data("select2")&&s.element.data("select2").destroy(),this.container=this.createContainer(),this.liveRegion=e("",{role:"status","aria-live":"polite"}).addClass("select2-hidden-accessible").appendTo(document.body),this.containerId="s2id_"+(s.element.attr("id")||"autogen"+M()),this.containerEventName=this.containerId.replace(/([.])/g,"_").replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,"\\$1"),this.container.attr("id",this.containerId),this.container.attr("title",s.element.attr("title")),this.body=e("body"),w(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.attr("style",s.element.attr("style")),this.container.css(T(s.containerCss,this.opts.element)),this.container.addClass(T(s.containerCssClass,this.opts.element)),this.elementTabIndex=this.opts.element.attr("tabindex"),this.opts.element.data("select2",this).attr("tabindex","-1").before(this.container).on("click.select2",g),this.container.data("select2",this),this.dropdown=this.container.find(".select2-drop"),w(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass),this.dropdown.addClass(T(s.dropdownCssClass,this.opts.element)),this.dropdown.data("select2",this),this.dropdown.on("click",g),this.results=i=this.container.find(".select2-results"),this.search=n=this.container.find("input.select2-input"),this.queryCount=0,this.resultsPage=0,this.context=null,this.initContainer(),this.container.on("click",g),h(this.results),this.dropdown.on("mousemove-filtered",".select2-results",this.bind(this.highlightUnderEvent)),this.dropdown.on("touchstart touchmove touchend",".select2-results",this.bind(function(e){this._touchEvent=!0,this.highlightUnderEvent(e)})),this.dropdown.on("touchmove",".select2-results",this.bind(this.touchMoved)),this.dropdown.on("touchstart touchend",".select2-results",this.bind(this.clearTouchMoved)),this.dropdown.on("click",this.bind(function(e){this._touchEvent&&(this._touchEvent=!1,this.selectHighlighted())})),d(80,this.results),this.dropdown.on("scroll-debounced",".select2-results",this.bind(this.loadMoreIfNeeded)),e(this.container).on("change",".select2-input",function(e){e.stopPropagation()}),e(this.dropdown).on("change",".select2-input",function(e){e.stopPropagation()}),e.fn.mousewheel&&i.mousewheel(function(e,t,s,n){var o=i.scrollTop();n>0&&o-n<=0?(i.scrollTop(0),g(e)):n<0&&i.get(0).scrollHeight-i.scrollTop()+n<=i.height()&&(i.scrollTop(i.get(0).scrollHeight-i.height()),g(e))}),l(n),n.on("keyup-change input paste",this.bind(this.updateResults)),n.on("focus",function(){n.addClass("select2-focused")}),n.on("blur",function(){n.removeClass("select2-focused")}),this.dropdown.on("mouseup",".select2-results",this.bind(function(t){e(t.target).closest(".select2-result-selectable").length>0&&(this.highlightUnderEvent(t),this.selectHighlighted(t))})),this.dropdown.on("click mouseup mousedown touchstart touchend focusin",function(e){e.stopPropagation()}),this.nextSearchTerm=t,e.isFunction(this.opts.initSelection)&&(this.initSelection(),this.monitorSource()),null!==s.maximumInputLength&&this.search.attr("maxlength",s.maximumInputLength);var a=s.element.prop("disabled");a===t&&(a=!1),this.enable(!a);var r=s.element.prop("readonly");r===t&&(r=!1),this.readonly(r),U=U||o(),this.autofocus=s.element.prop("autofocus"),s.element.prop("autofocus",!1),this.autofocus&&this.focus(),this.search.attr("placeholder",s.searchInputPlaceholder)},destroy:function(){var e=this.opts.element,s=e.data("select2"),i=this;this.close(),e.length&&e[0].detachEvent&&e.each(function(){this.detachEvent("onpropertychange",i._sync)}),this.propertyObserver&&(this.propertyObserver.disconnect(),this.propertyObserver=null),this._sync=null,s!==t&&(s.container.remove(),s.liveRegion.remove(),s.dropdown.remove(),e.removeClass("select2-offscreen").removeData("select2").off(".select2").prop("autofocus",this.autofocus||!1),this.elementTabIndex?e.attr({tabindex:this.elementTabIndex}):e.removeAttr("tabindex"),e.show()),I.call(this,"container","liveRegion","dropdown","results","search")},optionToData:function(e){return e.is("option")?{id:e.prop("value"),text:e.text(),element:e.get(),css:e.attr("class"),disabled:e.prop("disabled"),locked:a(e.attr("locked"),"locked")||a(e.data("locked"),!0)}:e.is("optgroup")?{text:e.attr("label"),children:[],element:e.get(),css:e.attr("class")}:void 0},prepareOpts:function(s){var i,n,o,c,l=this;if(i=s.element,"select"===i.get(0).tagName.toLowerCase()&&(this.select=n=s.element),n&&e.each(["id","multiple","ajax","query","createSearchChoice","initSelection","data","tags"],function(){if(this in s)throw new Error("Option '"+this+"' is not allowed for Select2 when attached to a ","
          "," ","
            ","
          ","
          "].join(""))},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.focusser.prop("disabled",!this.isInterfaceEnabled())},opening:function(){var s,i,n;this.opts.minimumResultsForSearch>=0&&this.showSearch(!0),this.parent.opening.apply(this,arguments),!1!==this.showSearchInput&&this.search.val(this.focusser.val()),this.opts.shouldFocusInput(this)&&(this.search.focus(),s=this.search.get(0),s.createTextRange?(i=s.createTextRange(),i.collapse(!1),i.select()):s.setSelectionRange&&(n=this.search.val().length,s.setSelectionRange(n,n))),""===this.search.val()&&this.nextSearchTerm!=t&&(this.search.val(this.nextSearchTerm),this.search.select()),this.focusser.prop("disabled",!0).val(""),this.updateResults(!0),this.opts.element.trigger(e.Event("select2-open"))},close:function(){this.opened()&&(this.parent.close.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},focus:function(){this.opened()?this.close():(this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},isFocused:function(){return this.container.hasClass("select2-container-active")},cancel:function(){this.parent.cancel.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus()},destroy:function(){e("label[for='"+this.focusser.attr("id")+"']").attr("for",this.opts.element.attr("id")),this.parent.destroy.apply(this,arguments),I.call(this,"selection","focusser")},initContainer:function(){var t,i,n=this.container,o=this.dropdown,a=M();this.opts.minimumResultsForSearch<0?this.showSearch(!1):this.showSearch(!0),this.selection=t=n.find(".select2-choice"),this.focusser=n.find(".select2-focusser"),t.find(".select2-chosen").attr("id","select2-chosen-"+a),this.focusser.attr("aria-labelledby","select2-chosen-"+a),this.results.attr("id","select2-results-"+a),this.search.attr("aria-owns","select2-results-"+a),this.focusser.attr("id","s2id_autogen"+a),i=e("label[for='"+this.opts.element.attr("id")+"']"),this.focusser.prev().text(i.text()).attr("for",this.focusser.attr("id"));var r=this.opts.element.attr("title");this.opts.element.attr("title",r||i.text()),this.focusser.attr("tabindex",this.elementTabIndex),this.search.attr("id",this.focusser.attr("id")+"_search"),this.search.prev().text(e("label[for='"+this.focusser.attr("id")+"']").text()).attr("for",this.search.attr("id")),this.search.on("keydown",this.bind(function(e){if(this.isInterfaceEnabled()&&229!=e.keyCode){if(e.which===A.PAGE_UP||e.which===A.PAGE_DOWN)return void g(e);switch(e.which){case A.UP:case A.DOWN:return this.moveHighlight(e.which===A.UP?-1:1),void g(e);case A.ENTER:return this.selectHighlighted(),void g(e);case A.TAB:return void this.selectHighlighted({noFocus:!0});case A.ESC:return this.cancel(e),void g(e)}}})),this.search.on("blur",this.bind(function(e){document.activeElement===this.body.get(0)&&window.setTimeout(this.bind(function(){this.opened()&&this.search.focus()}),0)})),this.focusser.on("keydown",this.bind(function(e){if(this.isInterfaceEnabled()&&e.which!==A.TAB&&!A.isControl(e)&&!A.isFunctionKey(e)&&e.which!==A.ESC){if(!1===this.opts.openOnEnter&&e.which===A.ENTER)return void g(e);if(e.which==A.DOWN||e.which==A.UP||e.which==A.ENTER&&this.opts.openOnEnter){if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey)return;return this.open(),void g(e)}return e.which==A.DELETE||e.which==A.BACKSPACE?(this.opts.allowClear&&this.clear(),void g(e)):void 0}})),l(this.focusser),this.focusser.on("keyup-change input",this.bind(function(e){if(this.opts.minimumResultsForSearch>=0){if(e.stopPropagation(),this.opened())return;this.open()}})),t.on("mousedown touchstart","abbr",this.bind(function(e){this.isInterfaceEnabled()&&(this.clear(),m(e),this.close(),this.selection.focus())})),t.on("mousedown touchstart",this.bind(function(i){s(t),this.container.hasClass("select2-container-active")||this.opts.element.trigger(e.Event("select2-focus")),this.opened()?this.close():this.isInterfaceEnabled()&&this.open(),g(i)})),o.on("mousedown touchstart",this.bind(function(){this.opts.shouldFocusInput(this)&&this.search.focus()})),t.on("focus",this.bind(function(e){g(e)})),this.focusser.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(e.Event("select2-focus")),this.container.addClass("select2-container-active")})).on("blur",this.bind(function(){this.opened()||(this.container.removeClass("select2-container-active"),this.opts.element.trigger(e.Event("select2-blur")))})),this.search.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(e.Event("select2-focus")),this.container.addClass("select2-container-active")})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.setPlaceholder()},clear:function(t){var s=this.selection.data("select2-data");if(s){var i=e.Event("select2-clearing");if(this.opts.element.trigger(i),i.isDefaultPrevented())return;var n=this.getPlaceholderOption();this.opts.element.val(n?n.val():""),this.selection.find(".select2-chosen").empty(),this.selection.removeData("select2-data"),this.setPlaceholder(),!1!==t&&(this.opts.element.trigger({type:"select2-removed",val:this.id(s),choice:s}),this.triggerChange({removed:s}))}},initSelection:function(){if(this.isPlaceholderOptionSelected())this.updateSelection(null),this.close(),this.setPlaceholder();else{var e=this;this.opts.initSelection.call(null,this.opts.element,function(s){s!==t&&null!==s&&(e.updateSelection(s),e.close(),e.setPlaceholder(),e.nextSearchTerm=e.opts.nextSearchTerm(s,e.search.val()))})}},isPlaceholderOptionSelected:function(){var e;return this.getPlaceholder()!==t&&((e=this.getPlaceholderOption())!==t&&e.prop("selected")||""===this.opts.element.val()||this.opts.element.val()===t||null===this.opts.element.val())},prepareOpts:function(){var t=this.parent.prepareOpts.apply(this,arguments),s=this;return"select"===t.element.get(0).tagName.toLowerCase()?t.initSelection=function(e,t){var i=e.find("option").filter(function(){return this.selected&&!this.disabled});t(s.optionToData(i))}:"data"in t&&(t.initSelection=t.initSelection||function(s,i){var n=s.val(),o=null;t.query({matcher:function(e,s,i){var r=a(n,t.id(i));return r&&(o=i),r},callback:e.isFunction(i)?function(){i(o)}:e.noop})}),t},getPlaceholder:function(){return this.select&&this.getPlaceholderOption()===t?t:this.parent.getPlaceholder.apply(this,arguments)},setPlaceholder:function(){var e=this.getPlaceholder();if(this.isPlaceholderOptionSelected()&&e!==t){if(this.select&&this.getPlaceholderOption()===t)return;this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(e)),this.selection.addClass("select2-default"),this.container.removeClass("select2-allowclear")}},postprocessResults:function(e,t,s){var i=0,n=this;if(this.findHighlightableChoices().each2(function(e,t){if(a(n.id(t.data("select2-data")),n.opts.element.val()))return i=e,!1}),!1!==s&&(!0===t&&i>=0?this.highlight(i):this.highlight(0)),!0===t){var o=this.opts.minimumResultsForSearch;o>=0&&this.showSearch(O(e.results)>=o)}},showSearch:function(t){this.showSearchInput!==t&&(this.showSearchInput=t,this.dropdown.find(".select2-search").toggleClass("select2-search-hidden",!t),this.dropdown.find(".select2-search").toggleClass("select2-offscreen",!t),e(this.dropdown,this.container).toggleClass("select2-with-searchbox",t))},onSelect:function(e,t){if(this.triggerSelect(e)){var s=this.opts.element.val(),i=this.data();this.opts.element.val(this.id(e)),this.updateSelection(e),this.opts.element.trigger({type:"select2-selected",val:this.id(e),choice:e}),this.nextSearchTerm=this.opts.nextSearchTerm(e,this.search.val()),this.close(),t&&t.noFocus||!this.opts.shouldFocusInput(this)||this.focusser.focus(),a(s,this.id(e))||this.triggerChange({added:e,removed:i})}},updateSelection:function(e){var s,i,n=this.selection.find(".select2-chosen");this.selection.data("select2-data",e),n.empty(),null!==e&&(s=this.opts.formatSelection(e,n,this.opts.escapeMarkup)),s!==t&&n.append(s),i=this.opts.formatSelectionCssClass(e,n),i!==t&&n.addClass(i),this.selection.removeClass("select2-default"),this.opts.allowClear&&this.getPlaceholder()!==t&&this.container.addClass("select2-allowclear")},val:function(){var e,s=!1,i=null,n=this,o=this.data();if(0===arguments.length)return this.opts.element.val();if(e=arguments[0],arguments.length>1&&(s=arguments[1]),this.select)this.select.val(e).find("option").filter(function(){return this.selected}).each2(function(e,t){return i=n.optionToData(t),!1}),this.updateSelection(i),this.setPlaceholder(),s&&this.triggerChange({added:i,removed:o});else{if(!e&&0!==e)return void this.clear(s);if(this.opts.initSelection===t)throw new Error("cannot call val() if initSelection() is not defined");this.opts.element.val(e),this.opts.initSelection(this.opts.element,function(e){n.opts.element.val(e?n.id(e):""),n.updateSelection(e),n.setPlaceholder(),s&&n.triggerChange({added:e,removed:o})})}},clearSearch:function(){this.search.val(""),this.focusser.val("")},data:function(e){var s,i=!1;if(0===arguments.length)return s=this.selection.data("select2-data"),s==t&&(s=null),s;arguments.length>1&&(i=arguments[1]),e?(s=this.data(),this.opts.element.val(e?this.id(e):""),this.updateSelection(e),i&&this.triggerChange({added:e,removed:s})):this.clear(i)}}),H=k(R,{createContainer:function(){return e(document.createElement("div")).attr({class:"select2-container select2-container-multi"}).html(["
            ","
          • "," "," ","
          • ","
          ","
          ","
            ","
          ","
          "].join(""))},prepareOpts:function(){var t=this.parent.prepareOpts.apply(this,arguments),s=this;return"select"===t.element.get(0).tagName.toLowerCase()?t.initSelection=function(e,t){var i=[];e.find("option").filter(function(){return this.selected&&!this.disabled}).each2(function(e,t){i.push(s.optionToData(t))}),t(i)}:"data"in t&&(t.initSelection=t.initSelection||function(s,i){var n=r(s.val(),t.separator),o=[];t.query({matcher:function(s,i,r){var c=e.grep(n,function(e){return a(e,t.id(r))}).length;return c&&o.push(r),c},callback:e.isFunction(i)?function(){for(var e=[],s=0;s0||(this.selectChoice(null),this.clearPlaceholder(),this.container.hasClass("select2-container-active")||this.opts.element.trigger(e.Event("select2-focus")),this.open(),this.focusSearch(),t.preventDefault()))})),this.container.on("focus",s,this.bind(function(){this.isInterfaceEnabled()&&(this.container.hasClass("select2-container-active")||this.opts.element.trigger(e.Event("select2-focus")),this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"),this.clearPlaceholder())})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.clearSearch()},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.search.prop("disabled",!this.isInterfaceEnabled())},initSelection:function(){if(""===this.opts.element.val()&&""===this.opts.element.text()&&(this.updateSelection([]),this.close(),this.clearSearch()),this.select||""!==this.opts.element.val()){var e=this;this.opts.initSelection.call(null,this.opts.element,function(s){s!==t&&null!==s&&(e.updateSelection(s),e.close(),e.clearSearch())})}},clearSearch:function(){var e=this.getPlaceholder(),s=this.getMaxSearchWidth();e!==t&&0===this.getVal().length&&!1===this.search.hasClass("select2-focused")?(this.search.val(e).addClass("select2-default"),this.search.width(s>0?s:this.container.css("width"))):this.search.val("").width(10)},clearPlaceholder:function(){this.search.hasClass("select2-default")&&this.search.val("").removeClass("select2-default")},opening:function(){this.clearPlaceholder(),this.resizeSearch(),this.parent.opening.apply(this,arguments),this.focusSearch(),""===this.search.val()&&this.nextSearchTerm!=t&&(this.search.val(this.nextSearchTerm),this.search.select()),this.updateResults(!0),this.opts.shouldFocusInput(this)&&this.search.focus(),this.opts.element.trigger(e.Event("select2-open"))},close:function(){this.opened()&&this.parent.close.apply(this,arguments)},focus:function(){this.close(),this.search.focus()},isFocused:function(){return this.search.hasClass("select2-focused")},updateSelection:function(t){var s=[],i=[],o=this;e(t).each(function(){n(o.id(this),s)<0&&(s.push(o.id(this)),i.push(this))}),t=i,this.selection.find(".select2-search-choice").remove(),e(t).each(function(){o.addSelectedChoice(this)}),o.postprocessResults()},tokenize:function(){var e=this.search.val();null!=(e=this.opts.tokenizer.call(this,e,this.data(),this.bind(this.onSelect),this.opts))&&e!=t&&(this.search.val(e),e.length>0&&this.open())},onSelect:function(e,s){this.triggerSelect(e)&&""!==e.text&&(this.addSelectedChoice(e),this.opts.element.trigger({type:"selected",val:this.id(e),choice:e}),this.nextSearchTerm=this.opts.nextSearchTerm(e,this.search.val()),this.moveHighlight(1),!this.select&&this.opts.closeOnSelect||this.postprocessResults(e,!1,!0===this.opts.closeOnSelect),this.opts.closeOnSelect?(this.clearSearch(),this.updateResults(),this.close(),this.search.width(10)):this.countSelectableResults()>0?(this.search.width(10),this.resizeSearch(),this.getMaximumSelectionSize()>0&&this.val().length>=this.getMaximumSelectionSize()?this.updateResults(!0):this.nextSearchTerm!=t&&(this.search.val(this.nextSearchTerm),this.updateResults(),this.search.select()),this.positionDropdown()):(this.close(),this.search.width(10)),this.triggerChange({added:e}),s&&s.noFocus||this.focusSearch())},cancel:function(){this.close(),this.focusSearch()},addSelectedChoice:function(s){var i,n,o=!s.locked,a=e("
        • "),r=e("
        • "),c=o?a:r,l=this.id(s),h=this.getVal();i=this.opts.formatSelection(s,c.find("div"),this.opts.escapeMarkup),i!=t&&c.find("div").replaceWith("
          "+i+"
          "),n=this.opts.formatSelectionCssClass(s,c.find("div")),n!=t&&c.addClass(n),o&&c.find(".select2-search-choice-close").on("mousedown",g).on("click dblclick",this.bind(function(t){this.isInterfaceEnabled()&&(this.unselect(e(t.target)),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"),g(t),this.close(),this.focusSearch())})).on("focus",this.bind(function(){this.isInterfaceEnabled()&&(this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"))})),c.data("select2-data",s),c.insertBefore(this.searchContainer),h.push(l),this.setVal(h)},unselect:function(t){var s,i,o=this.getVal();if(t=t.closest(".select2-search-choice"),0===t.length)throw"Invalid argument: "+t+". Must be .select2-search-choice";if(s=t.data("select2-data")){var a=e.Event("select2-removing");if(a.val=this.id(s),a.choice=s,this.opts.element.trigger(a),a.isDefaultPrevented())return!1;for(;(i=n(this.id(s),o))>=0;)o.splice(i,1),this.setVal(o),this.select&&this.postprocessResults();return t.remove(),this.opts.element.trigger({type:"select2-removed",val:this.id(s),choice:s}),this.triggerChange({removed:s}),!0}},postprocessResults:function(e,t,s){var i=this.getVal(),o=this.results.find(".select2-result"),a=this.results.find(".select2-result-with-children"),r=this;o.each2(function(e,t){n(r.id(t.data("select2-data")),i)>=0&&(t.addClass("select2-selected"),t.find(".select2-result-selectable").addClass("select2-selected"))}),a.each2(function(e,t){t.is(".select2-result-selectable")||0!==t.find(".select2-result-selectable:not(.select2-selected)").length||t.addClass("select2-selected")}),-1==this.highlight()&&!1!==s&&r.highlight(0),!this.opts.createSearchChoice&&!o.filter(".select2-result:not(.select2-selected)").length>0&&(!e||e&&!e.more&&0===this.results.find(".select2-no-results").length)&&x(r.opts.formatNoMatches,"formatNoMatches")&&this.results.append("
        • "+T(r.opts.formatNoMatches,r.opts.element,r.search.val())+"
        • ")},getMaxSearchWidth:function(){return this.selection.width()-c(this.search)},resizeSearch:function(){var e,t,s,i,n,o=c(this.search);e=v(this.search)+10,t=this.search.offset().left,s=this.selection.width(),i=this.selection.offset().left,n=s-(t-i)-o,n0&&s--,e.splice(i,1),i--);return{added:t,removed:e}},val:function(s,i){var n,o=this;if(0===arguments.length)return this.getVal();if(n=this.data(),n.length||(n=[]),!s&&0!==s)return this.opts.element.val(""),this.updateSelection([]),this.clearSearch(),void(i&&this.triggerChange({added:this.data(),removed:n}));if(this.setVal(s),this.select)this.opts.initSelection(this.select,this.bind(this.updateSelection)),i&&this.triggerChange(this.buildChangeDetails(n,this.data()));else{if(this.opts.initSelection===t)throw new Error("val() cannot be called if initSelection() is not defined");this.opts.initSelection(this.opts.element,function(t){var s=e.map(t,o.id);o.setVal(s),o.updateSelection(t),o.clearSearch(),i&&o.triggerChange(o.buildChangeDetails(n,o.data()))})}this.clearSearch()},onSortStart:function(){if(this.select)throw new Error("Sorting of elements is not supported when attached to instead.");this.search.width(0),this.searchContainer.hide()},onSortEnd:function(){var t=[],s=this;this.searchContainer.show(),this.searchContainer.appendTo(this.searchContainer.parent()),this.resizeSearch(),this.selection.find(".select2-search-choice").each(function(){t.push(s.opts.id(e(this).data("select2-data")))}),this.setVal(t),this.triggerChange()},data:function(t,s){var i,n,o=this;if(0===arguments.length)return this.selection.children(".select2-search-choice").map(function(){return e(this).data("select2-data")}).get();n=this.data(),t||(t=[]),i=e.map(t,function(e){return o.opts.id(e)}),this.setVal(i),this.updateSelection(t),this.clearSearch(),s&&this.triggerChange(this.buildChangeDetails(n,this.data()))}}),e.fn.select2=function(){var s,i,o,a,r,c=Array.prototype.slice.call(arguments,0),l=["val","destroy","opened","open","close","focus","isFocused","container","dropdown","onSortStart","onSortEnd","enable","disable","readonly","positionDropdown","data","search"],h=["opened","isFocused","container","dropdown"],u=["val","data"],d={search:"externalSearch"};return this.each(function(){if(0===c.length||"object"==typeof c[0])s=0===c.length?{}:e.extend({},c[0]),s.element=e(this),"select"===s.element.get(0).tagName.toLowerCase()?r=s.element.prop("multiple"):(r=s.multiple||!1,"tags"in s&&(s.multiple=r=!0)),i=r?new window.Select2.class.multi:new window.Select2.class.single,i.init(s);else{if("string"!=typeof c[0])throw"Invalid arguments to select2 plugin: "+c;if(n(c[0],l)<0)throw"Unknown method: "+c[0];if(a=t,(i=e(this).data("select2"))===t)return;if(o=c[0],"container"===o?a=i.container:"dropdown"===o?a=i.dropdown:(d[o]&&(o=d[o]),a=i[o].apply(i,c.slice(1))),n(c[0],h)>=0||n(c[0],u)>=0&&1==c.length)return!1}}),a===t?this:a},e.fn.select2.defaults={width:"copy",loadMorePadding:0,closeOnSelect:!0,openOnEnter:!0,containerCss:{},dropdownCss:{},containerCssClass:"",dropdownCssClass:"",formatResult:function(e,t,s,i){var n=[];return b(e.text,s.term,n,i),n.join("")},formatSelection:function(e,s,i){return e?i(e.text):t},sortResults:function(e,t,s){return e},formatResultCssClass:function(e){return e.css},formatSelectionCssClass:function(e,s){return t},minimumResultsForSearch:0,minimumInputLength:0,maximumInputLength:null,maximumSelectionSize:0,id:function(e){return e==t?null:e.id},matcher:function(e,t){return i(""+t).toUpperCase().indexOf(i(""+e).toUpperCase())>=0},separator:",",tokenSeparators:[],tokenizer:P,escapeMarkup:C,blurOnChange:!1,selectOnBlur:!1,adaptContainerCssClass:function(e){return e},adaptDropdownCssClass:function(e){return null},nextSearchTerm:function(e,s){return t},searchInputPlaceholder:"",createSearchChoicePosition:"top",shouldFocusInput:function(e){return!(("ontouchstart"in window||navigator.msMaxTouchPoints>0)&&e.opts.minimumResultsForSearch<0)}},e.fn.select2.locales=[],e.fn.select2.locales.en={formatMatches:function(e){return 1===e?"One result is available, press enter to select it.":e+" results are available, use up and down arrow keys to navigate."},formatNoMatches:function(){return"No matches found"},formatAjaxError:function(e,t,s){return"Loading failed"},formatInputTooShort:function(e,t){var s=t-e.length;return"Please enter "+s+" or more character"+(1==s?"":"s")},formatInputTooLong:function(e,t){var s=e.length-t;return"Please delete "+s+" character"+(1==s?"":"s")},formatSelectionTooBig:function(e){return"You can only select "+e+" item"+(1==e?"":"s")},formatLoadMore:function(e){return"Loading more results…"},formatSearching:function(){return"Searching…"}},e.extend(e.fn.select2.defaults,e.fn.select2.locales.en),e.fn.select2.ajaxDefaults={transport:e.ajax,params:{type:"GET",cache:!1,dataType:"json"}},window.Select2={query:{ajax:S,local:y,tags:E},util:{debounce:u,markMatch:b,escapeMarkup:C,stripDiacritics:i},class:{abstract:R,single:D,multi:H}}}}(jQuery); +//# sourceMappingURL=../../../maps/libs/jquery/select2.js.map diff --git a/static/scripts/libs/raven.js b/static/scripts/libs/raven.js index 8c6dd4d7281..c7a62b97c00 100644 --- a/static/scripts/libs/raven.js +++ b/static/scripts/libs/raven.js @@ -1,2 +1,2 @@ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g0){var g=c.indexOf(this);~g?c.splice(g+1):c.push(this),~g?d.splice(g,1/0,e):d.push(e),~c.indexOf(f)&&(f=b.call(this,e,f))}else c.push(f);return null==a?f:a.call(this,e,f)}}c=b.exports=d,c.getSerialize=e},{}],2:[function(a,b){"use strict";function c(a){this.name="RavenConfigError",this.message=a}c.prototype=new Error,c.prototype.constructor=c,b.exports=c},{}],3:[function(a,b){"use strict";var c=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),b=""+a.join(" "),g={level:f,logger:"console",extra:{arguments:a}};c&&c(b,g),d&&Function.prototype.apply.call(d,e,a)}}};b.exports={wrapMethod:c}},{}],4:[function(a,b){"use strict";function c(){return+new Date}function d(){this._hasJSON=!("object"!=typeof JSON||!JSON.stringify),this._hasDocument="undefined"!=typeof document,this._lastCapturedException=null,this._lastEventId=null,this._globalServer=null,this._globalKey=null,this._globalProject=null,this._globalContext={},this._globalOptions={logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],crossOrigin:"anonymous",collectWindowErrors:!0,maxMessageLength:0,stackTraceLimit:50},this._ignoreOnError=0,this._isRavenInstalled=!1,this._originalErrorStackTraceLimit=Error.stackTraceLimit,this._originalConsole=window.console||{},this._originalConsoleMethods={},this._plugins=[],this._startTime=c(),this._wrappedBuiltIns=[],this._breadcrumbs=[],this._breadcrumbLimit=20,this._lastCapturedEvent=null,this._keypressTimeout,this._location=window.location,this._lastHref=this._location&&this._location.href;for(var a in this._originalConsole)this._originalConsoleMethods[a]=this._originalConsole[a]}var e=a(7),f=a(2),g=a(6),h=a(1),i=g.isFunction,j=g.isUndefined,k=g.isError,l=g.isEmptyObject,m=g.hasKey,n=g.joinRegExp,o=g.each,p=g.objectMerge,q=g.truncate,r=g.urlencode,s=g.uuid4,t=g.htmlTreeAsString,u=g.parseUrl,v=g.isString,w=a(3).wrapMethod,x="source protocol user pass host port path".split(" "),y=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;d.prototype={VERSION:"3.3.0",debug:!1,TraceKit:e,config:function(a,b){var c=this;if(this._globalServer)return this._logDebug("error","Error: Raven has already been configured"),this;if(!a)return this;b&&o(b,function(a,b){"tags"===a||"extra"===a?c._globalContext[a]=b:c._globalOptions[a]=b});var d=this._parseDSN(a),f=d.path.lastIndexOf("/"),g=d.path.substr(1,f);return this._dsn=a,this._globalOptions.ignoreErrors.push(/^Script error\.?$/),this._globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),this._globalOptions.ignoreErrors=n(this._globalOptions.ignoreErrors),this._globalOptions.ignoreUrls=this._globalOptions.ignoreUrls.length?n(this._globalOptions.ignoreUrls):!1,this._globalOptions.whitelistUrls=this._globalOptions.whitelistUrls.length?n(this._globalOptions.whitelistUrls):!1,this._globalOptions.includePaths=n(this._globalOptions.includePaths),this._globalKey=d.user,this._globalSecret=d.pass&&d.pass.substr(1),this._globalProject=d.path.substr(f+1),this._globalServer=this._getGlobalServer(d),this._globalEndpoint=this._globalServer+"/"+g+"api/"+this._globalProject+"/store/",e.collectWindowErrors=!!this._globalOptions.collectWindowErrors,this},install:function(){var a=this;return this.isSetup()&&!this._isRavenInstalled&&(e.report.subscribe(function(){a._handleOnErrorStackInfo.apply(a,arguments)}),this._wrapBuiltIns(),this._drainPlugins(),this._isRavenInstalled=!0),Error.stackTraceLimit=this._globalOptions.stackTraceLimit,this},context:function(a,b,c){return i(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&i(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e._ignoreNextOnError(),e.captureException(h,a),h}}var e=this;if(j(b)&&!i(a))return a;if(i(a)&&(b=a,a=void 0),!i(b))return b;try{if(b.__raven__)return b}catch(f){return b}if(b.__raven_wrapper__)return b.__raven_wrapper__;for(var g in b)m(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.__raven_wrapper__=d,d.__raven__=!0,d.__inner__=b,d},uninstall:function(){return e.report.uninstall(),this._restoreBuiltIns(),Error.stackTraceLimit=this._originalErrorStackTraceLimit,this._isRavenInstalled=!1,this},captureException:function(a,b){if(!k(a))return this.captureMessage(a,b);this._lastCapturedException=a;try{var c=e.computeStackTrace(a);this._handleStackInfo(c,b)}catch(d){if(a!==d)throw d}return this},captureMessage:function(a,b){return this._globalOptions.ignoreErrors.test&&this._globalOptions.ignoreErrors.test(a)?void 0:(this._send(p({message:a+""},b)),this)},captureBreadcrumb:function(a){var b=p({timestamp:c()/1e3},a);this._breadcrumbs.push(b),this._breadcrumbs.length>this._breadcrumbLimit&&this._breadcrumbs.shift()},addPlugin:function(a){var b=Array.prototype.slice.call(arguments,1);return this._plugins.push([a,b]),this._isRavenInstalled&&this._drainPlugins(),this},setUserContext:function(a){return this._globalContext.user=a,this},setExtraContext:function(a){return this._mergeContext("extra",a),this},setTagsContext:function(a){return this._mergeContext("tags",a),this},clearContext:function(){return this._globalContext={},this},getContext:function(){return JSON.parse(h(this._globalContext))},setEnvironment:function(a){return this._globalOptions.environment=a,this},setRelease:function(a){return this._globalOptions.release=a,this},setDataCallback:function(a){var b=this._globalOptions.dataCallback;return this._globalOptions.dataCallback=i(a)?function(c){return a(c,b)}:a,this},setShouldSendCallback:function(a){var b=this._globalOptions.shouldSendCallback;return this._globalOptions.shouldSendCallback=i(a)?function(c){return a(c,b)}:a,this},setTransport:function(a){return this._globalOptions.transport=a,this},lastException:function(){return this._lastCapturedException},lastEventId:function(){return this._lastEventId},isSetup:function(){return this._hasJSON?this._globalServer?!0:(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this._logDebug("error","Error: Raven has not been configured.")),!1):!1},afterLoad:function(){var a=window.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(window.document){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new f("Missing eventId");var c=a.dsn||this._dsn;if(!c)throw new f("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var g=a.user||this._globalContext.user;g&&(g.name&&(e+="&name="+d(g.name)),g.email&&(e+="&email="+d(g.email)));var h=this._getGlobalServer(this._parseDSN(c)),i=document.createElement("script");i.async=!0,i.src=h+"/api/embed/error-page/"+e,(document.head||document.body).appendChild(i)}},_ignoreNextOnError:function(){var a=this;this._ignoreOnError+=1,setTimeout(function(){a._ignoreOnError-=1})},_triggerEvent:function(a,b){var c,d;if(this._hasDocument){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),document.createEvent?(c=document.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=document.createEventObject(),c.eventType=a);for(d in b)m(b,d)&&(c[d]=b[d]);if(document.createEvent)document.dispatchEvent(c);else try{document.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_breadcrumbEventHandler:function(a){var b=this;return function(c){if(b._keypressTimeout=null,b._lastCapturedEvent!==c){b._lastCapturedEvent=c;var d,e=c.target;try{d=t(e)}catch(f){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},_keypressEventHandler:function(){var a=this,b=1e3;return function(c){var d=c.target,e=d&&d.tagName;if(e&&("INPUT"===e||"TEXTAREA"===e)){var f=a._keypressTimeout;f||a._breadcrumbEventHandler("input")(c),clearTimeout(f),a._keypressTimeout=setTimeout(function(){a._keypressTimeout=null},b)}}},_captureUrlChange:function(a,b){var c=u(this._location.href),d=u(b),e=u(a);this._lastHref=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},_wrapBuiltIns:function(){function a(a,b,c,d){var f=a[b];a[b]=c(f),d||e._wrappedBuiltIns.push([a,b,f])}function b(a){return function(){for(var b=new Array(arguments.length),c=0;c2?arguments[2]:void 0;return b&&e._captureUrlChange(e._lastHref,b+""),a.apply(this,arguments)}})}var n=function(a,b){e.captureBreadcrumb({message:a,level:b.level,category:"console"})};"console"in window&&console.log&&o(["debug","info","warn","error","log"],function(a,b){w(console,b,n)});var p=window.jQuery||window.$;p&&p.fn&&p.fn.ready&&a(p.fn,"ready",function(a){return function(b){return a.call(this,e.wrap(b))}})},_restoreBuiltIns:function(){for(var a;this._wrappedBuiltIns.length;){a=this._wrappedBuiltIns.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},_drainPlugins:function(){var a=this;o(this._plugins,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},_parseDSN:function(a){var b=y.exec(a),c={},d=7;try{for(;d--;)c[x[d]]=b[d]||""}catch(e){throw new f("Invalid DSN: "+a)}if(c.pass&&!this._globalOptions.allowSecretKey)throw new f("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},_getGlobalServer:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},_handleOnErrorStackInfo:function(){this._ignoreOnError||this._handleStackInfo.apply(this,arguments)},_handleStackInfo:function(a,b){var c=this,d=[];a.stack&&a.stack.length&&o(a.stack,function(a,b){var e=c._normalizeFrame(b);e&&d.push(e)}),this._triggerEvent("handle",{stackInfo:a,options:b}),this._processException(a.name,a.message,a.url,a.lineno,d.slice(0,this._globalOptions.stackTraceLimit),b)},_normalizeFrame:function(a){if(a.url){var b={filename:a.url,lineno:a.line,colno:a.column,"function":a.func||"?"};return b.in_app=!(this._globalOptions.includePaths.test&&!this._globalOptions.includePaths.test(b.filename)||/(Raven|TraceKit)\./.test(b.function)||/raven\.(min\.)?js$/.test(b.filename)),b}},_processException:function(a,b,c,d,e,f){var g;if(!(this._globalOptions.ignoreErrors.test&&this._globalOptions.ignoreErrors.test(b)||(b+="",e&&e.length?(c=e[0].filename||c,e.reverse(),g={frames:e}):c&&(g={frames:[{filename:c,lineno:d,in_app:!0}]}),this._globalOptions.ignoreUrls.test&&this._globalOptions.ignoreUrls.test(c)||this._globalOptions.whitelistUrls.test&&!this._globalOptions.whitelistUrls.test(c)))){var h=p({exception:{values:[{type:a,value:b,stacktrace:g}]},culprit:c},f);this._send(h)}},_trimPacket:function(a){var b=this._globalOptions.maxMessageLength;if(a.message&&(a.message=q(a.message,b)),a.exception){var c=a.exception.values[0];c.value=q(c.value,b)}return a},_getHttpData:function(){if(this._hasDocument&&document.location&&document.location.href){var a={headers:{"User-Agent":navigator.userAgent}};return a.url=document.location.href,document.referrer&&(a.headers.Referer=document.referrer),a}},_send:function(a){var b=this,d=this._globalOptions,e={project:this._globalProject,logger:d.logger,platform:"javascript"},f=this._getHttpData();if(f&&(e.request=f),a=p(e,a),a.tags=p(p({},this._globalContext.tags),a.tags),a.extra=p(p({},this._globalContext.extra),a.extra),a.extra["session:duration"]=c()-this._startTime,this._breadcrumbs&&this._breadcrumbs.length>0&&(a.breadcrumbs={values:[].slice.call(this._breadcrumbs,0)}),l(a.tags)&&delete a.tags,this._globalContext.user&&(a.user=this._globalContext.user),d.environment&&(a.environment=d.environment),d.release&&(a.release=d.release),d.serverName&&(a.server_name=d.serverName),i(d.dataCallback)&&(a=d.dataCallback(a)||a),a&&!l(a)&&(!i(d.shouldSendCallback)||d.shouldSendCallback(a))&&(this._lastEventId=a.event_id||(a.event_id=s()),a=this._trimPacket(a),this._logDebug("debug","Raven about to send:",a),this.isSetup())){var g={sentry_version:"7",sentry_client:"raven-js/"+this.VERSION,sentry_key:this._globalKey};this._globalSecret&&(g.sentry_secret=this._globalSecret);var h=a.exception&&a.exception.values[0];this.captureBreadcrumb({category:"sentry",message:h?(h.type?h.type+": ":"")+h.message:a.message,event_id:a.event_id,level:a.level||"error"});var j=this._globalEndpoint;(d.transport||this._makeRequest).call(this,{url:j,auth:g,data:a,options:d,onSuccess:function(){b._triggerEvent("success",{data:a,src:j})},onError:function(){b._triggerEvent("failure",{data:a,src:j})}})}},_makeRequest:function(a){function b(){200===c.status?a.onSuccess&&a.onSuccess():a.onError&&a.onError()}var c=new XMLHttpRequest,d="withCredentials"in c||"undefined"!=typeof XDomainRequest;if(d){var e=a.url;"withCredentials"in c?c.onreadystatechange=function(){4===c.readyState&&b()}:(c=new XDomainRequest,e=e.replace(/^https?:/,""),c.onload=b),c.open("POST",e+"?"+r(a.auth)),c.send(h(a.data))}},_logDebug:function(a){this._originalConsoleMethods[a]&&this.debug&&Function.prototype.apply.call(this._originalConsoleMethods[a],this._originalConsole,[].slice.call(arguments,1))},_mergeContext:function(a,b){j(b)?delete this._globalContext[a]:this._globalContext[a]=p(this._globalContext[a]||{},b)}},d.prototype.setUser=d.prototype.setUserContext,d.prototype.setReleaseContext=d.prototype.setRelease,b.exports=d},{1:1,2:2,3:3,6:6,7:7}],5:[function(a,b){"use strict";var c=a(4),d=window.Raven,e=new c;e.noConflict=function(){return window.Raven=d,e},e.afterLoad(),b.exports=e},{4:4}],6:[function(a,b){"use strict";function c(a){return void 0===a}function d(a){return"function"==typeof a}function e(a){return"[object String]"===s.toString.call(a)}function f(a){return"object"==typeof a&&null!==a}function g(a){for(var b in a)return!1;return!0}function h(a){var b=s.toString.call(a);return f(a)&&"[object Error]"===b||"[object Exception]"===b||a instanceof Error}function i(a,b){var d,e;if(c(a.length))for(d in a)l(a,d)&&b.call(null,d,a[d]);else if(e=a.length)for(d=0;e>d;d++)b.call(null,d,a[d])}function j(a,b){return b?(i(b,function(b,c){a[b]=c}),a):a}function k(a,b){return!b||a.length<=b?a:a.substr(0,b)+"…"}function l(a,b){return s.hasOwnProperty.call(a,b)}function m(a){for(var b,c=[],d=0,f=a.length;f>d;d++)b=a[d],e(b)?c.push(b.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")):b&&b.source&&c.push(b.source);return new RegExp(c.join("|"),"i")}function n(a){var b=[];return i(a,function(a,c){b.push(encodeURIComponent(a)+"="+encodeURIComponent(c))}),b.join("&")}function o(a){var b=a.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!b)return{};var c=b[6]||"",d=b[8]||"";return{protocol:b[2],host:b[4],path:b[5],relative:b[5]+c+d}}function p(){var a=window.crypto||window.msCrypto;if(!c(a)&&a.getRandomValues){var b=new Uint16Array(8);a.getRandomValues(b),b[3]=4095&b[3]|16384,b[4]=16383&b[4]|32768;var d=function(a){for(var b=a.toString(16);b.length<4;)b="0"+b;return b};return d(b[0])+d(b[1])+d(b[2])+d(b[3])+d(b[4])+d(b[5])+d(b[6])+d(b[7])}return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"===a?b:3&b|8;return c.toString(16)})}function q(a){for(var b,c=5,d=80,e=[],f=0,g=0,h=" > ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function r(a){var b,c,d,f,g,h=[];if(!a||!a.tagName)return"";if(h.push(a.tagName.toLowerCase()),a.id&&h.push("#"+a.id),b=a.className,b&&e(b))for(c=b.split(" "),g=0;g=0;--b)s[b]===a&&s.splice(b,1)}function d(){n(),s=[]}function g(a,b){var c=null;if(!b||h.collectWindowErrors){for(var d in s)if(e(s,d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(f){c=f}if(c)throw c}}function l(a,b,d,e,i){var l=null;if(v)h.computeStackTrace.augmentStackTraceWithInitialElement(v,b,d,a),o();else if(i)l=h.computeStackTrace(i),g(l,!0);else{var m,n={url:b,line:d,column:e},p=void 0,r=a;if(f(a)){var m=a.match(k);m&&(p=m[1],r=m[2])}n.func=j,l={name:p,message:r,url:c(),stack:[n]},g(l,!0)}return q?q.apply(this,arguments):!1}function m(){r||(q=window.onerror,window.onerror=l,r=!0)}function n(){r&&(window.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,g.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=h.computeStackTrace(a);if(v=d,u=a,t=c,window.setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=d,p}(),h.computeStackTrace=function(){function a(a){if(!g(a.stack)&&a.stack){for(var b,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|\[native).*?)(?::(\d+))?(?::(\d+))?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=i.length;m>l;++l){if(b=e.exec(i[l])){var n=b[2]&&-1!==b[2].indexOf("native");d={url:n?null:b[2],func:b[1]||j,args:n?[b[2]]:[],line:b[3]?+b[3]:null,column:b[4]?+b[4]:null}}else if(b=h.exec(i[l]))d={url:b[2],func:b[1]||j,args:[],line:+b[3],column:b[4]?+b[4]:null};else{if(!(b=f.exec(i[l])))continue;d={url:b[3],func:b[1]||j,args:b[2]?b[2].split(","):[],line:b[4]?+b[4]:null,column:b[5]?+b[5]:null}}!d.func&&d.line&&(d.func=j),k.push(d)}return k.length?(k[0].column||g(a.columnNumber)||(k[0].column=a.columnNumber+1),{name:a.name,message:a.message,url:c(),stack:k}):null}}function b(a){var b=a.stacktrace;if(!g(a.stacktrace)&&a.stacktrace){for(var d,e=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,f=/ line (\d+), column (\d+)\s*(?:in (?:]+)>|([^\)]+))\((.*)\))? in (.*):\s*$/i,h=b.split("\n"),i=[],k=0;k0&&a.stack[0].url===d.url){if(a.stack[0].line===d.line)return!1;if(!a.stack[0].line&&a.stack[0].func===d.func)return a.stack[0].line=d.line,!1}return a.stack.unshift(d),a.partial=!0,!0}return a.incomplete=!0,!1}function f(a,b){for(var d,g,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=f.caller;o&&!n;o=o.caller)if(o!==i&&o!==h.report){if(g={url:null,func:j,line:null,column:null},o.name?g.func=o.name:(d=k.exec(o.toString()))&&(g.func=d[1]),"undefined"==typeof g.func)try{g.func=d.input.substring(0,d.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(g)}b&&l.splice(0,b);var q={name:a.name,message:a.message,url:c(),stack:l};return e(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function i(e,g){var i=null;g=null==g?0:+g;try{if(i=b(e))return i}catch(j){if(h.debug)throw j}try{if(i=a(e))return i}catch(j){if(h.debug)throw j}try{if(i=d(e))return i}catch(j){if(h.debug)throw j}try{if(i=f(e,g+1))return i}catch(j){if(h.debug)throw j}return{name:e.name,message:e.message,url:c()}}return i.augmentStackTraceWithInitialElement=e,i.computeStackTraceFromStackProp=a,i}(),b.exports=h},{6:6}]},{},[5])(5)}); -//# sourceMappingURL=../../maps/libs/raven.js.map \ No newline at end of file +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Raven=t()}}(function(){return function t(e,n,r){function i(a,s){if(!n[a]){if(!e[a]){var l="function"==typeof require&&require;if(!s&&l)return l(a,!0);if(o)return o(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var c=n[a]={exports:{}};e[a][0].call(c.exports,function(t){var n=e[a][1][t];return i(n||t)},c,c.exports,t,e,n,r)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;a0){var a=n.indexOf(this);~a?n.splice(a+1):n.push(this),~a?r.splice(a,1/0,i):r.push(i),~n.indexOf(o)&&(o=e.call(this,i,o))}else n.push(o);return null==t?o:t.call(this,i,o)}}n=e.exports=r,n.getSerialize=i},{}],2:[function(t,e,n){"use strict";function r(t){this.name="RavenConfigError",this.message=t}r.prototype=new Error,r.prototype.constructor=r,e.exports=r},{}],3:[function(t,e,n){"use strict";var r=function(t,e,n){var r=t[e],i=t;if(e in t){var o="warn"===e?"warning":e;t[e]=function(){var t=[].slice.call(arguments),e=""+t.join(" "),a={level:o,logger:"console",extra:{arguments:t}};n&&n(e,a),r&&Function.prototype.apply.call(r,i,t)}}};e.exports={wrapMethod:r}},{}],4:[function(t,e,n){"use strict";function r(){return+new Date}function i(){this._hasJSON=!("object"!=typeof JSON||!JSON.stringify),this._hasDocument="undefined"!=typeof document,this._lastCapturedException=null,this._lastEventId=null,this._globalServer=null,this._globalKey=null,this._globalProject=null,this._globalContext={},this._globalOptions={logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],crossOrigin:"anonymous",collectWindowErrors:!0,maxMessageLength:0,stackTraceLimit:50},this._ignoreOnError=0,this._isRavenInstalled=!1,this._originalErrorStackTraceLimit=Error.stackTraceLimit,this._originalConsole=window.console||{},this._originalConsoleMethods={},this._plugins=[],this._startTime=r(),this._wrappedBuiltIns=[],this._breadcrumbs=[],this._breadcrumbLimit=20,this._lastCapturedEvent=null,this._keypressTimeout,this._location=window.location,this._lastHref=this._location&&this._location.href;for(var t in this._originalConsole)this._originalConsoleMethods[t]=this._originalConsole[t]}var o=t(7),a=t(2),s=t(6),l=t(1),u=s.isFunction,c=s.isUndefined,h=s.isError,p=s.isEmptyObject,f=s.hasKey,d=s.joinRegExp,g=s.each,_=s.objectMerge,v=s.truncate,m=s.urlencode,b=s.uuid4,y=s.htmlTreeAsString,w=s.parseUrl,x=s.isString,E=t(3).wrapMethod,k="source protocol user pass host port path".split(" "),S=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;i.prototype={VERSION:"3.3.0",debug:!1,TraceKit:o,config:function(t,e){var n=this;if(this._globalServer)return this._logDebug("error","Error: Raven has already been configured"),this;if(!t)return this;e&&g(e,function(t,e){"tags"===t||"extra"===t?n._globalContext[t]=e:n._globalOptions[t]=e});var r=this._parseDSN(t),i=r.path.lastIndexOf("/"),a=r.path.substr(1,i);return this._dsn=t,this._globalOptions.ignoreErrors.push(/^Script error\.?$/),this._globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),this._globalOptions.ignoreErrors=d(this._globalOptions.ignoreErrors),this._globalOptions.ignoreUrls=!!this._globalOptions.ignoreUrls.length&&d(this._globalOptions.ignoreUrls),this._globalOptions.whitelistUrls=!!this._globalOptions.whitelistUrls.length&&d(this._globalOptions.whitelistUrls),this._globalOptions.includePaths=d(this._globalOptions.includePaths),this._globalKey=r.user,this._globalSecret=r.pass&&r.pass.substr(1),this._globalProject=r.path.substr(i+1),this._globalServer=this._getGlobalServer(r),this._globalEndpoint=this._globalServer+"/"+a+"api/"+this._globalProject+"/store/",o.collectWindowErrors=!!this._globalOptions.collectWindowErrors,this},install:function(){var t=this;return this.isSetup()&&!this._isRavenInstalled&&(o.report.subscribe(function(){t._handleOnErrorStackInfo.apply(t,arguments)}),this._wrapBuiltIns(),this._drainPlugins(),this._isRavenInstalled=!0),Error.stackTraceLimit=this._globalOptions.stackTraceLimit,this},context:function(t,e,n){return u(t)&&(n=e||[],e=t,t=void 0),this.wrap(t,e).apply(this,n)},wrap:function(t,e,n){function r(){var r=[],o=arguments.length,a=!t||t&&!1!==t.deep;for(n&&u(n)&&n.apply(this,arguments);o--;)r[o]=a?i.wrap(t,arguments[o]):arguments[o];try{return e.apply(this,r)}catch(e){throw i._ignoreNextOnError(),i.captureException(e,t),e}}var i=this;if(c(e)&&!u(t))return t;if(u(t)&&(e=t,t=void 0),!u(e))return e;try{if(e.__raven__)return e}catch(t){return e}if(e.__raven_wrapper__)return e.__raven_wrapper__;for(var o in e)f(e,o)&&(r[o]=e[o]);return r.prototype=e.prototype,e.__raven_wrapper__=r,r.__raven__=!0,r.__inner__=e,r},uninstall:function(){return o.report.uninstall(),this._restoreBuiltIns(),Error.stackTraceLimit=this._originalErrorStackTraceLimit,this._isRavenInstalled=!1,this},captureException:function(t,e){if(!h(t))return this.captureMessage(t,e);this._lastCapturedException=t;try{var n=o.computeStackTrace(t);this._handleStackInfo(n,e)}catch(e){if(t!==e)throw e}return this},captureMessage:function(t,e){if(!this._globalOptions.ignoreErrors.test||!this._globalOptions.ignoreErrors.test(t))return this._send(_({message:t+""},e)),this},captureBreadcrumb:function(t){var e=_({timestamp:r()/1e3},t);this._breadcrumbs.push(e),this._breadcrumbs.length>this._breadcrumbLimit&&this._breadcrumbs.shift()},addPlugin:function(t){var e=Array.prototype.slice.call(arguments,1);return this._plugins.push([t,e]),this._isRavenInstalled&&this._drainPlugins(),this},setUserContext:function(t){return this._globalContext.user=t,this},setExtraContext:function(t){return this._mergeContext("extra",t),this},setTagsContext:function(t){return this._mergeContext("tags",t),this},clearContext:function(){return this._globalContext={},this},getContext:function(){return JSON.parse(l(this._globalContext))},setEnvironment:function(t){return this._globalOptions.environment=t,this},setRelease:function(t){return this._globalOptions.release=t,this},setDataCallback:function(t){var e=this._globalOptions.dataCallback;return this._globalOptions.dataCallback=u(t)?function(n){return t(n,e)}:t,this},setShouldSendCallback:function(t){var e=this._globalOptions.shouldSendCallback;return this._globalOptions.shouldSendCallback=u(t)?function(n){return t(n,e)}:t,this},setTransport:function(t){return this._globalOptions.transport=t,this},lastException:function(){return this._lastCapturedException},lastEventId:function(){return this._lastEventId},isSetup:function(){return!!this._hasJSON&&(!!this._globalServer||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this._logDebug("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var t=window.RavenConfig;t&&this.config(t.dsn,t.config).install()},showReportDialog:function(t){if(window.document){t=t||{};var e=t.eventId||this.lastEventId();if(!e)throw new a("Missing eventId");var n=t.dsn||this._dsn;if(!n)throw new a("Missing DSN");var r=encodeURIComponent,i="";i+="?eventId="+r(e),i+="&dsn="+r(n);var o=t.user||this._globalContext.user;o&&(o.name&&(i+="&name="+r(o.name)),o.email&&(i+="&email="+r(o.email)));var s=this._getGlobalServer(this._parseDSN(n)),l=document.createElement("script");l.async=!0,l.src=s+"/api/embed/error-page/"+i,(document.head||document.body).appendChild(l)}},_ignoreNextOnError:function(){var t=this;this._ignoreOnError+=1,setTimeout(function(){t._ignoreOnError-=1})},_triggerEvent:function(t,e){var n,r;if(this._hasDocument){e=e||{},t="raven"+t.substr(0,1).toUpperCase()+t.substr(1),document.createEvent?(n=document.createEvent("HTMLEvents"),n.initEvent(t,!0,!0)):(n=document.createEventObject(),n.eventType=t);for(r in e)f(e,r)&&(n[r]=e[r]);if(document.createEvent)document.dispatchEvent(n);else try{document.fireEvent("on"+n.eventType.toLowerCase(),n)}catch(t){}}},_breadcrumbEventHandler:function(t){var e=this;return function(n){if(e._keypressTimeout=null,e._lastCapturedEvent!==n){e._lastCapturedEvent=n;var r,i=n.target;try{r=y(i)}catch(t){r=""}e.captureBreadcrumb({category:"ui."+t,message:r})}}},_keypressEventHandler:function(){var t=this;return function(e){var n=e.target,r=n&&n.tagName;if(r&&("INPUT"===r||"TEXTAREA"===r)){var i=t._keypressTimeout;i||t._breadcrumbEventHandler("input")(e),clearTimeout(i),t._keypressTimeout=setTimeout(function(){t._keypressTimeout=null},1e3)}}},_captureUrlChange:function(t,e){var n=w(this._location.href),r=w(e),i=w(t);this._lastHref=e,n.protocol===r.protocol&&n.host===r.host&&(e=r.relative),n.protocol===i.protocol&&n.host===i.host&&(t=i.relative),this.captureBreadcrumb({category:"navigation",data:{to:e,from:t}})},_wrapBuiltIns:function(){function t(t,e,n,i){var o=t[e];t[e]=n(o),i||r._wrappedBuiltIns.push([t,e,o])}function e(t){return function(e,n){for(var i=new Array(arguments.length),o=0;o2?arguments[2]:void 0;return e&&r._captureUrlChange(r._lastHref,e+""),t.apply(this,arguments)}})}var c=function(t,e){r.captureBreadcrumb({message:t,level:e.level,category:"console"})};"console"in window&&console.log&&g(["debug","info","warn","error","log"],function(t,e){E(console,e,c)});var h=window.jQuery||window.$;h&&h.fn&&h.fn.ready&&t(h.fn,"ready",function(t){return function(e){return t.call(this,r.wrap(e))}})},_restoreBuiltIns:function(){for(var t;this._wrappedBuiltIns.length;){t=this._wrappedBuiltIns.shift();var e=t[0],n=t[1],r=t[2];e[n]=r}},_drainPlugins:function(){var t=this;g(this._plugins,function(e,n){var r=n[0],i=n[1];r.apply(t,[t].concat(i))})},_parseDSN:function(t){var e=S.exec(t),n={},r=7;try{for(;r--;)n[k[r]]=e[r]||""}catch(e){throw new a("Invalid DSN: "+t)}if(n.pass&&!this._globalOptions.allowSecretKey)throw new a("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return n},_getGlobalServer:function(t){var e="//"+t.host+(t.port?":"+t.port:"");return t.protocol&&(e=t.protocol+":"+e),e},_handleOnErrorStackInfo:function(){this._ignoreOnError||this._handleStackInfo.apply(this,arguments)},_handleStackInfo:function(t,e){var n=this,r=[];t.stack&&t.stack.length&&g(t.stack,function(t,e){var i=n._normalizeFrame(e);i&&r.push(i)}),this._triggerEvent("handle",{stackInfo:t,options:e}),this._processException(t.name,t.message,t.url,t.lineno,r.slice(0,this._globalOptions.stackTraceLimit),e)},_normalizeFrame:function(t){if(t.url){var e={filename:t.url,lineno:t.line,colno:t.column,function:t.func||"?"};return e.in_app=!(this._globalOptions.includePaths.test&&!this._globalOptions.includePaths.test(e.filename)||/(Raven|TraceKit)\./.test(e.function)||/raven\.(min\.)?js$/.test(e.filename)),e}},_processException:function(t,e,n,r,i,o){var a;if((!this._globalOptions.ignoreErrors.test||!this._globalOptions.ignoreErrors.test(e))&&(e+="",i&&i.length?(n=i[0].filename||n,i.reverse(),a={frames:i}):n&&(a={frames:[{filename:n,lineno:r,in_app:!0}]}),(!this._globalOptions.ignoreUrls.test||!this._globalOptions.ignoreUrls.test(n))&&(!this._globalOptions.whitelistUrls.test||this._globalOptions.whitelistUrls.test(n)))){var s=_({exception:{values:[{type:t,value:e,stacktrace:a}]},culprit:n},o);this._send(s)}},_trimPacket:function(t){var e=this._globalOptions.maxMessageLength;if(t.message&&(t.message=v(t.message,e)),t.exception){var n=t.exception.values[0];n.value=v(n.value,e)}return t},_getHttpData:function(){if(this._hasDocument&&document.location&&document.location.href){var t={headers:{"User-Agent":navigator.userAgent}};return t.url=document.location.href,document.referrer&&(t.headers.Referer=document.referrer),t}},_send:function(t){var e=this,n=this._globalOptions,i={project:this._globalProject,logger:n.logger,platform:"javascript"},o=this._getHttpData();if(o&&(i.request=o),t=_(i,t),t.tags=_(_({},this._globalContext.tags),t.tags),t.extra=_(_({},this._globalContext.extra),t.extra),t.extra["session:duration"]=r()-this._startTime,this._breadcrumbs&&this._breadcrumbs.length>0&&(t.breadcrumbs={values:[].slice.call(this._breadcrumbs,0)}),p(t.tags)&&delete t.tags,this._globalContext.user&&(t.user=this._globalContext.user),n.environment&&(t.environment=n.environment),n.release&&(t.release=n.release),n.serverName&&(t.server_name=n.serverName),u(n.dataCallback)&&(t=n.dataCallback(t)||t),t&&!p(t)&&(!u(n.shouldSendCallback)||n.shouldSendCallback(t))&&(this._lastEventId=t.event_id||(t.event_id=b()),t=this._trimPacket(t),this._logDebug("debug","Raven about to send:",t),this.isSetup())){var a={sentry_version:"7",sentry_client:"raven-js/"+this.VERSION,sentry_key:this._globalKey};this._globalSecret&&(a.sentry_secret=this._globalSecret);var s=t.exception&&t.exception.values[0];this.captureBreadcrumb({category:"sentry",message:s?(s.type?s.type+": ":"")+s.message:t.message,event_id:t.event_id,level:t.level||"error"});var l=this._globalEndpoint;(n.transport||this._makeRequest).call(this,{url:l,auth:a,data:t,options:n,onSuccess:function(){e._triggerEvent("success",{data:t,src:l})},onError:function(){e._triggerEvent("failure",{data:t,src:l})}})}},_makeRequest:function(t){function e(){200===n.status?t.onSuccess&&t.onSuccess():t.onError&&t.onError()}var n=new XMLHttpRequest;if("withCredentials"in n||"undefined"!=typeof XDomainRequest){var r=t.url;"withCredentials"in n?n.onreadystatechange=function(){4===n.readyState&&e()}:(n=new XDomainRequest,r=r.replace(/^https?:/,""),n.onload=e),n.open("POST",r+"?"+m(t.auth)),n.send(l(t.data))}},_logDebug:function(t){this._originalConsoleMethods[t]&&this.debug&&Function.prototype.apply.call(this._originalConsoleMethods[t],this._originalConsole,[].slice.call(arguments,1))},_mergeContext:function(t,e){c(e)?delete this._globalContext[t]:this._globalContext[t]=_(this._globalContext[t]||{},e)}},i.prototype.setUser=i.prototype.setUserContext,i.prototype.setReleaseContext=i.prototype.setRelease,e.exports=i},{1:1,2:2,3:3,6:6,7:7}],5:[function(t,e,n){"use strict";var r=t(4),i=window.Raven,o=new r;o.noConflict=function(){return window.Raven=i,o},o.afterLoad(),e.exports=o},{4:4}],6:[function(t,e,n){"use strict";function r(t){return void 0===t}function i(t){return"function"==typeof t}function o(t){return"[object String]"===b.toString.call(t)}function a(t){return"object"==typeof t&&null!==t}function s(t){for(var e in t)return!1;return!0}function l(t){var e=b.toString.call(t);return a(t)&&"[object Error]"===e||"[object Exception]"===e||t instanceof Error}function u(t,e){var n,i;if(r(t.length))for(n in t)p(t,n)&&e.call(null,n,t[n]);else if(i=t.length)for(n=0;n ".length;t&&r++<5&&!("html"===(e=m(t))||r>1&&i+n.length*o+e.length>=80);)n.push(e),i+=e.length,t=t.parentNode;return n.reverse().join(" > ")}function m(t){var e,n,r,i,a,s=[];if(!t||!t.tagName)return"";if(s.push(t.tagName.toLowerCase()),t.id&&s.push("#"+t.id),(e=t.className)&&o(e))for(n=e.split(" "),a=0;a=0;--e)m[e]===t&&m.splice(e,1)}function n(){f(),m=[]}function i(t,e){var n=null;if(!e||l.collectWindowErrors){for(var r in m)if(o(m,r))try{m[r].apply(null,[t].concat(u.call(arguments,2)))}catch(t){n=t}if(n)throw n}}function s(t,e,n,o,s){var u=null;if(w)l.computeStackTrace.augmentStackTraceWithInitialElement(w,e,n,t),d();else if(s)u=l.computeStackTrace(s),i(u,!0);else{var p,f={url:e,line:n,column:o},g=void 0,v=t;if(a(t)){var p=t.match(h);p&&(g=p[1],v=p[2])}f.func=c,u={name:g,message:v,url:r(),stack:[f]},i(u,!0)}return!!_&&_.apply(this,arguments)}function p(){v||(_=window.onerror,window.onerror=s,v=!0)}function f(){v&&(window.onerror=_,v=!1,_=void 0)}function d(){var t=w,e=b;b=null,w=null,y=null,i.apply(null,[t,!1].concat(e))}function g(t,e){var n=u.call(arguments,1);if(w){if(y===t)return;d()}var r=l.computeStackTrace(t);if(w=r,y=t,b=n,window.setTimeout(function(){y===t&&d()},r.incomplete?2e3:0),!1!==e)throw t}var _,v,m=[],b=null,y=null,w=null;return g.subscribe=t,g.unsubscribe=e,g.uninstall=n,g}(),l.computeStackTrace=function(){function t(t){if(!s(t.stack)&&t.stack){for(var e,n,i=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,o=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|\[native).*?)(?::(\d+))?(?::(\d+))?\s*$/i,a=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,l=t.stack.split("\n"),u=[],h=(/^(.*) is undefined$/.exec(t.message),0),p=l.length;h]+)>|([^\)]+))\((.*)\))? in (.*):\s*$/i,a=e.split("\n"),l=[],u=0;u0&&t.stack[0].url===i.url){if(t.stack[0].line===i.line)return!1;if(!t.stack[0].line&&t.stack[0].func===i.func)return t.stack[0].line=i.line,!1}return t.stack.unshift(i),t.partial=!0,!0}return t.incomplete=!0,!1}function o(t,e){for(var n,s,u=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,h=[],p={},f=!1,d=o.caller;d&&!f;d=d.caller)if(d!==a&&d!==l.report){if(s={url:null,func:c,line:null,column:null},d.name?s.func=d.name:(n=u.exec(d.toString()))&&(s.func=n[1]),void 0===s.func)try{s.func=n.input.substring(0,n.input.indexOf("{"))}catch(t){}p[""+d]?f=!0:p[""+d]=!0,h.push(s)}e&&h.splice(0,e);var g={name:t.name,message:t.message,url:r(),stack:h};return i(g,t.sourceURL||t.fileName,t.line||t.lineNumber,t.message||t.description),g}function a(i,a){var s=null;a=null==a?0:+a;try{if(s=e(i))return s}catch(t){if(l.debug)throw t}try{if(s=t(i))return s}catch(t){if(l.debug)throw t}try{if(s=n(i))return s}catch(t){if(l.debug)throw t}try{if(s=o(i,a+1))return s}catch(t){if(l.debug)throw t}return{name:i.name,message:i.message,url:r()}}return a.augmentStackTraceWithInitialElement=i,a.computeStackTraceFromStackProp=t,a}(),e.exports=l},{6:6}]},{},[5])(5)}); +//# sourceMappingURL=../../maps/libs/raven.js.map diff --git a/static/scripts/libs/require.js b/static/scripts/libs/require.js index 6cbae8613a8..97f9c7f3dad 100644 --- a/static/scripts/libs/require.js +++ b/static/scripts/libs/require.js @@ -1,2 +1,2 @@ -var requirejs,require,define;!function(global){function commentReplace(a,b,c,d){return d||""}function isFunction(a){return"[object Function]"===ostring.call(a)}function isArray(a){return"[object Array]"===ostring.call(a)}function each(a,b){if(a){var c;for(c=0;c-1&&(!a[c]||!b(a[c],c,a));c-=1);}}function hasProp(a,b){return hasOwn.call(a,b)}function getOwn(a,b){return hasProp(a,b)&&a[b]}function eachProp(a,b){var c;for(c in a)if(hasProp(a,c)&&b(a[c],c))break}function mixin(a,b,c,d){return b&&eachProp(b,function(b,e){(c||!hasProp(a,e))&&(!d||"object"!=typeof b||!b||isArray(b)||isFunction(b)||b instanceof RegExp?a[e]=b:(a[e]||(a[e]={}),mixin(a[e],b,c,d)))}),a}function bind(a,b){return function(){return b.apply(a,arguments)}}function scripts(){return document.getElementsByTagName("script")}function defaultOnError(a){throw a}function getGlobal(a){if(!a)return a;var b=global;return each(a.split("."),function(a){b=b[a]}),b}function makeError(a,b,c,d){var e=new Error(b+"\nhttp://requirejs.org/docs/errors.html#"+a);return e.requireType=a,e.requireModules=d,c&&(e.originalError=c),e}function newContext(a){function b(a){var b,c;for(b=0;b0&&(a.splice(b-1,2),b-=2)}}function c(a,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q=c&&c.split("/"),r=x.map,s=r&&r["*"];if(a&&(a=a.split("/"),k=a.length-1,x.nodeIdCompat&&jsSuffixRegExp.test(a[k])&&(a[k]=a[k].replace(jsSuffixRegExp,"")),"."===a[0].charAt(0)&&q&&(p=q.slice(0,q.length-1),a=p.concat(a)),b(a),a=a.join("/")),d&&r&&(q||s)){g=a.split("/");a:for(h=g.length;h>0;h-=1){if(j=g.slice(0,h).join("/"),q)for(i=q.length;i>0;i-=1)if(f=getOwn(r,q.slice(0,i).join("/")),f&&(f=getOwn(f,j))){l=f,m=h;break a}!n&&s&&getOwn(s,j)&&(n=getOwn(s,j),o=h)}!l&&n&&(l=n,m=o),l&&(g.splice(0,m,l),a=g.join("/"))}return e=getOwn(x.pkgs,a),e?e:a}function d(a){isBrowser&&each(scripts(),function(b){return b.getAttribute("data-requiremodule")===a&&b.getAttribute("data-requirecontext")===u.contextName?(b.parentNode.removeChild(b),!0):void 0})}function e(a){var b=getOwn(x.paths,a);return b&&isArray(b)&&b.length>1?(b.shift(),u.require.undef(a),u.makeRequire(null,{skipMap:!0})([a]),!0):void 0}function f(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function g(a,b,d,e){var g,h,i,j,k=null,l=b?b.name:null,m=a,n=!0,o="";return a||(n=!1,a="_@r"+(F+=1)),j=f(a),k=j[0],a=j[1],k&&(k=c(k,l,e),h=getOwn(C,k)),a&&(k?o=h&&h.normalize?h.normalize(a,function(a){return c(a,l,e)}):-1===a.indexOf("!")?c(a,l,e):a:(o=c(a,l,e),j=f(o),k=j[0],o=j[1],d=!0,g=u.nameToUrl(o))),i=!k||h||d?"":"_unnormalized"+(G+=1),{prefix:k,name:o,parentMap:b,unnormalized:!!i,url:g,originalName:m,isDefine:n,id:(k?k+"!"+o:o)+i}}function h(a){var b=a.id,c=getOwn(y,b);return c||(c=y[b]=new u.Module(a)),c}function i(a,b,c){var d=a.id,e=getOwn(y,d);!hasProp(C,d)||e&&!e.defineEmitComplete?(e=h(a),e.error&&"error"===b?c(e.error):e.on(b,c)):"defined"===b&&c(C[d])}function j(a,b){var c=a.requireModules,d=!1;b?b(a):(each(c,function(b){var c=getOwn(y,b);c&&(c.error=a,c.events.error&&(d=!0,c.emit("error",a)))}),d||req.onError(a))}function k(){globalDefQueue.length&&(each(globalDefQueue,function(a){var b=a[0];"string"==typeof b&&(u.defQueueMap[b]=!0),B.push(a)}),globalDefQueue=[])}function l(a){delete y[a],delete z[a]}function m(a,b,c){var d=a.map.id;a.error?a.emit("error",a.error):(b[d]=!0,each(a.depMaps,function(d,e){var f=d.id,g=getOwn(y,f);!g||a.depMatched[e]||c[f]||(getOwn(b,f)?(a.defineDep(e,C[f]),a.check()):m(g,b,c))}),c[d]=!0)}function n(){var a,b,c=1e3*x.waitSeconds,f=c&&u.startTime+c<(new Date).getTime(),g=[],h=[],i=!1,k=!0;if(!s){if(s=!0,eachProp(z,function(a){var c=a.map,j=c.id;if(a.enabled&&(c.isDefine||h.push(a),!a.error))if(!a.inited&&f)e(j)?(b=!0,i=!0):(g.push(j),d(j));else if(!a.inited&&a.fetched&&c.isDefine&&(i=!0,!c.prefix))return k=!1}),f&&g.length)return a=makeError("timeout","Load timeout for modules: "+g,null,g),a.contextName=u.contextName,j(a);k&&each(h,function(a){m(a,{},{})}),f&&!b||!i||!isBrowser&&!isWebWorker||w||(w=setTimeout(function(){w=0,n()},50)),s=!1}}function o(a){hasProp(C,a[0])||h(g(a[0],null,!0)).init(a[1],a[2])}function p(a,b,c,d){a.detachEvent&&!isOpera?d&&a.detachEvent(d,b):a.removeEventListener(c,b,!1)}function q(a){var b=a.currentTarget||a.srcElement;return p(b,u.onScriptLoad,"load","onreadystatechange"),p(b,u.onScriptError,"error"),{node:b,id:b&&b.getAttribute("data-requiremodule")}}function r(){var a;for(k();B.length;){if(a=B.shift(),null===a[0])return j(makeError("mismatch","Mismatched anonymous define() module: "+a[a.length-1]));o(a)}u.defQueueMap={}}var s,t,u,v,w,x={waitSeconds:7,baseUrl:"./",paths:{},bundles:{},pkgs:{},shim:{},config:{}},y={},z={},A={},B=[],C={},D={},E={},F=1,G=1;return v={require:function(a){return a.require?a.require:a.require=u.makeRequire(a.map)},exports:function(a){return a.usingExports=!0,a.map.isDefine?a.exports?C[a.map.id]=a.exports:a.exports=C[a.map.id]={}:void 0},module:function(a){return a.module?a.module:a.module={id:a.map.id,uri:a.map.url,config:function(){return getOwn(x.config,a.map.id)||{}},exports:a.exports||(a.exports={})}}},t=function(a){this.events=getOwn(A,a.id)||{},this.map=a,this.shim=getOwn(x.shim,a.id),this.depExports=[],this.depMaps=[],this.depMatched=[],this.pluginMaps={},this.depCount=0},t.prototype={init:function(a,b,c,d){d=d||{},this.inited||(this.factory=b,c?this.on("error",c):this.events.error&&(c=bind(this,function(a){this.emit("error",a)})),this.depMaps=a&&a.slice(0),this.errback=c,this.inited=!0,this.ignore=d.ignore,d.enabled||this.enabled?this.enable():this.check())},defineDep:function(a,b){this.depMatched[a]||(this.depMatched[a]=!0,this.depCount-=1,this.depExports[a]=b)},fetch:function(){if(!this.fetched){this.fetched=!0,u.startTime=(new Date).getTime();var a=this.map;return this.shim?void u.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],bind(this,function(){return a.prefix?this.callPlugin():this.load()})):a.prefix?this.callPlugin():this.load()}},load:function(){var a=this.map.url;D[a]||(D[a]=!0,u.load(this.map.id,a))},check:function(){if(this.enabled&&!this.enabling){var a,b,c=this.map.id,d=this.depExports,e=this.exports,f=this.factory;if(this.inited){if(this.error)this.emit("error",this.error);else if(!this.defining){if(this.defining=!0,this.depCount<1&&!this.defined){if(isFunction(f)){if(this.events.error&&this.map.isDefine||req.onError!==defaultOnError)try{e=u.execCb(c,f,d,e)}catch(g){a=g}else e=u.execCb(c,f,d,e);if(this.map.isDefine&&void 0===e&&(b=this.module,b?e=b.exports:this.usingExports&&(e=this.exports)),a)return a.requireMap=this.map,a.requireModules=this.map.isDefine?[this.map.id]:null,a.requireType=this.map.isDefine?"define":"require",j(this.error=a)}else e=f;if(this.exports=e,this.map.isDefine&&!this.ignore&&(C[c]=e,req.onResourceLoad)){var h=[];each(this.depMaps,function(a){h.push(a.normalizedMap||a)}),req.onResourceLoad(u,this.map,h)}l(c),this.defined=!0}this.defining=!1,this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else hasProp(u.defQueueMap,c)||this.fetch()}},callPlugin:function(){var a=this.map,b=a.id,d=g(a.prefix);this.depMaps.push(d),i(d,"defined",bind(this,function(d){var e,f,k,m=getOwn(E,this.map.id),n=this.map.name,o=this.map.parentMap?this.map.parentMap.name:null,p=u.makeRequire(a.parentMap,{enableBuildCallback:!0});return this.map.unnormalized?(d.normalize&&(n=d.normalize(n,function(a){return c(a,o,!0)})||""),f=g(a.prefix+"!"+n,this.map.parentMap),i(f,"defined",bind(this,function(a){this.map.normalizedMap=f,this.init([],function(){return a},null,{enabled:!0,ignore:!0})})),k=getOwn(y,f.id),void(k&&(this.depMaps.push(f),this.events.error&&k.on("error",bind(this,function(a){this.emit("error",a)})),k.enable()))):m?(this.map.url=u.nameToUrl(m),void this.load()):(e=bind(this,function(a){this.init([],function(){return a},null,{enabled:!0})}),e.error=bind(this,function(a){this.inited=!0,this.error=a,a.requireModules=[b],eachProp(y,function(a){0===a.map.id.indexOf(b+"_unnormalized")&&l(a.map.id)}),j(a)}),e.fromText=bind(this,function(c,d){var f=a.name,i=g(f),k=useInteractive;d&&(c=d),k&&(useInteractive=!1),h(i),hasProp(x.config,b)&&(x.config[f]=x.config[b]);try{req.exec(c)}catch(l){return j(makeError("fromtexteval","fromText eval for "+b+" failed: "+l,l,[b]))}k&&(useInteractive=!0),this.depMaps.push(i),u.completeLoad(f),p([f],e)}),void d.load(a.name,p,e,x))})),u.enable(d,this),this.pluginMaps[d.id]=d},enable:function(){z[this.map.id]=this,this.enabled=!0,this.enabling=!0,each(this.depMaps,bind(this,function(a,b){var c,d,e;if("string"==typeof a){if(a=g(a,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap),this.depMaps[b]=a,e=getOwn(v,a.id))return void(this.depExports[b]=e(this));this.depCount+=1,i(a,"defined",bind(this,function(a){this.undefed||(this.defineDep(b,a),this.check())})),this.errback?i(a,"error",bind(this,this.errback)):this.events.error&&i(a,"error",bind(this,function(a){this.emit("error",a)}))}c=a.id,d=y[c],hasProp(v,c)||!d||d.enabled||u.enable(a,this)})),eachProp(this.pluginMaps,bind(this,function(a){var b=getOwn(y,a.id);b&&!b.enabled&&u.enable(a,this)})),this.enabling=!1,this.check()},on:function(a,b){var c=this.events[a];c||(c=this.events[a]=[]),c.push(b)},emit:function(a,b){each(this.events[a],function(a){a(b)}),"error"===a&&delete this.events[a]}},u={config:x,contextName:a,registry:y,defined:C,urlFetched:D,defQueue:B,defQueueMap:{},Module:t,makeModuleMap:g,nextTick:req.nextTick,onError:j,configure:function(a){if(a.baseUrl&&"/"!==a.baseUrl.charAt(a.baseUrl.length-1)&&(a.baseUrl+="/"),"string"==typeof a.urlArgs){var b=a.urlArgs;a.urlArgs=function(a,c){return(-1===c.indexOf("?")?"?":"&")+b}}var c=x.shim,d={paths:!0,bundles:!0,config:!0,map:!0};eachProp(a,function(a,b){d[b]?(x[b]||(x[b]={}),mixin(x[b],a,!0,!0)):x[b]=a}),a.bundles&&eachProp(a.bundles,function(a,b){each(a,function(a){a!==b&&(E[a]=b)})}),a.shim&&(eachProp(a.shim,function(a,b){isArray(a)&&(a={deps:a}),!a.exports&&!a.init||a.exportsFn||(a.exportsFn=u.makeShimExports(a)),c[b]=a}),x.shim=c),a.packages&&each(a.packages,function(a){var b,c;a="string"==typeof a?{name:a}:a,c=a.name,b=a.location,b&&(x.paths[c]=a.location),x.pkgs[c]=a.name+"/"+(a.main||"main").replace(currDirRegExp,"").replace(jsSuffixRegExp,"")}),eachProp(y,function(a,b){a.inited||a.map.unnormalized||(a.map=g(b,null,!0))}),(a.deps||a.callback)&&u.require(a.deps||[],a.callback)},makeShimExports:function(a){function b(){var b;return a.init&&(b=a.init.apply(global,arguments)),b||a.exports&&getGlobal(a.exports)}return b},makeRequire:function(b,e){function f(c,d,i){var k,l,m;return e.enableBuildCallback&&d&&isFunction(d)&&(d.__requireJsBuild=!0),"string"==typeof c?isFunction(d)?j(makeError("requireargs","Invalid require call"),i):b&&hasProp(v,c)?v[c](y[b.id]):req.get?req.get(u,c,b,f):(l=g(c,b,!1,!0),k=l.id,hasProp(C,k)?C[k]:j(makeError("notloaded",'Module name "'+k+'" has not been loaded yet for context: '+a+(b?"":". Use require([])")))):(r(),u.nextTick(function(){r(),m=h(g(null,b)),m.skipMap=e.skipMap,m.init(c,d,i,{enabled:!0}),n()}),f)}return e=e||{},mixin(f,{isBrowser:isBrowser,toUrl:function(a){var d,e=a.lastIndexOf("."),f=a.split("/")[0],g="."===f||".."===f;return-1!==e&&(!g||e>1)&&(d=a.substring(e,a.length),a=a.substring(0,e)),u.nameToUrl(c(a,b&&b.id,!0),d,!0)},defined:function(a){return hasProp(C,g(a,b,!1,!0).id)},specified:function(a){return a=g(a,b,!1,!0).id,hasProp(C,a)||hasProp(y,a)}}),b||(f.undef=function(a){k();var c=g(a,b,!0),e=getOwn(y,a);e.undefed=!0,d(a),delete C[a],delete D[c.url],delete A[a],eachReverse(B,function(b,c){b[0]===a&&B.splice(c,1)}),delete u.defQueueMap[a],e&&(e.events.defined&&(A[a]=e.events),l(a))}),f},enable:function(a){var b=getOwn(y,a.id);b&&h(a).enable()},completeLoad:function(a){var b,c,d,f=getOwn(x.shim,a)||{},g=f.exports;for(k();B.length;){if(c=B.shift(),null===c[0]){if(c[0]=a,b)break;b=!0}else c[0]===a&&(b=!0);o(c)}if(u.defQueueMap={},d=getOwn(y,a),!b&&!hasProp(C,a)&&d&&!d.inited){if(!(!x.enforceDefine||g&&getGlobal(g)))return e(a)?void 0:j(makeError("nodefine","No define call for "+a,null,[a]));o([a,f.deps||[],f.exportsFn])}n()},nameToUrl:function(a,b,c){var d,e,f,g,h,i,j,k=getOwn(x.pkgs,a);if(k&&(a=k),j=getOwn(E,a))return u.nameToUrl(j,b,c);if(req.jsExtRegExp.test(a))h=a+(b||"");else{for(d=x.paths,e=a.split("/"),f=e.length;f>0;f-=1)if(g=e.slice(0,f).join("/"),i=getOwn(d,g)){isArray(i)&&(i=i[0]),e.splice(0,f,i);break}h=e.join("/"),h+=b||(/^data\:|^blob\:|\?/.test(h)||c?"":".js"),h=("/"===h.charAt(0)||h.match(/^[\w\+\.\-]+:/)?"":x.baseUrl)+h}return x.urlArgs&&!/^blob\:/.test(h)?h+x.urlArgs(a,h):h},load:function(a,b){req.load(u,a,b)},execCb:function(a,b,c,d){return b.apply(d,c)},onScriptLoad:function(a){if("load"===a.type||readyRegExp.test((a.currentTarget||a.srcElement).readyState)){interactiveScript=null;var b=q(a);u.completeLoad(b.id)}},onScriptError:function(a){var b=q(a);if(!e(b.id)){var c=[];return eachProp(y,function(a,d){0!==d.indexOf("_@r")&&each(a.depMaps,function(a){return a.id===b.id?(c.push(d),!0):void 0})}),j(makeError("scripterror",'Script error for "'+b.id+(c.length?'", needed by: '+c.join(", "):'"'),a,[b.id]))}}},u.require=u.makeRequire(),u}function getInteractiveScript(){return interactiveScript&&"interactive"===interactiveScript.readyState?interactiveScript:(eachReverse(scripts(),function(a){return"interactive"===a.readyState?interactiveScript=a:void 0}),interactiveScript)}var req,s,head,baseElement,dataMain,src,interactiveScript,currentlyAddingScript,mainScript,subPath,version="2.2.0",commentRegExp=/(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/gm,cjsRequireRegExp=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,jsSuffixRegExp=/\.js$/,currDirRegExp=/^\.\//,op=Object.prototype,ostring=op.toString,hasOwn=op.hasOwnProperty,isBrowser=!("undefined"==typeof window||"undefined"==typeof navigator||!window.document),isWebWorker=!isBrowser&&"undefined"!=typeof importScripts,readyRegExp=isBrowser&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,defContextName="_",isOpera="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),contexts={},cfg={},globalDefQueue=[],useInteractive=!1;if("undefined"==typeof define){if("undefined"!=typeof requirejs){if(isFunction(requirejs))return;cfg=requirejs,requirejs=void 0}"undefined"==typeof require||isFunction(require)||(cfg=require,require=void 0),req=requirejs=function(a,b,c,d){var e,f,g=defContextName;return isArray(a)||"string"==typeof a||(f=a,isArray(b)?(a=b,b=c,c=d):a=[]),f&&f.context&&(g=f.context),e=getOwn(contexts,g),e||(e=contexts[g]=req.s.newContext(g)),f&&e.configure(f),e.require(a,b,c)},req.config=function(a){return req(a)},req.nextTick="undefined"!=typeof setTimeout?function(a){setTimeout(a,4)}:function(a){a()},require||(require=req),req.version=version,req.jsExtRegExp=/^\/|:|\?|\.js$/,req.isBrowser=isBrowser,s=req.s={contexts:contexts,newContext:newContext},req({}),each(["toUrl","undef","defined","specified"],function(a){req[a]=function(){var b=contexts[defContextName];return b.require[a].apply(b,arguments)}}),isBrowser&&(head=s.head=document.getElementsByTagName("head")[0],baseElement=document.getElementsByTagName("base")[0],baseElement&&(head=s.head=baseElement.parentNode)),req.onError=defaultOnError,req.createNode=function(a){var b=a.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script");return b.type=a.scriptType||"text/javascript",b.charset="utf-8",b.async=!0,b},req.load=function(a,b,c){var d,e=a&&a.config||{};if(isBrowser)return d=req.createNode(e,b,c),d.setAttribute("data-requirecontext",a.contextName),d.setAttribute("data-requiremodule",b),!d.attachEvent||d.attachEvent.toString&&d.attachEvent.toString().indexOf("[native code")<0||isOpera?(d.addEventListener("load",a.onScriptLoad,!1),d.addEventListener("error",a.onScriptError,!1)):(useInteractive=!0,d.attachEvent("onreadystatechange",a.onScriptLoad)),d.src=c,e.onNodeCreated&&e.onNodeCreated(d,e,b,c),currentlyAddingScript=d,baseElement?head.insertBefore(d,baseElement):head.appendChild(d),currentlyAddingScript=null,d;if(isWebWorker)try{setTimeout(function(){},0),importScripts(c),a.completeLoad(b)}catch(f){a.onError(makeError("importscripts","importScripts failed for "+b+" at "+c,f,[b]))}},isBrowser&&!cfg.skipDataMain&&eachReverse(scripts(),function(a){return head||(head=a.parentNode),dataMain=a.getAttribute("data-main"),dataMain?(mainScript=dataMain,cfg.baseUrl||-1!==mainScript.indexOf("!")||(src=mainScript.split("/"),mainScript=src.pop(),subPath=src.length?src.join("/")+"/":"./",cfg.baseUrl=subPath),mainScript=mainScript.replace(jsSuffixRegExp,""),req.jsExtRegExp.test(mainScript)&&(mainScript=dataMain),cfg.deps=cfg.deps?cfg.deps.concat(mainScript):[mainScript],!0):void 0}),define=function(a,b,c){var d,e;"string"!=typeof a&&(c=b,b=a,a=null),isArray(b)||(c=b,b=null),!b&&isFunction(c)&&(b=[],c.length&&(c.toString().replace(commentRegExp,commentReplace).replace(cjsRequireRegExp,function(a,c){b.push(c)}),b=(1===c.length?["require"]:["require","exports","module"]).concat(b))),useInteractive&&(d=currentlyAddingScript||getInteractiveScript(),d&&(a||(a=d.getAttribute("data-requiremodule")),e=contexts[d.getAttribute("data-requirecontext")])),e?(e.defQueue.push([a,b,c]),e.defQueueMap[a]=!0):globalDefQueue.push([a,b,c])},define.amd={jQuery:!0},req.exec=function(text){return eval(text)},req(cfg)}}(this); -//# sourceMappingURL=../../maps/libs/require.js.map \ No newline at end of file +var requirejs,require,define;!function(global){function commentReplace(e,t,i,r){return r||""}function isFunction(e){return"[object Function]"===ostring.call(e)}function isArray(e){return"[object Array]"===ostring.call(e)}function each(e,t){if(e){var i;for(i=0;i-1&&(!e[i]||!t(e[i],i,e));i-=1);}}function hasProp(e,t){return hasOwn.call(e,t)}function getOwn(e,t){return hasProp(e,t)&&e[t]}function eachProp(e,t){var i;for(i in e)if(hasProp(e,i)&&t(e[i],i))break}function mixin(e,t,i,r){return t&&eachProp(t,function(t,n){!i&&hasProp(e,n)||(!r||"object"!=typeof t||!t||isArray(t)||isFunction(t)||t instanceof RegExp?e[n]=t:(e[n]||(e[n]={}),mixin(e[n],t,i,r)))}),e}function bind(e,t){return function(){return t.apply(e,arguments)}}function scripts(){return document.getElementsByTagName("script")}function defaultOnError(e){throw e}function getGlobal(e){if(!e)return e;var t=global;return each(e.split("."),function(e){t=t[e]}),t}function makeError(e,t,i,r){var n=new Error(t+"\nhttp://requirejs.org/docs/errors.html#"+e);return n.requireType=e,n.requireModules=r,i&&(n.originalError=i),n}function newContext(e){function t(e){var t,i;for(t=0;t0&&(e.splice(t-1,2),t-=2)}}function i(e,i,r){var n,a,o,s,u,c,d,p,f,l,h,m=i&&i.split("/"),g=y.map,v=g&&g["*"];if(e&&(e=e.split("/"),c=e.length-1,y.nodeIdCompat&&jsSuffixRegExp.test(e[c])&&(e[c]=e[c].replace(jsSuffixRegExp,"")),"."===e[0].charAt(0)&&m&&(h=m.slice(0,m.length-1),e=h.concat(e)),t(e),e=e.join("/")),r&&g&&(m||v)){a=e.split("/");e:for(o=a.length;o>0;o-=1){if(u=a.slice(0,o).join("/"),m)for(s=m.length;s>0;s-=1)if((n=getOwn(g,m.slice(0,s).join("/")))&&(n=getOwn(n,u))){d=n,p=o;break e}!f&&v&&getOwn(v,u)&&(f=getOwn(v,u),l=o)}!d&&f&&(d=f,p=l),d&&(a.splice(0,p,d),e=a.join("/"))}return getOwn(y.pkgs,e)||e}function r(e){isBrowser&&each(scripts(),function(t){if(t.getAttribute("data-requiremodule")===e&&t.getAttribute("data-requirecontext")===q.contextName)return t.parentNode.removeChild(t),!0})}function n(e){var t=getOwn(y.paths,e);if(t&&isArray(t)&&t.length>1)return t.shift(),q.require.undef(e),q.makeRequire(null,{skipMap:!0})([e]),!0}function a(e){var t,i=e?e.indexOf("!"):-1;return i>-1&&(t=e.substring(0,i),e=e.substring(i+1,e.length)),[t,e]}function o(e,t,r,n){var o,s,u,c,d=null,p=t?t.name:null,f=e,l=!0,h="";return e||(l=!1,e="_@r"+(R+=1)),c=a(e),d=c[0],e=c[1],d&&(d=i(d,p,n),s=getOwn(j,d)),e&&(d?h=s&&s.normalize?s.normalize(e,function(e){return i(e,p,n)}):-1===e.indexOf("!")?i(e,p,n):e:(h=i(e,p,n),c=a(h),d=c[0],h=c[1],r=!0,o=q.nameToUrl(h))),u=!d||s||r?"":"_unnormalized"+(T+=1),{prefix:d,name:h,parentMap:t,unnormalized:!!u,url:o,originalName:f,isDefine:l,id:(d?d+"!"+h:h)+u}}function s(e){var t=e.id,i=getOwn(S,t);return i||(i=S[t]=new q.Module(e)),i}function u(e,t,i){var r=e.id,n=getOwn(S,r);!hasProp(j,r)||n&&!n.defineEmitComplete?(n=s(e),n.error&&"error"===t?i(n.error):n.on(t,i)):"defined"===t&&i(j[r])}function c(e,t){var i=e.requireModules,r=!1;t?t(e):(each(i,function(t){var i=getOwn(S,t);i&&(i.error=e,i.events.error&&(r=!0,i.emit("error",e)))}),r||req.onError(e))}function d(){globalDefQueue.length&&(each(globalDefQueue,function(e){var t=e[0];"string"==typeof t&&(q.defQueueMap[t]=!0),O.push(e)}),globalDefQueue=[])}function p(e){delete S[e],delete k[e]}function f(e,t,i){var r=e.map.id;e.error?e.emit("error",e.error):(t[r]=!0,each(e.depMaps,function(r,n){var a=r.id,o=getOwn(S,a);!o||e.depMatched[n]||i[a]||(getOwn(t,a)?(e.defineDep(n,j[a]),e.check()):f(o,t,i))}),i[r]=!0)}function l(){var e,t,i=1e3*y.waitSeconds,a=i&&q.startTime+i<(new Date).getTime(),o=[],s=[],u=!1,d=!0;if(!b){if(b=!0,eachProp(k,function(e){var i=e.map,c=i.id;if(e.enabled&&(i.isDefine||s.push(e),!e.error))if(!e.inited&&a)n(c)?(t=!0,u=!0):(o.push(c),r(c));else if(!e.inited&&e.fetched&&i.isDefine&&(u=!0,!i.prefix))return d=!1}),a&&o.length)return e=makeError("timeout","Load timeout for modules: "+o,null,o),e.contextName=q.contextName,c(e);d&&each(s,function(e){f(e,{},{})}),a&&!t||!u||!isBrowser&&!isWebWorker||w||(w=setTimeout(function(){w=0,l()},50)),b=!1}}function h(e){hasProp(j,e[0])||s(o(e[0],null,!0)).init(e[1],e[2])}function m(e,t,i,r){e.detachEvent&&!isOpera?r&&e.detachEvent(r,t):e.removeEventListener(i,t,!1)}function g(e){var t=e.currentTarget||e.srcElement;return m(t,q.onScriptLoad,"load","onreadystatechange"),m(t,q.onScriptError,"error"),{node:t,id:t&&t.getAttribute("data-requiremodule")}}function v(){var e;for(d();O.length;){if(e=O.shift(),null===e[0])return c(makeError("mismatch","Mismatched anonymous define() module: "+e[e.length-1]));h(e)}q.defQueueMap={}}var b,x,q,E,w,y={waitSeconds:7,baseUrl:"./",paths:{},bundles:{},pkgs:{},shim:{},config:{}},S={},k={},M={},O=[],j={},P={},A={},R=1,T=1;return E={require:function(e){return e.require?e.require:e.require=q.makeRequire(e.map)},exports:function(e){if(e.usingExports=!0,e.map.isDefine)return e.exports?j[e.map.id]=e.exports:e.exports=j[e.map.id]={}},module:function(e){return e.module?e.module:e.module={id:e.map.id,uri:e.map.url,config:function(){return getOwn(y.config,e.map.id)||{}},exports:e.exports||(e.exports={})}}},x=function(e){this.events=getOwn(M,e.id)||{},this.map=e,this.shim=getOwn(y.shim,e.id),this.depExports=[],this.depMaps=[],this.depMatched=[],this.pluginMaps={},this.depCount=0},x.prototype={init:function(e,t,i,r){r=r||{},this.inited||(this.factory=t,i?this.on("error",i):this.events.error&&(i=bind(this,function(e){this.emit("error",e)})),this.depMaps=e&&e.slice(0),this.errback=i,this.inited=!0,this.ignore=r.ignore,r.enabled||this.enabled?this.enable():this.check())},defineDep:function(e,t){this.depMatched[e]||(this.depMatched[e]=!0,this.depCount-=1,this.depExports[e]=t)},fetch:function(){if(!this.fetched){this.fetched=!0,q.startTime=(new Date).getTime();var e=this.map;if(!this.shim)return e.prefix?this.callPlugin():this.load();q.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],bind(this,function(){return e.prefix?this.callPlugin():this.load()}))}},load:function(){var e=this.map.url;P[e]||(P[e]=!0,q.load(this.map.id,e))},check:function(){if(this.enabled&&!this.enabling){var e,t,i=this.map.id,r=this.depExports,n=this.exports,a=this.factory;if(this.inited){if(this.error)this.emit("error",this.error);else if(!this.defining){if(this.defining=!0,this.depCount<1&&!this.defined){if(isFunction(a)){if(this.events.error&&this.map.isDefine||req.onError!==defaultOnError)try{n=q.execCb(i,a,r,n)}catch(t){e=t}else n=q.execCb(i,a,r,n);if(this.map.isDefine&&void 0===n&&(t=this.module,t?n=t.exports:this.usingExports&&(n=this.exports)),e)return e.requireMap=this.map,e.requireModules=this.map.isDefine?[this.map.id]:null,e.requireType=this.map.isDefine?"define":"require",c(this.error=e)}else n=a;if(this.exports=n,this.map.isDefine&&!this.ignore&&(j[i]=n,req.onResourceLoad)){var o=[];each(this.depMaps,function(e){o.push(e.normalizedMap||e)}),req.onResourceLoad(q,this.map,o)}p(i),this.defined=!0}this.defining=!1,this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else hasProp(q.defQueueMap,i)||this.fetch()}},callPlugin:function(){var e=this.map,t=e.id,r=o(e.prefix);this.depMaps.push(r),u(r,"defined",bind(this,function(r){var n,a,d,f=getOwn(A,this.map.id),l=this.map.name,h=this.map.parentMap?this.map.parentMap.name:null,m=q.makeRequire(e.parentMap,{enableBuildCallback:!0});return this.map.unnormalized?(r.normalize&&(l=r.normalize(l,function(e){return i(e,h,!0)})||""),a=o(e.prefix+"!"+l,this.map.parentMap),u(a,"defined",bind(this,function(e){this.map.normalizedMap=a,this.init([],function(){return e},null,{enabled:!0,ignore:!0})})),void((d=getOwn(S,a.id))&&(this.depMaps.push(a),this.events.error&&d.on("error",bind(this,function(e){this.emit("error",e)})),d.enable()))):f?(this.map.url=q.nameToUrl(f),void this.load()):(n=bind(this,function(e){this.init([],function(){return e},null,{enabled:!0})}),n.error=bind(this,function(e){this.inited=!0,this.error=e,e.requireModules=[t],eachProp(S,function(e){0===e.map.id.indexOf(t+"_unnormalized")&&p(e.map.id)}),c(e)}),n.fromText=bind(this,function(i,r){var a=e.name,u=o(a),d=useInteractive;r&&(i=r),d&&(useInteractive=!1),s(u),hasProp(y.config,t)&&(y.config[a]=y.config[t]);try{req.exec(i)}catch(e){return c(makeError("fromtexteval","fromText eval for "+t+" failed: "+e,e,[t]))}d&&(useInteractive=!0),this.depMaps.push(u),q.completeLoad(a),m([a],n)}),void r.load(e.name,m,n,y))})),q.enable(r,this),this.pluginMaps[r.id]=r},enable:function(){k[this.map.id]=this,this.enabled=!0,this.enabling=!0,each(this.depMaps,bind(this,function(e,t){var i,r,n;if("string"==typeof e){if(e=o(e,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap),this.depMaps[t]=e,n=getOwn(E,e.id))return void(this.depExports[t]=n(this));this.depCount+=1,u(e,"defined",bind(this,function(e){this.undefed||(this.defineDep(t,e),this.check())})),this.errback?u(e,"error",bind(this,this.errback)):this.events.error&&u(e,"error",bind(this,function(e){this.emit("error",e)}))}i=e.id,r=S[i],hasProp(E,i)||!r||r.enabled||q.enable(e,this)})),eachProp(this.pluginMaps,bind(this,function(e){var t=getOwn(S,e.id);t&&!t.enabled&&q.enable(e,this)})),this.enabling=!1,this.check()},on:function(e,t){var i=this.events[e];i||(i=this.events[e]=[]),i.push(t)},emit:function(e,t){each(this.events[e],function(e){e(t)}),"error"===e&&delete this.events[e]}},q={config:y,contextName:e,registry:S,defined:j,urlFetched:P,defQueue:O,defQueueMap:{},Module:x,makeModuleMap:o,nextTick:req.nextTick,onError:c,configure:function(e){if(e.baseUrl&&"/"!==e.baseUrl.charAt(e.baseUrl.length-1)&&(e.baseUrl+="/"),"string"==typeof e.urlArgs){var t=e.urlArgs;e.urlArgs=function(e,i){return(-1===i.indexOf("?")?"?":"&")+t}}var i=y.shim,r={paths:!0,bundles:!0,config:!0,map:!0};eachProp(e,function(e,t){r[t]?(y[t]||(y[t]={}),mixin(y[t],e,!0,!0)):y[t]=e}),e.bundles&&eachProp(e.bundles,function(e,t){each(e,function(e){e!==t&&(A[e]=t)})}),e.shim&&(eachProp(e.shim,function(e,t){isArray(e)&&(e={deps:e}),!e.exports&&!e.init||e.exportsFn||(e.exportsFn=q.makeShimExports(e)),i[t]=e}),y.shim=i),e.packages&&each(e.packages,function(e){var t,i;e="string"==typeof e?{name:e}:e,i=e.name,t=e.location,t&&(y.paths[i]=e.location),y.pkgs[i]=e.name+"/"+(e.main||"main").replace(currDirRegExp,"").replace(jsSuffixRegExp,"")}),eachProp(S,function(e,t){e.inited||e.map.unnormalized||(e.map=o(t,null,!0))}),(e.deps||e.callback)&&q.require(e.deps||[],e.callback)},makeShimExports:function(e){function t(){var t;return e.init&&(t=e.init.apply(global,arguments)),t||e.exports&&getGlobal(e.exports)}return t},makeRequire:function(t,n){function a(i,r,u){var d,p,f;return n.enableBuildCallback&&r&&isFunction(r)&&(r.__requireJsBuild=!0),"string"==typeof i?isFunction(r)?c(makeError("requireargs","Invalid require call"),u):t&&hasProp(E,i)?E[i](S[t.id]):req.get?req.get(q,i,t,a):(p=o(i,t,!1,!0),d=p.id,hasProp(j,d)?j[d]:c(makeError("notloaded",'Module name "'+d+'" has not been loaded yet for context: '+e+(t?"":". Use require([])")))):(v(),q.nextTick(function(){v(),f=s(o(null,t)),f.skipMap=n.skipMap,f.init(i,r,u,{enabled:!0}),l()}),a)}return n=n||{},mixin(a,{isBrowser:isBrowser,toUrl:function(e){var r,n=e.lastIndexOf("."),a=e.split("/")[0],o="."===a||".."===a;return-1!==n&&(!o||n>1)&&(r=e.substring(n,e.length),e=e.substring(0,n)),q.nameToUrl(i(e,t&&t.id,!0),r,!0)},defined:function(e){return hasProp(j,o(e,t,!1,!0).id)},specified:function(e){return e=o(e,t,!1,!0).id,hasProp(j,e)||hasProp(S,e)}}),t||(a.undef=function(e){d();var i=o(e,t,!0),n=getOwn(S,e);n.undefed=!0,r(e),delete j[e],delete P[i.url],delete M[e],eachReverse(O,function(t,i){t[0]===e&&O.splice(i,1)}),delete q.defQueueMap[e],n&&(n.events.defined&&(M[e]=n.events),p(e))}),a},enable:function(e){getOwn(S,e.id)&&s(e).enable()},completeLoad:function(e){var t,i,r,a=getOwn(y.shim,e)||{},o=a.exports;for(d();O.length;){if(i=O.shift(),null===i[0]){if(i[0]=e,t)break;t=!0}else i[0]===e&&(t=!0);h(i)}if(q.defQueueMap={},r=getOwn(S,e),!t&&!hasProp(j,e)&&r&&!r.inited){if(!(!y.enforceDefine||o&&getGlobal(o)))return n(e)?void 0:c(makeError("nodefine","No define call for "+e,null,[e]));h([e,a.deps||[],a.exportsFn])}l()},nameToUrl:function(e,t,i){var r,n,a,o,s,u,c,d=getOwn(y.pkgs,e);if(d&&(e=d),c=getOwn(A,e))return q.nameToUrl(c,t,i);if(req.jsExtRegExp.test(e))s=e+(t||"");else{for(r=y.paths,n=e.split("/"),a=n.length;a>0;a-=1)if(o=n.slice(0,a).join("/"),u=getOwn(r,o)){isArray(u)&&(u=u[0]),n.splice(0,a,u);break}s=n.join("/"),s+=t||(/^data\:|^blob\:|\?/.test(s)||i?"":".js"),s=("/"===s.charAt(0)||s.match(/^[\w\+\.\-]+:/)?"":y.baseUrl)+s}return y.urlArgs&&!/^blob\:/.test(s)?s+y.urlArgs(e,s):s},load:function(e,t){req.load(q,e,t)},execCb:function(e,t,i,r){return t.apply(r,i)},onScriptLoad:function(e){if("load"===e.type||readyRegExp.test((e.currentTarget||e.srcElement).readyState)){interactiveScript=null;var t=g(e);q.completeLoad(t.id)}},onScriptError:function(e){var t=g(e);if(!n(t.id)){var i=[];return eachProp(S,function(e,r){0!==r.indexOf("_@r")&&each(e.depMaps,function(e){if(e.id===t.id)return i.push(r),!0})}),c(makeError("scripterror",'Script error for "'+t.id+(i.length?'", needed by: '+i.join(", "):'"'),e,[t.id]))}}},q.require=q.makeRequire(),q}function getInteractiveScript(){return interactiveScript&&"interactive"===interactiveScript.readyState?interactiveScript:(eachReverse(scripts(),function(e){if("interactive"===e.readyState)return interactiveScript=e}),interactiveScript)}var req,s,head,baseElement,dataMain,src,interactiveScript,currentlyAddingScript,mainScript,subPath,version="2.2.0",commentRegExp=/(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/gm,cjsRequireRegExp=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,jsSuffixRegExp=/\.js$/,currDirRegExp=/^\.\//,op=Object.prototype,ostring=op.toString,hasOwn=op.hasOwnProperty,isBrowser=!("undefined"==typeof window||"undefined"==typeof navigator||!window.document),isWebWorker=!isBrowser&&"undefined"!=typeof importScripts,readyRegExp=isBrowser&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,defContextName="_",isOpera="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),contexts={},cfg={},globalDefQueue=[],useInteractive=!1;if(void 0===define){if(void 0!==requirejs){if(isFunction(requirejs))return;cfg=requirejs,requirejs=void 0}void 0===require||isFunction(require)||(cfg=require,require=void 0),req=requirejs=function(e,t,i,r){var n,a,o="_";return isArray(e)||"string"==typeof e||(a=e,isArray(t)?(e=t,t=i,i=r):e=[]),a&&a.context&&(o=a.context),n=getOwn(contexts,o),n||(n=contexts[o]=req.s.newContext(o)),a&&n.configure(a),n.require(e,t,i)},req.config=function(e){return req(e)},req.nextTick="undefined"!=typeof setTimeout?function(e){setTimeout(e,4)}:function(e){e()},require||(require=req),req.version="2.2.0",req.jsExtRegExp=/^\/|:|\?|\.js$/,req.isBrowser=isBrowser,s=req.s={contexts:contexts,newContext:newContext},req({}),each(["toUrl","undef","defined","specified"],function(e){req[e]=function(){var t=contexts._;return t.require[e].apply(t,arguments)}}),isBrowser&&(head=s.head=document.getElementsByTagName("head")[0],(baseElement=document.getElementsByTagName("base")[0])&&(head=s.head=baseElement.parentNode)),req.onError=defaultOnError,req.createNode=function(e,t,i){var r=e.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script");return r.type=e.scriptType||"text/javascript",r.charset="utf-8",r.async=!0,r},req.load=function(e,t,i){var r,n=e&&e.config||{};if(isBrowser)return r=req.createNode(n,t,i),r.setAttribute("data-requirecontext",e.contextName),r.setAttribute("data-requiremodule",t),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||isOpera?(r.addEventListener("load",e.onScriptLoad,!1),r.addEventListener("error",e.onScriptError,!1)):(useInteractive=!0,r.attachEvent("onreadystatechange",e.onScriptLoad)),r.src=i,n.onNodeCreated&&n.onNodeCreated(r,n,t,i),currentlyAddingScript=r,baseElement?head.insertBefore(r,baseElement):head.appendChild(r),currentlyAddingScript=null,r;if(isWebWorker)try{setTimeout(function(){},0),importScripts(i),e.completeLoad(t)}catch(r){e.onError(makeError("importscripts","importScripts failed for "+t+" at "+i,r,[t]))}},isBrowser&&!cfg.skipDataMain&&eachReverse(scripts(),function(e){if(head||(head=e.parentNode),dataMain=e.getAttribute("data-main"))return mainScript=dataMain,cfg.baseUrl||-1!==mainScript.indexOf("!")||(src=mainScript.split("/"),mainScript=src.pop(),subPath=src.length?src.join("/")+"/":"./",cfg.baseUrl=subPath),mainScript=mainScript.replace(jsSuffixRegExp,""),req.jsExtRegExp.test(mainScript)&&(mainScript=dataMain),cfg.deps=cfg.deps?cfg.deps.concat(mainScript):[mainScript],!0}),define=function(e,t,i){var r,n;"string"!=typeof e&&(i=t,t=e,e=null),isArray(t)||(i=t,t=null),!t&&isFunction(i)&&(t=[],i.length&&(i.toString().replace(/(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/gm,commentReplace).replace(/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,function(e,i){t.push(i)}),t=(1===i.length?["require"]:["require","exports","module"]).concat(t))),useInteractive&&(r=currentlyAddingScript||getInteractiveScript())&&(e||(e=r.getAttribute("data-requiremodule")),n=contexts[r.getAttribute("data-requirecontext")]),n?(n.defQueue.push([e,t,i]),n.defQueueMap[e]=!0):globalDefQueue.push([e,t,i])},define.amd={jQuery:!0},req.exec=function(text){return eval(text)},req(cfg)}}(this); +//# sourceMappingURL=../../maps/libs/require.js.map diff --git a/static/scripts/libs/showdown.js b/static/scripts/libs/showdown.js deleted file mode 100644 index 358ce7d6e1c..00000000000 --- a/static/scripts/libs/showdown.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){function a(a){"use strict";var b={omitExtraWLInCodeBlocks:{defaultValue:!1,describe:"Omit the default extra whiteline added to code blocks",type:"boolean"},noHeaderId:{defaultValue:!1,describe:"Turn on/off generated header id",type:"boolean"},prefixHeaderId:{defaultValue:!1,describe:"Specify a prefix to generated header ids",type:"string"},ghCompatibleHeaderId:{defaultValue:!1,describe:"Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)",type:"boolean"},headerLevelStart:{defaultValue:!1,describe:"The header blocks level start",type:"integer"},parseImgDimensions:{defaultValue:!1,describe:"Turn on/off image dimension parsing",type:"boolean"},simplifiedAutoLink:{defaultValue:!1,describe:"Turn on/off GFM autolink style",type:"boolean"},excludeTrailingPunctuationFromURLs:{defaultValue:!1,describe:"Excludes trailing punctuation from links generated with autoLinking",type:"boolean"},literalMidWordUnderscores:{defaultValue:!1,describe:"Parse midword underscores as literal underscores",type:"boolean"},strikethrough:{defaultValue:!1,describe:"Turn on/off strikethrough support",type:"boolean"},tables:{defaultValue:!1,describe:"Turn on/off tables support",type:"boolean"},tablesHeaderId:{defaultValue:!1,describe:"Add an id to table headers",type:"boolean"},ghCodeBlocks:{defaultValue:!0,describe:"Turn on/off GFM fenced code blocks support",type:"boolean"},tasklists:{defaultValue:!1,describe:"Turn on/off GFM tasklist support",type:"boolean"},smoothLivePreview:{defaultValue:!1,describe:"Prevents weird effects in live previews due to incomplete input",type:"boolean"},smartIndentationFix:{defaultValue:!1,description:"Tries to smartly fix indentation in es6 strings",type:"boolean"},disableForced4SpacesIndentedSublists:{defaultValue:!1,description:"Disables the requirement of indenting nested sublists by 4 spaces",type:"boolean"},simpleLineBreaks:{defaultValue:!1,description:"Parses simple line breaks as
          (GFM Style)",type:"boolean"},requireSpaceBeforeHeadingText:{defaultValue:!1,description:"Makes adding a space between `#` and the header text mandatory (GFM Style)",type:"boolean"},ghMentions:{defaultValue:!1,description:"Enables github @mentions",type:"boolean"}};if(a===!1)return JSON.parse(JSON.stringify(b));var c={};for(var d in b)b.hasOwnProperty(d)&&(c[d]=b[d].defaultValue);return c}function b(){"use strict";var b=a(!0),c={};for(var d in b)b.hasOwnProperty(d)&&(c[d]=!0);return c}function c(a,b){"use strict";var c=b?"Error in "+b+" extension->":"Error in unnamed extension",d={valid:!0,error:""};e.helper.isArray(a)||(a=[a]);for(var f=0;f-1,l=new RegExp(b+"|"+c,"g"+j.replace(/g/g,"")),m=new RegExp(b,j.replace(/g/g,"")),n=[];do for(e=0;g=l.exec(a);)if(m.test(g[0]))e++||(f=l.lastIndex,h=f-g[0].length);else if(e&&!--e){i=g.index+g[0].length;var o={left:{start:h,end:f},match:{start:f,end:g.index},right:{start:g.index,end:i},wholeMatch:{start:h,end:i}};if(n.push(o),!k)return n}while(e&&(l.lastIndex=f));return n};e.helper.matchRecursiveRegExp=function(a,b,c,d){"use strict";for(var e=k(a,b,c,d),f=[],g=0;g0){var l=[];0!==h[0].wholeMatch.start&&l.push(a.slice(0,h[0].wholeMatch.start));for(var m=0;j>m;++m)l.push(b(a.slice(h[m].wholeMatch.start,h[m].wholeMatch.end),a.slice(h[m].match.start,h[m].match.end),a.slice(h[m].left.start,h[m].left.end),a.slice(h[m].right.start,h[m].right.end))),j-1>m&&l.push(a.slice(h[m].wholeMatch.end,h[m+1].wholeMatch.start));h[j-1].wholeMatch.end-1))return a;m=""}else m=c.gUrls[l],e.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=e.helper.escapeCharacters(m,"*_",!1);var o='"};return a=a.replace(/(\[((?:\[[^\]]*]|[^\[\]])*)][ ]?(?:\n[ ]*)?\[(.*?)])()()()()/g,d),a=a.replace(/(\[((?:\[[^\]]*]|[^\[\]])*)]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d),a=a.replace(/(\[([^\[\]]+)])()()()()()/g,d),b.ghMentions&&(a=a.replace(/(^|\s)(\\)?(@([a-z\d\-]+))(?=[.!?;,[\]()]|\s|$)/gim,function(a,b,c,d,e){return"\\"===c?b+d:b+''+d+""})),a=c.converter._dispatch("anchors.after",a,b,c)}),e.subParser("autoLinks",function(a,b,c){"use strict";function d(a,c,d,e,f){var g=c,h="";return/^www\./i.test(c)&&(c=c.replace(/^www\./i,"http://www.")),b.excludeTrailingPunctuationFromURLs&&f&&(h=f),''+g+""+h}function f(a,b){var c=e.subParser("unescapeSpecialChars")(b);return e.subParser("encodeEmailAddress")(c)}a=c.converter._dispatch("autoLinks.before",a,b,c);var g=/\b(((https?|ftp|dict):\/\/|www\.)[^'">\s]+\.[^'">\s]+)()(?=\s|$)(?!["<>])/gi,h=/\b(((https?|ftp|dict):\/\/|www\.)[^'">\s]+\.[^'">\s]+?)([.!?()]?)(?=\s|$)(?!["<>])/gi,i=/<(((https?|ftp|dict):\/\/|www\.)[^'">\s]+)>/gi,j=/(?:^|\s)([A-Za-z0-9!#$%&'*+-\/=?^_`{|}~.]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)(?:$|\s)/gi,k=/<(?:mailto:)?([-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi;return a=a.replace(i,d),a=a.replace(k,f),b.simplifiedAutoLink&&(a=b.excludeTrailingPunctuationFromURLs?a.replace(h,d):a.replace(g,d),a=a.replace(j,f)),a=c.converter._dispatch("autoLinks.after",a,b,c)}),e.subParser("blockGamut",function(a,b,c){"use strict";a=c.converter._dispatch("blockGamut.before",a,b,c),a=e.subParser("blockQuotes")(a,b,c),a=e.subParser("headers")(a,b,c);var d=e.subParser("hashBlock")("
          ",b,c);return a=a.replace(/^ {0,2}( ?-){3,}[ \t]*$/gm,d),a=a.replace(/^ {0,2}( ?\*){3,}[ \t]*$/gm,d),a=a.replace(/^ {0,2}( ?_){3,}[ \t]*$/gm,d),a=e.subParser("lists")(a,b,c),a=e.subParser("codeBlocks")(a,b,c),a=e.subParser("tables")(a,b,c),a=e.subParser("hashHTMLBlocks")(a,b,c),a=e.subParser("paragraphs")(a,b,c),a=c.converter._dispatch("blockGamut.after",a,b,c)}),e.subParser("blockQuotes",function(a,b,c){"use strict";return a=c.converter._dispatch("blockQuotes.before",a,b,c),a=a.replace(/((^ {0,3}>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(a,d){var f=d;return f=f.replace(/^[ \t]*>[ \t]?/gm,"~0"),f=f.replace(/~0/g,""),f=f.replace(/^[ \t]+$/gm,""),f=e.subParser("githubCodeBlocks")(f,b,c),f=e.subParser("blockGamut")(f,b,c),f=f.replace(/(^|\n)/g,"$1 "),f=f.replace(/(\s*
          [^\r]+?<\/pre>)/gm,function(a,b){var c=b;return c=c.replace(/^  /gm,"~0"),c=c.replace(/~0/g,"")}),e.subParser("hashBlock")("
          \n"+f+"\n
          ",b,c)}),a=c.converter._dispatch("blockQuotes.after",a,b,c)}),e.subParser("codeBlocks",function(a,b,c){"use strict";a=c.converter._dispatch("codeBlocks.before",a,b,c),a+="~0";var d=/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g;return a=a.replace(d,function(a,d,f){var g=d,h=f,i="\n";return g=e.subParser("outdent")(g),g=e.subParser("encodeCode")(g),g=e.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),b.omitExtraWLInCodeBlocks&&(i=""),g="
          "+g+i+"
          ",e.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,""),a=c.converter._dispatch("codeBlocks.after",a,b,c)}),e.subParser("codeSpans",function(a,b,c){"use strict";return a=c.converter._dispatch("codeSpans.before",a,b,c),"undefined"==typeof a&&(a=""),a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,d){var f=d;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=e.subParser("encodeCode")(f),b+""+f+""}),a=c.converter._dispatch("codeSpans.after",a,b,c)}),e.subParser("detab",function(a){"use strict";return a=a.replace(/\t(?=\t)/g," "),a=a.replace(/\t/g,"~A~B"),a=a.replace(/~B(.+?)~A/g,function(a,b){for(var c=b,d=4-c.length%4,e=0;d>e;e++)c+=" ";return c}),a=a.replace(/~A/g," "),a=a.replace(/~B/g,"")}),e.subParser("encodeAmpsAndAngles",function(a){"use strict";return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),e.subParser("encodeBackslashEscapes",function(a){"use strict";return a=a.replace(/\\(\\)/g,e.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,e.helper.escapeCharactersCallback)}),e.subParser("encodeCode",function(a){"use strict";return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=e.helper.escapeCharacters(a,"*_{}[]\\",!1)}),e.subParser("encodeEmailAddress",function(a){"use strict";var b=[function(a){return"&#"+a.charCodeAt(0)+";"},function(a){return"&#x"+a.charCodeAt(0).toString(16)+";"},function(a){return a}];return a="mailto:"+a,a=a.replace(/./g,function(a){if("@"===a)a=b[Math.floor(2*Math.random())](a);else if(":"!==a){var c=Math.random();a=c>.9?b[2](a):c>.45?b[1](a):b[0](a)}return a}),a=''+a+"",a=a.replace(/">.+:/g,'">')}),e.subParser("escapeSpecialCharsWithinTagAttributes",function(a){"use strict";var b=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;return a=a.replace(b,function(a){var b=a.replace(/(.)<\/?code>(?=.)/g,"$1`");return b=e.helper.escapeCharacters(b,"\\`*_",!1)})}),e.subParser("githubCodeBlocks",function(a,b,c){"use strict";return b.ghCodeBlocks?(a=c.converter._dispatch("githubCodeBlocks.before",a,b,c),a+="~0",a=a.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,function(a,d,f){var g=b.omitExtraWLInCodeBlocks?"":"\n";return f=e.subParser("encodeCode")(f),f=e.subParser("detab")(f),f=f.replace(/^\n+/g,""),f=f.replace(/\n+$/g,""),f="
          "+f+g+"
          ",f=e.subParser("hashBlock")(f,b,c),"\n\n~G"+(c.ghCodeBlocks.push({text:a,codeblock:f})-1)+"G\n\n"}),a=a.replace(/~0/,""),c.converter._dispatch("githubCodeBlocks.after",a,b,c)):a}),e.subParser("hashBlock",function(a,b,c){"use strict";return a=a.replace(/(^\n+|\n+$)/g,""),"\n\n~K"+(c.gHtmlBlocks.push(a)-1)+"K\n\n"}),e.subParser("hashElement",function(a,b,c){"use strict";return function(a,b){var d=b;return d=d.replace(/\n\n/g,"\n"),d=d.replace(/^\n/,""),d=d.replace(/\n+$/g,""),d="\n\n~K"+(c.gHtmlBlocks.push(d)-1)+"K\n\n"}}),e.subParser("hashHTMLBlocks",function(a,b,c){"use strict";for(var d=["pre","div","h1","h2","h3","h4","h5","h6","blockquote","table","dl","ol","ul","script","noscript","form","fieldset","iframe","math","style","section","header","footer","nav","article","aside","address","audio","canvas","figure","hgroup","output","video","p"],f=function(a,b,d,e){var f=a;return-1!==d.search(/\bmarkdown\b/)&&(f=d+c.converter.makeHtml(b)+e),"\n\n~K"+(c.gHtmlBlocks.push(f)-1)+"K\n\n"},g=0;g]*>","","gim");return a=a.replace(/(\n {0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=e.helper.replaceRecursiveRegExp(a,function(a){return"\n\n~K"+(c.gHtmlBlocks.push(a)-1)+"K\n\n"},"^ {0,3}","gm"),a=a.replace(/(?:\n\n)( {0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c))}),e.subParser("hashHTMLSpans",function(a,b,c){"use strict";for(var d=e.helper.matchRecursiveRegExp(a,"]*>","","gi"),f=0;f]*>\\s*]*>","^ {0,3}\\s*
          ","gim")}),e.subParser("headers",function(a,b,c){"use strict";function d(a){var b,d;return d=h?a.replace(/ /g,"-").replace(/&/g,"").replace(/~T/g,"").replace(/~D/g,"").replace(/[&+$,\/:;=?@"#{}|^~\[\]`\\*)(%.!'<>]/g,"").toLowerCase():a.replace(/[^\w]/g,"").toLowerCase(),c.hashLinkCounts[d]?b=d+"-"+c.hashLinkCounts[d]++:(b=d,c.hashLinkCounts[d]=1),f===!0&&(f="section"),e.helper.isString(f)?f+b:b}a=c.converter._dispatch("headers.before",a,b,c);var f=b.prefixHeaderId,g=isNaN(parseInt(b.headerLevelStart))?1:parseInt(b.headerLevelStart),h=b.ghCompatibleHeaderId,i=b.smoothLivePreview?/^(.+)[ \t]*\n={2,}[ \t]*\n+/gm:/^(.+)[ \t]*\n=+[ \t]*\n+/gm,j=b.smoothLivePreview?/^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm:/^(.+)[ \t]*\n-+[ \t]*\n+/gm;a=a.replace(i,function(a,f){var h=e.subParser("spanGamut")(f,b,c),i=b.noHeaderId?"":' id="'+d(f)+'"',j=g,k=""+h+"";return e.subParser("hashBlock")(k,b,c)}),a=a.replace(j,function(a,f){var h=e.subParser("spanGamut")(f,b,c),i=b.noHeaderId?"":' id="'+d(f)+'"',j=g+1,k=""+h+"";return e.subParser("hashBlock")(k,b,c)});var k=b.requireSpaceBeforeHeadingText?/^(#{1,6})[ \t]+(.+?)[ \t]*#*\n+/gm:/^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm;return a=a.replace(k,function(a,f,h){var i=e.subParser("spanGamut")(h,b,c),j=b.noHeaderId?"":' id="'+d(h)+'"',k=g-1+f.length,l=""+i+"";return e.subParser("hashBlock")(l,b,c)}),a=c.converter._dispatch("headers.after",a,b,c)}),e.subParser("images",function(a,b,c){"use strict";function d(a,b,d,f,g,h,i,j){var k=c.gUrls,l=c.gTitles,m=c.gDimensions;if(d=d.toLowerCase(),j||(j=""),""===f||null===f){if((""===d||null===d)&&(d=b.toLowerCase().replace(/ ?\n/g," ")),f="#"+d,e.helper.isUndefined(k[d]))return a;f=k[d],e.helper.isUndefined(l[d])||(j=l[d]),e.helper.isUndefined(m[d])||(g=m[d].width,h=m[d].height)}b=b.replace(/"/g,"""),b=e.helper.escapeCharacters(b,"*_",!1),f=e.helper.escapeCharacters(f,"*_",!1);var n=''+b+'?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(['"])(.*?)\6[ \t]*)?\)/g,g=/!\[([^\]]*?)] ?(?:\n *)?\[(.*?)]()()()()()/g;return a=a.replace(g,d),a=a.replace(f,d),a=c.converter._dispatch("images.after",a,b,c)}),e.subParser("italicsAndBold",function(a,b,c){"use strict";return a=c.converter._dispatch("italicsAndBold.before",a,b,c),b.literalMidWordUnderscores?(a=a.replace(/(^|\s|>|\b)__(?=\S)([\s\S]+?)__(?=\b|<|\s|$)/gm,"$1$2"),a=a.replace(/(^|\s|>|\b)_(?=\S)([\s\S]+?)_(?=\b|<|\s|$)/gm,"$1$2"),a=a.replace(/(\*\*)(?=\S)([^\r]*?\S[*]*)\1/g,"$2"),a=a.replace(/(\*)(?=\S)([^\r]*?\S)\1/g,"$2")):(a=a.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"$2"),a=a.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"$2")),a=c.converter._dispatch("italicsAndBold.after",a,b,c)}),e.subParser("lists",function(a,b,c){"use strict";function d(a,d){c.gListLevel++,a=a.replace(/\n{2,}$/,"\n"),a+="~0";var f=/(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(~0| {0,3}([*+-]|\d+[.])[ \t]+))/gm,g=/\n[ \t]*\n(?!~0)/.test(a);return b.disableForced4SpacesIndentedSublists&&(f=/(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm),a=a.replace(f,function(a,d,f,h,i,j,k){k=k&&""!==k.trim();var l=e.subParser("outdent")(i,b,c),m="";return j&&b.tasklists&&(m=' class="task-list-item" style="list-style-type: none;"',l=l.replace(/^[ \t]*\[(x|X| )?]/m,function(){var a='-1?(l=e.subParser("githubCodeBlocks")(l,b,c),l=e.subParser("blockGamut")(l,b,c)):(l=e.subParser("lists")(l,b,c),l=l.replace(/\n$/,""),l=e.subParser("hashHTMLBlocks")(l,b,c),l=l.replace(/\n\n+/g,"\n\n"),l=l.replace(/\n\n/g,"~B"),l=g?e.subParser("paragraphs")(l,b,c):e.subParser("spanGamut")(l,b,c),l=l.replace(/~B/g,"\n\n")),l=l.replace("~A",""),l=""+l+"\n"}),a=a.replace(/~0/g,""),c.gListLevel--,d&&(a=a.replace(/\s+$/,"")),a}function f(a,c,e){var f=b.disableForced4SpacesIndentedSublists?/^ ?\d+\.[ \t]/gm:/^ {0,3}\d+\.[ \t]/gm,g=b.disableForced4SpacesIndentedSublists?/^ ?[*+-][ \t]/gm:/^ {0,3}[*+-][ \t]/gm,h="ul"===c?f:g,i="";return-1!==a.search(h)?!function a(b){var j=b.search(h);-1!==j?(i+="\n<"+c+">\n"+d(b.slice(0,j),!!e)+"\n",c="ul"===c?"ol":"ul",h="ul"===c?f:g,a(b.slice(j))):i+="\n<"+c+">\n"+d(b,!!e)+"\n"}(a):i="\n<"+c+">\n"+d(a,!!e)+"\n",i}return a=c.converter._dispatch("lists.before",a,b,c),a+="~0",a=c.gListLevel?a.replace(/^(( {0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm,function(a,b,c){var d=c.search(/[*+-]/g)>-1?"ul":"ol";return f(b,d,!0)}):a.replace(/(\n\n|^\n?)(( {0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm,function(a,b,c,d){var e=d.search(/[*+-]/g)>-1?"ul":"ol";return f(c,e,!1)}),a=a.replace(/~0/,""),a=c.converter._dispatch("lists.after",a,b,c)}),e.subParser("outdent",function(a){"use strict";return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),e.subParser("paragraphs",function(a,b,c){"use strict";a=c.converter._dispatch("paragraphs.before",a,b,c),a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,"");for(var d=a.split(/\n{2,}/g),f=[],g=d.length,h=0;g>h;h++){var i=d[h];i.search(/~(K|G)(\d+)\1/g)>=0?f.push(i):(i=e.subParser("spanGamut")(i,b,c),i=i.replace(/^([ \t]*)/g,"

          "),i+="

          ",f.push(i))}for(g=f.length,h=0;g>h;h++){for(var j="",k=f[h],l=!1;k.search(/~(K|G)(\d+)\1/)>=0;){var m=RegExp.$1,n=RegExp.$2;j="K"===m?c.gHtmlBlocks[n]:l?e.subParser("encodeCode")(c.ghCodeBlocks[n].text):c.ghCodeBlocks[n].codeblock,j=j.replace(/\$/g,"$$$$"),k=k.replace(/(\n\n)?~(K|G)\d+\2(\n\n)?/,j),/^]*>\s*]*>/.test(k)&&(l=!0)}f[h]=k}return a=f.join("\n"),a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,""),c.converter._dispatch("paragraphs.after",a,b,c)}),e.subParser("runExtension",function(a,b,c,d){"use strict";if(a.filter)b=a.filter(b,d.converter,c);else if(a.regex){var e=a.regex;!e instanceof RegExp&&(e=new RegExp(e,"g")),b=b.replace(e,a.replace)}return b}),e.subParser("spanGamut",function(a,b,c){"use strict";return a=c.converter._dispatch("spanGamut.before",a,b,c),a=e.subParser("codeSpans")(a,b,c),a=e.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=e.subParser("encodeBackslashEscapes")(a,b,c),a=e.subParser("images")(a,b,c),a=e.subParser("anchors")(a,b,c),a=e.subParser("autoLinks")(a,b,c),a=e.subParser("encodeAmpsAndAngles")(a,b,c),a=e.subParser("italicsAndBold")(a,b,c),a=e.subParser("strikethrough")(a,b,c),a=b.simpleLineBreaks?a.replace(/\n/g,"
          \n"):a.replace(/ +\n/g,"
          \n"),a=c.converter._dispatch("spanGamut.after",a,b,c)}),e.subParser("strikethrough",function(a,b,c){"use strict";return b.strikethrough&&(a=c.converter._dispatch("strikethrough.before",a,b,c),a=a.replace(/(?:~T){2}([\s\S]+?)(?:~T){2}/g,"$1"),a=c.converter._dispatch("strikethrough.after",a,b,c)),a}),e.subParser("stripBlankLines",function(a){"use strict";return a.replace(/^[ \t]+$/gm,"")}),e.subParser("stripLinkDefinitions",function(a,b,c){"use strict";var d=/^ {0,3}\[(.+)]:[ \t]*\n?[ \t]*?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=~0))/gm;return a+="~0",a=a.replace(d,function(a,d,f,g,h,i,j){return d=d.toLowerCase(),c.gUrls[d]=e.subParser("encodeAmpsAndAngles")(f),i?i+j:(j&&(c.gTitles[d]=j.replace(/"|'/g,""")),b.parseImgDimensions&&g&&h&&(c.gDimensions[d]={width:g,height:h}),"")}),a=a.replace(/~0/,"")}),e.subParser("tables",function(a,b,c){"use strict";function d(a){return/^:[ \t]*--*$/.test(a)?' style="text-align:left;"':/^--*[ \t]*:[ \t]*$/.test(a)?' style="text-align:right;"':/^:[ \t]*--*[ \t]*:$/.test(a)?' style="text-align:center;"':""}function f(a,d){var f="";return a=a.trim(),b.tableHeaderId&&(f=' id="'+a.replace(/ /g,"_").toLowerCase()+'"'),a=e.subParser("spanGamut")(a,b,c),""+a+"\n"}function g(a,d){var f=e.subParser("spanGamut")(a,b,c);return""+f+"\n"}function h(a,b){for(var c="\n\n\n",d=a.length,e=0;d>e;++e)c+=a[e];for(c+="\n\n\n",e=0;e\n";for(var f=0;d>f;++f)c+=b[e][f];c+="\n"}return c+="\n
          \n"}if(!b.tables)return a;var i=/^ {0,3}\|?.+\|.+\n[ \t]{0,3}\|?[ \t]*:?[ \t]*(?:-|=){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:-|=){2,}[\s\S]+?(?:\n\n|~0)/gm;return a=c.converter._dispatch("tables.before",a,b,c),a=a.replace(i,function(a){var b,c=a.split("\n");for(b=0;b×",newestOnTop:!0}}function i(a){o&&o(a)}function j(b){function c(b){return!a(":focus",j).length||b?j[f.hideMethod]({duration:f.hideDuration,easing:f.hideEasing,complete:function(){m(j),f.onHidden&&f.onHidden(),s.state="hidden",s.endTime=new Date,i(s)}}):void 0}function d(){(f.timeOut>0||f.extendedTimeOut>0)&&(h=setTimeout(c,f.extendedTimeOut))}function e(){clearTimeout(h),j.stop(!0,!0)[f.showMethod]({duration:f.showDuration,easing:f.showEasing})}var f=l(),g=b.iconClass||f.iconClass;"undefined"!=typeof b.optionsOverride&&(f=a.extend(f,b.optionsOverride),g=b.optionsOverride.iconClass||g),q++,n=k(f);var h=null,j=a("
          "),o=a("
          "),p=a("
          "),r=a(f.closeHtml),s={toastId:q,state:"visible",startTime:new Date,options:f,map:b};return b.iconClass&&j.addClass(f.toastClass).addClass(g),b.title&&(o.append(b.title).addClass(f.titleClass),j.append(o)),b.message&&(p.append(b.message).addClass(f.messageClass),j.append(p)),f.closeButton&&(r.addClass("toast-close-button"),j.prepend(r)),j.hide(),f.newestOnTop?n.prepend(j):n.append(j),j[f.showMethod]({duration:f.showDuration,easing:f.showEasing,complete:f.onShown}),f.timeOut>0&&(h=setTimeout(c,f.timeOut)),j.hover(e,d),!f.onclick&&f.tapToDismiss&&j.click(c),f.closeButton&&r&&r.click(function(a){a.stopPropagation(),c(!0)}),f.onclick&&j.click(function(){f.onclick(),c()}),i(s),f.debug&&console&&console.log(s),j}function k(b){return b||(b=l()),n=a("#"+b.containerId),n.length?n:(n=a("
          ").attr("id",b.containerId).addClass(b.positionClass),n.appendTo(a(b.target)),n)}function l(){return a.extend({},h(),s.options)}function m(a){n||(n=k()),a.is(":visible")||(a.remove(),a=null,0===n.children().length&&n.remove())}var n,o,p="2.0.1",q=0,r={error:"error",info:"info",success:"success",warning:"warning"},s={clear:g,error:b,getContainer:k,info:c,options:{},subscribe:d,success:e,version:p,warning:f};return s}()})}("function"==typeof define&&define.amd?define:function(a,b){"undefined"!=typeof module&&module.exports?module.exports=b(require(a[0])):window.toastr=b(window.jQuery)}); -//# sourceMappingURL=../../maps/libs/toastr.js.map \ No newline at end of file +!function(e){e([],function(){var e=jQuery;return function(){function n(e,n,t){return c({type:m.error,iconClass:l().iconClasses.error,message:e,optionsOverride:t,title:n})}function t(e,n,t){return c({type:m.info,iconClass:l().iconClasses.info,message:e,optionsOverride:t,title:n})}function o(e){g=e}function i(e,n,t){return c({type:m.success,iconClass:l().iconClasses.success,message:e,optionsOverride:t,title:n})}function s(e,n,t){return c({type:m.warning,iconClass:l().iconClasses.warning,message:e,optionsOverride:t,title:n})}function a(n){var t=l();if(f||u(t),n&&0===e(":focus",n).length)return void n[t.hideMethod]({duration:t.hideDuration,easing:t.hideEasing,complete:function(){p(n)}});f.children().length&&f[t.hideMethod]({duration:t.hideDuration,easing:t.hideEasing,complete:function(){f.remove()}})}function r(){return{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:void 0,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",target:"body",closeHtml:"",newestOnTop:!0}}function d(e){g&&g(e)}function c(n){function t(n){if(!e(":focus",c).length||n)return c[s.hideMethod]({duration:s.hideDuration,easing:s.hideEasing,complete:function(){p(c),s.onHidden&&s.onHidden(),w.state="hidden",w.endTime=new Date,d(w)}})}function o(){(s.timeOut>0||s.extendedTimeOut>0)&&(r=setTimeout(t,s.extendedTimeOut))}function i(){clearTimeout(r),c.stop(!0,!0)[s.showMethod]({duration:s.showDuration,easing:s.showEasing})}var s=l(),a=n.iconClass||s.iconClass;void 0!==n.optionsOverride&&(s=e.extend(s,n.optionsOverride),a=n.optionsOverride.iconClass||a),h++,f=u(s);var r=null,c=e("
          "),g=e("
          "),m=e("
          "),C=e(s.closeHtml),w={toastId:h,state:"visible",startTime:new Date,options:s,map:n};return n.iconClass&&c.addClass(s.toastClass).addClass(a),n.title&&(g.append(n.title).addClass(s.titleClass),c.append(g)),n.message&&(m.append(n.message).addClass(s.messageClass),c.append(m)),s.closeButton&&(C.addClass("toast-close-button"),c.prepend(C)),c.hide(),s.newestOnTop?f.prepend(c):f.append(c),c[s.showMethod]({duration:s.showDuration,easing:s.showEasing,complete:s.onShown}),s.timeOut>0&&(r=setTimeout(t,s.timeOut)),c.hover(i,o),!s.onclick&&s.tapToDismiss&&c.click(t),s.closeButton&&C&&C.click(function(e){e.stopPropagation(),t(!0)}),s.onclick&&c.click(function(){s.onclick(),t()}),d(w),s.debug&&console&&console.log(w),c}function u(n){return n||(n=l()),f=e("#"+n.containerId),f.length?f:(f=e("
          ").attr("id",n.containerId).addClass(n.positionClass),f.appendTo(e(n.target)),f)}function l(){return e.extend({},r(),C.options)}function p(e){f||(f=u()),e.is(":visible")||(e.remove(),e=null,0===f.children().length&&f.remove())}var f,g,h=0,m={error:"error",info:"info",success:"success",warning:"warning"},C={clear:a,error:n,getContainer:u,info:t,options:{},subscribe:o,success:i,version:"2.0.1",warning:s};return C}()})}("function"==typeof define&&define.amd?define:function(e,n){"undefined"!=typeof module&&module.exports?module.exports=n(require(e[0])):window.toastr=n(window.jQuery)}); +//# sourceMappingURL=../../maps/libs/toastr.js.map diff --git a/static/scripts/libs/underscore.js b/static/scripts/libs/underscore.js index 09e6a7046df..60998033669 100644 --- a/static/scripts/libs/underscore.js +++ b/static/scripts/libs/underscore.js @@ -1,2 +1,2 @@ -(function(){function a(a){function b(b,c,d,e,f,g){for(;f>=0&&g>f;f+=a){var h=e?e[f]:f;d=c(d,b[h],h,b)}return d}return function(c,d,e,f){d=t(d,f,4);var g=!A(c)&&s.keys(c),h=(g||c).length,i=a>0?0:h-1;return arguments.length<3&&(e=c[g?g[i]:i],i+=a),b(c,d,e,g,i,h)}}function b(a){return function(b,c,d){c=u(c,d);for(var e=z(b),f=a>0?0:e-1;f>=0&&e>f;f+=a)if(c(b[f],f,b))return f;return-1}}function c(a,b,c){return function(d,e,f){var g=0,h=z(d);if("number"==typeof f)a>0?g=f>=0?f:Math.max(f+h,g):h=f>=0?Math.min(f+1,h):f+h+1;else if(c&&f&&h)return f=c(d,e),d[f]===e?f:-1;if(e!==e)return f=b(k.call(d,g,h),s.isNaN),f>=0?f+g:-1;for(f=a>0?g:h-1;f>=0&&h>f;f+=a)if(d[f]===e)return f;return-1}}function d(a,b){var c=F.length,d=a.constructor,e=s.isFunction(d)&&d.prototype||h,f="constructor";for(s.has(a,f)&&!s.contains(b,f)&&b.push(f);c--;)f=F[c],f in a&&a[f]!==e[f]&&!s.contains(b,f)&&b.push(f)}var e=this,f=e._,g=Array.prototype,h=Object.prototype,i=Function.prototype,j=g.push,k=g.slice,l=h.toString,m=h.hasOwnProperty,n=Array.isArray,o=Object.keys,p=i.bind,q=Object.create,r=function(){},s=function(a){return a instanceof s?a:this instanceof s?void(this._wrapped=a):new s(a)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=s),exports._=s):e._=s,s.VERSION="1.8.3";var t=function(a,b,c){if(void 0===b)return a;switch(null==c?3:c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)};case 4:return function(c,d,e,f){return a.call(b,c,d,e,f)}}return function(){return a.apply(b,arguments)}},u=function(a,b,c){return null==a?s.identity:s.isFunction(a)?t(a,b,c):s.isObject(a)?s.matcher(a):s.property(a)};s.iteratee=function(a,b){return u(a,b,1/0)};var v=function(a,b){return function(c){var d=arguments.length;if(2>d||null==c)return c;for(var e=1;d>e;e++)for(var f=arguments[e],g=a(f),h=g.length,i=0;h>i;i++){var j=g[i];b&&void 0!==c[j]||(c[j]=f[j])}return c}},w=function(a){if(!s.isObject(a))return{};if(q)return q(a);r.prototype=a;var b=new r;return r.prototype=null,b},x=function(a){return function(b){return null==b?void 0:b[a]}},y=Math.pow(2,53)-1,z=x("length"),A=function(a){var b=z(a);return"number"==typeof b&&b>=0&&y>=b};s.each=s.forEach=function(a,b,c){b=t(b,c);var d,e;if(A(a))for(d=0,e=a.length;e>d;d++)b(a[d],d,a);else{var f=s.keys(a);for(d=0,e=f.length;e>d;d++)b(a[f[d]],f[d],a)}return a},s.map=s.collect=function(a,b,c){b=u(b,c);for(var d=!A(a)&&s.keys(a),e=(d||a).length,f=Array(e),g=0;e>g;g++){var h=d?d[g]:g;f[g]=b(a[h],h,a)}return f},s.reduce=s.foldl=s.inject=a(1),s.reduceRight=s.foldr=a(-1),s.find=s.detect=function(a,b,c){var d;return d=A(a)?s.findIndex(a,b,c):s.findKey(a,b,c),void 0!==d&&-1!==d?a[d]:void 0},s.filter=s.select=function(a,b,c){var d=[];return b=u(b,c),s.each(a,function(a,c,e){b(a,c,e)&&d.push(a)}),d},s.reject=function(a,b,c){return s.filter(a,s.negate(u(b)),c)},s.every=s.all=function(a,b,c){b=u(b,c);for(var d=!A(a)&&s.keys(a),e=(d||a).length,f=0;e>f;f++){var g=d?d[f]:f;if(!b(a[g],g,a))return!1}return!0},s.some=s.any=function(a,b,c){b=u(b,c);for(var d=!A(a)&&s.keys(a),e=(d||a).length,f=0;e>f;f++){var g=d?d[f]:f;if(b(a[g],g,a))return!0}return!1},s.contains=s.includes=s.include=function(a,b,c,d){return A(a)||(a=s.values(a)),("number"!=typeof c||d)&&(c=0),s.indexOf(a,b,c)>=0},s.invoke=function(a,b){var c=k.call(arguments,2),d=s.isFunction(b);return s.map(a,function(a){var e=d?b:a[b];return null==e?e:e.apply(a,c)})},s.pluck=function(a,b){return s.map(a,s.property(b))},s.where=function(a,b){return s.filter(a,s.matcher(b))},s.findWhere=function(a,b){return s.find(a,s.matcher(b))},s.max=function(a,b,c){var d,e,f=-(1/0),g=-(1/0);if(null==b&&null!=a){a=A(a)?a:s.values(a);for(var h=0,i=a.length;i>h;h++)d=a[h],d>f&&(f=d)}else b=u(b,c),s.each(a,function(a,c,d){e=b(a,c,d),(e>g||e===-(1/0)&&f===-(1/0))&&(f=a,g=e)});return f},s.min=function(a,b,c){var d,e,f=1/0,g=1/0;if(null==b&&null!=a){a=A(a)?a:s.values(a);for(var h=0,i=a.length;i>h;h++)d=a[h],f>d&&(f=d)}else b=u(b,c),s.each(a,function(a,c,d){e=b(a,c,d),(g>e||e===1/0&&f===1/0)&&(f=a,g=e)});return f},s.shuffle=function(a){for(var b,c=A(a)?a:s.values(a),d=c.length,e=Array(d),f=0;d>f;f++)b=s.random(0,f),b!==f&&(e[f]=e[b]),e[b]=c[f];return e},s.sample=function(a,b,c){return null==b||c?(A(a)||(a=s.values(a)),a[s.random(a.length-1)]):s.shuffle(a).slice(0,Math.max(0,b))},s.sortBy=function(a,b,c){return b=u(b,c),s.pluck(s.map(a,function(a,c,d){return{value:a,index:c,criteria:b(a,c,d)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;if(c!==d){if(c>d||void 0===c)return 1;if(d>c||void 0===d)return-1}return a.index-b.index}),"value")};var B=function(a){return function(b,c,d){var e={};return c=u(c,d),s.each(b,function(d,f){var g=c(d,f,b);a(e,d,g)}),e}};s.groupBy=B(function(a,b,c){s.has(a,c)?a[c].push(b):a[c]=[b]}),s.indexBy=B(function(a,b,c){a[c]=b}),s.countBy=B(function(a,b,c){s.has(a,c)?a[c]++:a[c]=1}),s.toArray=function(a){return a?s.isArray(a)?k.call(a):A(a)?s.map(a,s.identity):s.values(a):[]},s.size=function(a){return null==a?0:A(a)?a.length:s.keys(a).length},s.partition=function(a,b,c){b=u(b,c);var d=[],e=[];return s.each(a,function(a,c,f){(b(a,c,f)?d:e).push(a)}),[d,e]},s.first=s.head=s.take=function(a,b,c){return null==a?void 0:null==b||c?a[0]:s.initial(a,a.length-b)},s.initial=function(a,b,c){return k.call(a,0,Math.max(0,a.length-(null==b||c?1:b)))},s.last=function(a,b,c){return null==a?void 0:null==b||c?a[a.length-1]:s.rest(a,Math.max(0,a.length-b))},s.rest=s.tail=s.drop=function(a,b,c){return k.call(a,null==b||c?1:b)},s.compact=function(a){return s.filter(a,s.identity)};var C=function(a,b,c,d){for(var e=[],f=0,g=d||0,h=z(a);h>g;g++){var i=a[g];if(A(i)&&(s.isArray(i)||s.isArguments(i))){b||(i=C(i,b,c));var j=0,k=i.length;for(e.length+=k;k>j;)e[f++]=i[j++]}else c||(e[f++]=i)}return e};s.flatten=function(a,b){return C(a,b,!1)},s.without=function(a){return s.difference(a,k.call(arguments,1))},s.uniq=s.unique=function(a,b,c,d){s.isBoolean(b)||(d=c,c=b,b=!1),null!=c&&(c=u(c,d));for(var e=[],f=[],g=0,h=z(a);h>g;g++){var i=a[g],j=c?c(i,g,a):i;b?(g&&f===j||e.push(i),f=j):c?s.contains(f,j)||(f.push(j),e.push(i)):s.contains(e,i)||e.push(i)}return e},s.union=function(){return s.uniq(C(arguments,!0,!0))},s.intersection=function(a){for(var b=[],c=arguments.length,d=0,e=z(a);e>d;d++){var f=a[d];if(!s.contains(b,f)){for(var g=1;c>g&&s.contains(arguments[g],f);g++);g===c&&b.push(f)}}return b},s.difference=function(a){var b=C(arguments,!0,!0,1);return s.filter(a,function(a){return!s.contains(b,a)})},s.zip=function(){return s.unzip(arguments)},s.unzip=function(a){for(var b=a&&s.max(a,z).length||0,c=Array(b),d=0;b>d;d++)c[d]=s.pluck(a,d);return c},s.object=function(a,b){for(var c={},d=0,e=z(a);e>d;d++)b?c[a[d]]=b[d]:c[a[d][0]]=a[d][1];return c},s.findIndex=b(1),s.findLastIndex=b(-1),s.sortedIndex=function(a,b,c,d){c=u(c,d,1);for(var e=c(b),f=0,g=z(a);g>f;){var h=Math.floor((f+g)/2);c(a[h])f;f++,a+=c)e[f]=a;return e};var D=function(a,b,c,d,e){if(!(d instanceof b))return a.apply(c,e);var f=w(a.prototype),g=a.apply(f,e);return s.isObject(g)?g:f};s.bind=function(a,b){if(p&&a.bind===p)return p.apply(a,k.call(arguments,1));if(!s.isFunction(a))throw new TypeError("Bind must be called on a function");var c=k.call(arguments,2),d=function(){return D(a,d,b,this,c.concat(k.call(arguments)))};return d},s.partial=function(a){var b=k.call(arguments,1),c=function(){for(var d=0,e=b.length,f=Array(e),g=0;e>g;g++)f[g]=b[g]===s?arguments[d++]:b[g];for(;d=d)throw new Error("bindAll must be passed function names");for(b=1;d>b;b++)c=arguments[b],a[c]=s.bind(a[c],a);return a},s.memoize=function(a,b){var c=function(d){var e=c.cache,f=""+(b?b.apply(this,arguments):d);return s.has(e,f)||(e[f]=a.apply(this,arguments)),e[f]};return c.cache={},c},s.delay=function(a,b){var c=k.call(arguments,2);return setTimeout(function(){return a.apply(null,c)},b)},s.defer=s.partial(s.delay,s,1),s.throttle=function(a,b,c){var d,e,f,g=null,h=0;c||(c={});var i=function(){h=c.leading===!1?0:s.now(),g=null,f=a.apply(d,e),g||(d=e=null)};return function(){var j=s.now();h||c.leading!==!1||(h=j);var k=b-(j-h);return d=this,e=arguments,0>=k||k>b?(g&&(clearTimeout(g),g=null),h=j,f=a.apply(d,e),g||(d=e=null)):g||c.trailing===!1||(g=setTimeout(i,k)),f}},s.debounce=function(a,b,c){var d,e,f,g,h,i=function(){var j=s.now()-g;b>j&&j>=0?d=setTimeout(i,b-j):(d=null,c||(h=a.apply(f,e),d||(f=e=null)))};return function(){f=this,e=arguments,g=s.now();var j=c&&!d;return d||(d=setTimeout(i,b)),j&&(h=a.apply(f,e),f=e=null),h}},s.wrap=function(a,b){return s.partial(b,a)},s.negate=function(a){return function(){return!a.apply(this,arguments)}},s.compose=function(){var a=arguments,b=a.length-1;return function(){for(var c=b,d=a[b].apply(this,arguments);c--;)d=a[c].call(this,d);return d}},s.after=function(a,b){return function(){return--a<1?b.apply(this,arguments):void 0}},s.before=function(a,b){var c;return function(){return--a>0&&(c=b.apply(this,arguments)),1>=a&&(b=null),c}},s.once=s.partial(s.before,2);var E=!{toString:null}.propertyIsEnumerable("toString"),F=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];s.keys=function(a){if(!s.isObject(a))return[];if(o)return o(a);var b=[];for(var c in a)s.has(a,c)&&b.push(c);return E&&d(a,b),b},s.allKeys=function(a){if(!s.isObject(a))return[];var b=[];for(var c in a)b.push(c);return E&&d(a,b),b},s.values=function(a){for(var b=s.keys(a),c=b.length,d=Array(c),e=0;c>e;e++)d[e]=a[b[e]];return d},s.mapObject=function(a,b,c){b=u(b,c);for(var d,e=s.keys(a),f=e.length,g={},h=0;f>h;h++)d=e[h],g[d]=b(a[d],d,a);return g},s.pairs=function(a){for(var b=s.keys(a),c=b.length,d=Array(c),e=0;c>e;e++)d[e]=[b[e],a[b[e]]];return d},s.invert=function(a){for(var b={},c=s.keys(a),d=0,e=c.length;e>d;d++)b[a[c[d]]]=c[d];return b},s.functions=s.methods=function(a){var b=[];for(var c in a)s.isFunction(a[c])&&b.push(c);return b.sort()},s.extend=v(s.allKeys),s.extendOwn=s.assign=v(s.keys),s.findKey=function(a,b,c){b=u(b,c);for(var d,e=s.keys(a),f=0,g=e.length;g>f;f++)if(d=e[f],b(a[d],d,a))return d},s.pick=function(a,b,c){var d,e,f={},g=a;if(null==g)return f;s.isFunction(b)?(e=s.allKeys(g),d=t(b,c)):(e=C(arguments,!1,!1,1),d=function(a,b,c){return b in c},g=Object(g));for(var h=0,i=e.length;i>h;h++){var j=e[h],k=g[j];d(k,j,g)&&(f[j]=k)}return f},s.omit=function(a,b,c){if(s.isFunction(b))b=s.negate(b);else{var d=s.map(C(arguments,!1,!1,1),String);b=function(a,b){return!s.contains(d,b)}}return s.pick(a,b,c)},s.defaults=v(s.allKeys,!0),s.create=function(a,b){var c=w(a);return b&&s.extendOwn(c,b),c},s.clone=function(a){return s.isObject(a)?s.isArray(a)?a.slice():s.extend({},a):a},s.tap=function(a,b){return b(a),a},s.isMatch=function(a,b){var c=s.keys(b),d=c.length;if(null==a)return!d;for(var e=Object(a),f=0;d>f;f++){var g=c[f];if(b[g]!==e[g]||!(g in e))return!1}return!0};var G=function(a,b,c,d){if(a===b)return 0!==a||1/a===1/b;if(null==a||null==b)return a===b;a instanceof s&&(a=a._wrapped),b instanceof s&&(b=b._wrapped);var e=l.call(a);if(e!==l.call(b))return!1;switch(e){case"[object RegExp]":case"[object String]":return""+a==""+b;case"[object Number]":return+a!==+a?+b!==+b:0===+a?1/+a===1/b:+a===+b;case"[object Date]":case"[object Boolean]":return+a===+b}var f="[object Array]"===e;if(!f){if("object"!=typeof a||"object"!=typeof b)return!1;var g=a.constructor,h=b.constructor;if(g!==h&&!(s.isFunction(g)&&g instanceof g&&s.isFunction(h)&&h instanceof h)&&"constructor"in a&&"constructor"in b)return!1}c=c||[],d=d||[];for(var i=c.length;i--;)if(c[i]===a)return d[i]===b;if(c.push(a),d.push(b),f){if(i=a.length,i!==b.length)return!1;for(;i--;)if(!G(a[i],b[i],c,d))return!1}else{var j,k=s.keys(a);if(i=k.length,s.keys(b).length!==i)return!1;for(;i--;)if(j=k[i],!s.has(b,j)||!G(a[j],b[j],c,d))return!1}return c.pop(),d.pop(),!0};s.isEqual=function(a,b){return G(a,b)},s.isEmpty=function(a){return null==a?!0:A(a)&&(s.isArray(a)||s.isString(a)||s.isArguments(a))?0===a.length:0===s.keys(a).length},s.isElement=function(a){return!(!a||1!==a.nodeType)},s.isArray=n||function(a){return"[object Array]"===l.call(a)},s.isObject=function(a){var b=typeof a;return"function"===b||"object"===b&&!!a},s.each(["Arguments","Function","String","Number","Date","RegExp","Error"],function(a){s["is"+a]=function(b){return l.call(b)==="[object "+a+"]"}}),s.isArguments(arguments)||(s.isArguments=function(a){return s.has(a,"callee")}),"function"!=typeof/./&&"object"!=typeof Int8Array&&(s.isFunction=function(a){return"function"==typeof a||!1}),s.isFinite=function(a){return isFinite(a)&&!isNaN(parseFloat(a))},s.isNaN=function(a){return s.isNumber(a)&&a!==+a},s.isBoolean=function(a){return a===!0||a===!1||"[object Boolean]"===l.call(a)},s.isNull=function(a){return null===a},s.isUndefined=function(a){return void 0===a},s.has=function(a,b){return null!=a&&m.call(a,b)},s.noConflict=function(){return e._=f,this},s.identity=function(a){return a},s.constant=function(a){return function(){return a}},s.noop=function(){},s.property=x,s.propertyOf=function(a){return null==a?function(){}:function(b){return a[b]}},s.matcher=s.matches=function(a){return a=s.extendOwn({},a),function(b){return s.isMatch(b,a)}},s.times=function(a,b,c){var d=Array(Math.max(0,a));b=t(b,c,1);for(var e=0;a>e;e++)d[e]=b(e);return d},s.random=function(a,b){return null==b&&(b=a,a=0),a+Math.floor(Math.random()*(b-a+1))},s.now=Date.now||function(){return(new Date).getTime()};var H={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},I=s.invert(H),J=function(a){var b=function(b){return a[b]},c="(?:"+s.keys(a).join("|")+")",d=RegExp(c),e=RegExp(c,"g");return function(a){return a=null==a?"":""+a,d.test(a)?a.replace(e,b):a}};s.escape=J(H),s.unescape=J(I),s.result=function(a,b,c){var d=null==a?void 0:a[b];return void 0===d&&(d=c),s.isFunction(d)?d.call(a):d};var K=0;s.uniqueId=function(a){var b=++K+"";return a?a+b:b},s.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var L=/(.)^/,M={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},N=/\\|'|\r|\n|\u2028|\u2029/g,O=function(a){return"\\"+M[a]};s.template=function(a,b,c){!b&&c&&(b=c),b=s.defaults({},b,s.templateSettings);var d=RegExp([(b.escape||L).source,(b.interpolate||L).source,(b.evaluate||L).source].join("|")+"|$","g"),e=0,f="__p+='";a.replace(d,function(b,c,d,g,h){return f+=a.slice(e,h).replace(N,O),e=h+b.length,c?f+="'+\n((__t=("+c+"))==null?'':_.escape(__t))+\n'":d?f+="'+\n((__t=("+d+"))==null?'':__t)+\n'":g&&(f+="';\n"+g+"\n__p+='"),b}),f+="';\n",b.variable||(f="with(obj||{}){\n"+f+"}\n"),f="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+f+"return __p;\n";try{var g=new Function(b.variable||"obj","_",f)}catch(h){throw h.source=f,h}var i=function(a){return g.call(this,a,s)},j=b.variable||"obj";return i.source="function("+j+"){\n"+f+"}",i},s.chain=function(a){var b=s(a);return b._chain=!0,b};var P=function(a,b){return a._chain?s(b).chain():b};s.mixin=function(a){s.each(s.functions(a),function(b){var c=s[b]=a[b];s.prototype[b]=function(){var a=[this._wrapped];return j.apply(a,arguments),P(this,c.apply(s,a))}})},s.mixin(s),s.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var b=g[a];s.prototype[a]=function(){var c=this._wrapped;return b.apply(c,arguments),"shift"!==a&&"splice"!==a||0!==c.length||delete c[0],P(this,c)}}),s.each(["concat","join","slice"],function(a){var b=g[a];s.prototype[a]=function(){return P(this,b.apply(this._wrapped,arguments))}}),s.prototype.value=function(){return this._wrapped},s.prototype.valueOf=s.prototype.toJSON=s.prototype.value,s.prototype.toString=function(){return""+this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return s})}).call(this); -//# sourceMappingURL=../../maps/libs/underscore.js.map \ No newline at end of file +(function(){function n(n){function t(t,r,e,u,i,o){for(;i>=0&&i0?0:a-1;return arguments.length<3&&(u=r[o?o[c]:c],c+=n),t(r,e,u,o,c,a)}}function t(n){return function(t,r,e){r=x(r,e);for(var u=O(t),i=n>0?0:u-1;i>=0&&i0?o=i>=0?i:Math.max(i+a,o):a=i>=0?Math.min(i+1,a):i+a+1;else if(r&&i&&a)return i=r(e,u),e[i]===u?i:-1;if(u!==u)return i=t(l.call(e,o,a),m.isNaN),i>=0?i+o:-1;for(i=n>0?o:a-1;i>=0&&i=0&&t<=A};m.each=m.forEach=function(n,t,r){t=b(t,r);var e,u;if(k(n))for(e=0,u=n.length;e=0},m.invoke=function(n,t){var r=l.call(arguments,2),e=m.isFunction(t);return m.map(n,function(n){var u=e?t:n[t];return null==u?u:u.apply(n,r)})},m.pluck=function(n,t){return m.map(n,m.property(t))},m.where=function(n,t){return m.filter(n,m.matcher(t))},m.findWhere=function(n,t){return m.find(n,m.matcher(t))},m.max=function(n,t,r){var e,u,i=-1/0,o=-1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;ai&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){((u=t(n,r,e))>o||u===-1/0&&i===-1/0)&&(i=n,o=u)});return i},m.min=function(n,t,r){var e,u,i=1/0,o=1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;ae||void 0===r)return 1;if(rt?(o&&(clearTimeout(o),o=null),a=f,i=n.apply(e,u),o||(e=u=null)):o||!1===r.trailing||(o=setTimeout(c,l)),i}},m.debounce=function(n,t,r){var e,u,i,o,a,c=function(){var f=m.now()-o;f=0?e=setTimeout(c,t-f):(e=null,r||(a=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,o=m.now();var f=r&&!e;return e||(e=setTimeout(c,t)),f&&(a=n.apply(i,u),i=u=null),a}},m.wrap=function(n,t){return m.partial(t,n)},m.negate=function(n){return function(){return!n.apply(this,arguments)}},m.compose=function(){var n=arguments,t=n.length-1;return function(){for(var r=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);return e}},m.after=function(n,t){return function(){if(--n<1)return t.apply(this,arguments)}},m.before=function(n,t){var r;return function(){return--n>0&&(r=t.apply(this,arguments)),n<=1&&(t=null),r}},m.once=m.partial(m.before,2);var M=!{toString:null}.propertyIsEnumerable("toString"),I=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];m.keys=function(n){if(!m.isObject(n))return[];if(v)return v(n);var t=[];for(var r in n)m.has(n,r)&&t.push(r);return M&&e(n,t),t},m.allKeys=function(n){if(!m.isObject(n))return[];var t=[];for(var r in n)t.push(r);return M&&e(n,t),t},m.values=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;u":">",'"':""","'":"'","`":"`"},T=m.invert(B),R=function(n){var t=function(t){return n[t]},r="(?:"+m.keys(n).join("|")+")",e=RegExp(r),u=RegExp(r,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,t):n}};m.escape=R(B),m.unescape=R(T),m.result=function(n,t,r){var e=null==n?void 0:n[t];return void 0===e&&(e=r),m.isFunction(e)?e.call(n):e};var q=0;m.uniqueId=function(n){var t=++q+"";return n?n+t:t},m.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var K={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},z=function(n){return"\\"+K[n]};m.template=function(n,t,r){!t&&r&&(t=r),t=m.defaults({},t,m.templateSettings);var e=RegExp([(t.escape||/(.)^/).source,(t.interpolate||/(.)^/).source,(t.evaluate||/(.)^/).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,o,a){return i+=n.slice(u,a).replace(/\\|'|\r|\n|\u2028|\u2029/g,z),u=a+t.length,r?i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":o&&(i+="';\n"+o+"\n__p+='"),t}),i+="';\n",t.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var o=new Function(t.variable||"obj","_",i)}catch(n){throw n.source=i,n}var a=function(n){return o.call(this,n,m)},c=t.variable||"obj";return a.source="function("+c+"){\n"+i+"}",a},m.chain=function(n){var t=m(n);return t._chain=!0,t};var D=function(n,t){return n._chain?m(t).chain():t};m.mixin=function(n){m.each(m.functions(n),function(t){var r=m[t]=n[t];m.prototype[t]=function(){var n=[this._wrapped];return f.apply(n,arguments),D(this,r.apply(m,n))}})},m.mixin(m),m.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=o[n];m.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==n&&"splice"!==n||0!==r.length||delete r[0],D(this,r)}}),m.each(["concat","join","slice"],function(n){var t=o[n];m.prototype[n]=function(){return D(this,t.apply(this._wrapped,arguments))}}),m.prototype.value=function(){return this._wrapped},m.prototype.valueOf=m.prototype.toJSON=m.prototype.value,m.prototype.toString=function(){return""+this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return m})}).call(this); +//# sourceMappingURL=../../maps/libs/underscore.js.map diff --git a/static/scripts/mvc/annotation.js b/static/scripts/mvc/annotation.js index c702ff0b32e..38b4f82601f 100644 --- a/static/scripts/mvc/annotation.js +++ b/static/scripts/mvc/annotation.js @@ -1,2 +1,2 @@ -define(["mvc/base-mvc","utils/localization","ui/editable-text"],function(a,b){var c=Backbone.View.extend(a.LoggableMixin).extend(a.HiddenUntilActivatedViewMixin).extend({tagName:"div",className:"annotation-display",initialize:function(a){a=a||{},this.tooltipConfig=a.tooltipConfig||{placement:"bottom"},this.listenTo(this.model,"change:annotation",function(){this.render()}),this.hiddenUntilActivated(a.$activator,a)},render:function(){var a=this;return this.$el.html(this._template()),this.$annotation().make_text_editable({use_textarea:!0,on_finish:function(b){a.$annotation().text(b),a.model.save({annotation:b},{silent:!0}).fail(function(){a.$annotation().text(a.model.previous("annotation"))})}}),this},_template:function(){var a=this.model.get("annotation");return['",'
          ',_.escape(a),"
          "].join("")},$annotation:function(){return this.$el.find(".annotation")},remove:function(){this.$annotation.off(),this.stopListening(this.model),Backbone.View.prototype.remove.call(this)},toString:function(){return["AnnotationEditor(",this.model+"",")"].join("")}});return{AnnotationEditor:c}}); -//# sourceMappingURL=../../maps/mvc/annotation.js.map \ No newline at end of file +define(["mvc/base-mvc","utils/localization","ui/editable-text"],function(t,n){return{AnnotationEditor:Backbone.View.extend(t.LoggableMixin).extend(t.HiddenUntilActivatedViewMixin).extend({tagName:"div",className:"annotation-display",initialize:function(t){t=t||{},this.tooltipConfig=t.tooltipConfig||{placement:"bottom"},this.listenTo(this.model,"change:annotation",function(){this.render()}),this.hiddenUntilActivated(t.$activator,t)},render:function(){var t=this;return this.$el.html(this._template()),this.$annotation().make_text_editable({use_textarea:!0,on_finish:function(n){t.$annotation().text(n),t.model.save({annotation:n},{silent:!0}).fail(function(){t.$annotation().text(t.model.previous("annotation"))})}}),this},_template:function(){var t=this.model.get("annotation");return['",'
          ',_.escape(t),"
          "].join("")},$annotation:function(){return this.$el.find(".annotation")},remove:function(){this.$annotation.off(),this.stopListening(this.model),Backbone.View.prototype.remove.call(this)},toString:function(){return["AnnotationEditor(",this.model+"",")"].join("")}})}}); +//# sourceMappingURL=../../maps/mvc/annotation.js.map diff --git a/static/scripts/mvc/base-mvc.js b/static/scripts/mvc/base-mvc.js index 01786a78e20..e643c706bfc 100644 --- a/static/scripts/mvc/base-mvc.js +++ b/static/scripts/mvc/base-mvc.js @@ -1,2 +1,2 @@ -define(["libs/underscore","libs/backbone","utils/add-logging","utils/localization"],function(a,b,c,d){"use strict";function e(){var b=Array.prototype.slice.call(arguments,0),c=b.pop();return b.unshift(c),a.defaults.apply(a,b)}function f(b,c){c=c||"model";var e=a.template(b.join(""));return function(a,b){var f={view:b||{},_l:d};return f[c]=a||{},e(f)}}function g(a,b){b=b||{};var c=b.ascending?1:-1;return function(b,d){return b=b.get(a),d=d.get(a),(d>b?-1:b>d?1:0)*c}}var h={logger:null,_logNamespace:"."};c(h);var i=b.Model.extend({initialize:function(b){if(this._checkEnabledSessionStorage(),!b.id)throw new Error("SessionStorageModel requires an id in the initial attributes");this.id=b.id;var c=this.isNew()?{}:this._read(this);this.clear({silent:!0}),this.save(a.extend({},this.defaults,c,b),{silent:!0}),this.on("change",function(){this.save()})},_checkEnabledSessionStorage:function(){try{return window.sessionStorage.length>=0}catch(a){return alert("Please enable cookies in your browser for this Galaxy site"),!1}},sync:function(a,b,c){c.silent||b.trigger("request",b,{},c);var d={};switch(a){case"create":d=this._create(b);break;case"read":d=this._read(b);break;case"update":d=this._update(b);break;case"delete":d=this._delete(b)}return void 0!==d||null!==d?c.success&&c.success():c.error&&c.error(),d},_create:function(a){try{var b=a.toJSON(),c=sessionStorage.setItem(a.id,JSON.stringify(b));return null===c?c:b}catch(d){if(!(d instanceof DOMException&&navigator.userAgent.indexOf("Safari")>-1))throw d}return null},_read:function(a){return JSON.parse(sessionStorage.getItem(a.id))},_update:function(a){return a._create(a)},_delete:function(a){return sessionStorage.removeItem(a.id)},isNew:function(){return!sessionStorage.hasOwnProperty(this.id)},_log:function(){return JSON.stringify(this.toJSON(),null," ")},toString:function(){return"SessionStorageModel("+this.id+")"}});!function(){i.prototype=a.omit(i.prototype,"url","urlRoot")}();var j={searchAttributes:[],searchAliases:{},searchAttribute:function(b,c){var d=this.get(b);return c&&void 0!==d&&null!==d?a.isArray(d)?this._searchArrayAttribute(d,c):-1!==d.toString().toLowerCase().indexOf(c.toLowerCase()):!1},_searchArrayAttribute:function(b,c){return c=c.toLowerCase(),a.any(b,function(a){return-1!==a.toString().toLowerCase().indexOf(c.toLowerCase())})},search:function(b){var c=this;return a.filter(this.searchAttributes,function(a){return c.searchAttribute(a,b)})},matches:function(a){var b="=",c=a.split(b);if(c.length>=2){var d=c[0];return d=this.searchAliases[d]||d,this.searchAttribute(d,c[1])}return!!this.search(a).length},matchesAll:function(b){var c=this;return b=b.match(/(".*"|\w*=".*"|\S*)/g).filter(function(a){return!!a}),a.all(b,function(a){return a=a.replace(/"/g,""),c.matches(a)})}},k={hiddenUntilActivated:function(b,c){if(c=c||{},this.HUAVOptions={$elementShown:this.$el,showFn:jQuery.prototype.toggle,showSpeed:"fast"},a.extend(this.HUAVOptions,c||{}),this.HUAVOptions.hasBeenShown=this.HUAVOptions.$elementShown.is(":visible"),this.hidden=this.isHidden(),b){var d=this;b.on("click",function(){d.toggle(d.HUAVOptions.showSpeed)})}},isHidden:function(){return this.HUAVOptions.$elementShown.is(":hidden")},toggle:function(){return this.hidden?(this.HUAVOptions.hasBeenShown||a.isFunction(this.HUAVOptions.onshowFirstTime)&&(this.HUAVOptions.hasBeenShown=!0,this.HUAVOptions.onshowFirstTime.call(this)),a.isFunction(this.HUAVOptions.onshow)&&(this.HUAVOptions.onshow.call(this),this.trigger("hiddenUntilActivated:shown",this)),this.hidden=!1):(a.isFunction(this.HUAVOptions.onhide)&&(this.HUAVOptions.onhide.call(this),this.trigger("hiddenUntilActivated:hidden",this)),this.hidden=!0),this.HUAVOptions.showFn.apply(this.HUAVOptions.$elementShown,arguments)}},l={initialize:function(a){this.draggable=a.draggable||!1},$dragHandle:function(){return this.$(".title-bar")},toggleDraggable:function(){this.draggable?this.draggableOff():this.draggableOn()},draggableOn:function(){this.draggable=!0,this.dragStartHandler=a.bind(this._dragStartHandler,this),this.dragEndHandler=a.bind(this._dragEndHandler,this);var b=this.$dragHandle().attr("draggable",!0).get(0);b.addEventListener("dragstart",this.dragStartHandler,!1),b.addEventListener("dragend",this.dragEndHandler,!1)},draggableOff:function(){this.draggable=!1;var a=this.$dragHandle().attr("draggable",!1).get(0);a.removeEventListener("dragstart",this.dragStartHandler,!1),a.removeEventListener("dragend",this.dragEndHandler,!1)},_dragStartHandler:function(a){return a.dataTransfer.effectAllowed="move",a.dataTransfer.setData("text",JSON.stringify(this.model.toJSON())),this.trigger("draggable:dragstart",a,this),!1},_dragEndHandler:function(a){return this.trigger("draggable:dragend",a,this),!1}},m={initialize:function(a){this.selectable=a.selectable||!1,this.selected=a.selected||!1},$selector:function(){return this.$(".selector")},_renderSelected:function(){this.$selector().find("span").toggleClass("fa-check-square-o",this.selected).toggleClass("fa-square-o",!this.selected)},toggleSelector:function(){this.$selector().is(":visible")?this.hideSelector():this.showSelector()},showSelector:function(a){a=void 0!==a?a:this.fxSpeed,this.selectable=!0,this.trigger("selectable",!0,this),this._renderSelected(),a?this.$selector().show(a):this.$selector().show()},hideSelector:function(a){a=void 0!==a?a:this.fxSpeed,this.selectable=!1,this.trigger("selectable",!1,this),a?this.$selector().hide(a):this.$selector().hide()},toggleSelect:function(a){this.selected?this.deselect(a):this.select(a)},select:function(a){return this.selected||(this.trigger("selected",this,a),this.selected=!0,this._renderSelected()),!1},deselect:function(a){return this.selected&&(this.trigger("de-selected",this,a),this.selected=!1,this._renderSelected()),!1}};return{LoggableMixin:h,SessionStorageModel:i,mixin:e,SearchableModelMixin:j,HiddenUntilActivatedViewMixin:k,DraggableViewMixin:l,SelectableViewMixin:m,wrapTemplate:f,buildComparator:g}}); -//# sourceMappingURL=../../maps/mvc/base-mvc.js.map \ No newline at end of file +define(["libs/underscore","libs/backbone","utils/add-logging","utils/localization"],function(e,t,i,s){"use strict";function n(t,i){var s=Array.prototype.slice.call(arguments,0),n=s.pop();return s.unshift(n),e.defaults.apply(e,s)}function r(t,i){i=i||"model";var n=e.template(t.join(""));return function(e,t){var r={view:t||{},_l:s};return r[i]=e||{},n(r)}}function a(e,t){t=t||{};var i=t.ascending?1:-1;return function(t,s){return t=t.get(e),s=s.get(e),(ts?1:0)*i}}var o={logger:null,_logNamespace:"."};i(o);var h=t.Model.extend({initialize:function(t){if(this._checkEnabledSessionStorage(),!t.id)throw new Error("SessionStorageModel requires an id in the initial attributes");this.id=t.id;var i=this.isNew()?{}:this._read(this);this.clear({silent:!0}),this.save(e.extend({},this.defaults,i,t),{silent:!0}),this.on("change",function(){this.save()})},_checkEnabledSessionStorage:function(){try{return window.sessionStorage.length>=0}catch(e){return alert("Please enable cookies in your browser for this Galaxy site"),!1}},sync:function(e,t,i){i.silent||t.trigger("request",t,{},i);var s={};switch(e){case"create":s=this._create(t);break;case"read":s=this._read(t);break;case"update":s=this._update(t);break;case"delete":s=this._delete(t)}return void 0!==s||null!==s?i.success&&i.success():i.error&&i.error(),s},_create:function(e){try{var t=e.toJSON(),i=sessionStorage.setItem(e.id,JSON.stringify(t));return null===i?i:t}catch(e){if(!(e instanceof DOMException&&navigator.userAgent.indexOf("Safari")>-1))throw e}return null},_read:function(e){return JSON.parse(sessionStorage.getItem(e.id))},_update:function(e){return e._create(e)},_delete:function(e){return sessionStorage.removeItem(e.id)},isNew:function(){return!sessionStorage.hasOwnProperty(this.id)},_log:function(){return JSON.stringify(this.toJSON(),null," ")},toString:function(){return"SessionStorageModel("+this.id+")"}});return function(){h.prototype=e.omit(h.prototype,"url","urlRoot")}(),{LoggableMixin:o,SessionStorageModel:h,mixin:n,SearchableModelMixin:{searchAttributes:[],searchAliases:{},searchAttribute:function(t,i){var s=this.get(t);return!(!i||void 0===s||null===s)&&(e.isArray(s)?this._searchArrayAttribute(s,i):-1!==s.toString().toLowerCase().indexOf(i.toLowerCase()))},_searchArrayAttribute:function(t,i){return i=i.toLowerCase(),e.any(t,function(e){return-1!==e.toString().toLowerCase().indexOf(i.toLowerCase())})},search:function(t){var i=this;return e.filter(this.searchAttributes,function(e){return i.searchAttribute(e,t)})},matches:function(e){var t=e.split("=");if(t.length>=2){var i=t[0];return i=this.searchAliases[i]||i,this.searchAttribute(i,t[1])}return!!this.search(e).length},matchesAll:function(t){var i=this;return t=t.match(/(".*"|\w*=".*"|\S*)/g).filter(function(e){return!!e}),e.all(t,function(e){return e=e.replace(/"/g,""),i.matches(e)})}},HiddenUntilActivatedViewMixin:{hiddenUntilActivated:function(t,i){if(i=i||{},this.HUAVOptions={$elementShown:this.$el,showFn:jQuery.prototype.toggle,showSpeed:"fast"},e.extend(this.HUAVOptions,i||{}),this.HUAVOptions.hasBeenShown=this.HUAVOptions.$elementShown.is(":visible"),this.hidden=this.isHidden(),t){var s=this;t.on("click",function(e){s.toggle(s.HUAVOptions.showSpeed)})}},isHidden:function(){return this.HUAVOptions.$elementShown.is(":hidden")},toggle:function(){return this.hidden?(this.HUAVOptions.hasBeenShown||e.isFunction(this.HUAVOptions.onshowFirstTime)&&(this.HUAVOptions.hasBeenShown=!0,this.HUAVOptions.onshowFirstTime.call(this)),e.isFunction(this.HUAVOptions.onshow)&&(this.HUAVOptions.onshow.call(this),this.trigger("hiddenUntilActivated:shown",this)),this.hidden=!1):(e.isFunction(this.HUAVOptions.onhide)&&(this.HUAVOptions.onhide.call(this),this.trigger("hiddenUntilActivated:hidden",this)),this.hidden=!0),this.HUAVOptions.showFn.apply(this.HUAVOptions.$elementShown,arguments)}},DraggableViewMixin:{initialize:function(e){this.draggable=e.draggable||!1},$dragHandle:function(){return this.$(".title-bar")},toggleDraggable:function(){this.draggable?this.draggableOff():this.draggableOn()},draggableOn:function(){this.draggable=!0,this.dragStartHandler=e.bind(this._dragStartHandler,this),this.dragEndHandler=e.bind(this._dragEndHandler,this);var t=this.$dragHandle().attr("draggable",!0).get(0);t.addEventListener("dragstart",this.dragStartHandler,!1),t.addEventListener("dragend",this.dragEndHandler,!1)},draggableOff:function(){this.draggable=!1;var e=this.$dragHandle().attr("draggable",!1).get(0);e.removeEventListener("dragstart",this.dragStartHandler,!1),e.removeEventListener("dragend",this.dragEndHandler,!1)},_dragStartHandler:function(e){return e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text",JSON.stringify(this.model.toJSON())),this.trigger("draggable:dragstart",e,this),!1},_dragEndHandler:function(e){return this.trigger("draggable:dragend",e,this),!1}},SelectableViewMixin:{initialize:function(e){this.selectable=e.selectable||!1,this.selected=e.selected||!1},$selector:function(){return this.$(".selector")},_renderSelected:function(){this.$selector().find("span").toggleClass("fa-check-square-o",this.selected).toggleClass("fa-square-o",!this.selected)},toggleSelector:function(){this.$selector().is(":visible")?this.hideSelector():this.showSelector()},showSelector:function(e){e=void 0!==e?e:this.fxSpeed,this.selectable=!0,this.trigger("selectable",!0,this),this._renderSelected(),e?this.$selector().show(e):this.$selector().show()},hideSelector:function(e){e=void 0!==e?e:this.fxSpeed,this.selectable=!1,this.trigger("selectable",!1,this),e?this.$selector().hide(e):this.$selector().hide()},toggleSelect:function(e){this.selected?this.deselect(e):this.select(e)},select:function(e){return this.selected||(this.trigger("selected",this,e),this.selected=!0,this._renderSelected()),!1},deselect:function(e){return this.selected&&(this.trigger("de-selected",this,e),this.selected=!1,this._renderSelected()),!1}},wrapTemplate:r,buildComparator:a}}); +//# sourceMappingURL=../../maps/mvc/base-mvc.js.map diff --git a/static/scripts/mvc/base/controlled-fetch-collection.js b/static/scripts/mvc/base/controlled-fetch-collection.js index 354d3f16705..5f4aeb6d073 100644 --- a/static/scripts/mvc/base/controlled-fetch-collection.js +++ b/static/scripts/mvc/base/controlled-fetch-collection.js @@ -1,2 +1,2 @@ -define(["libs/underscore","libs/backbone","mvc/base-mvc"],function(a,b,c){"use strict";var d=b.Collection.extend({initialize:function(a,c){b.Collection.prototype.initialize.call(this,a,c),this.setOrder(c.order||this.order,{silent:!0})},_setUpListeners:function(){return this.on({"changed-order":this.sort})},fetch:function(a){return a=this._buildFetchOptions(a),b.Collection.prototype.fetch.call(this,a)},_buildFetchOptions:function(b){b=a.clone(b)||{};var c=this;b.traditional=!0,b.data=b.data||c._buildFetchData(b);var d=this._buildFetchFilters(b);return a.isEmpty(d)||a.extend(b.data,this._fetchFiltersToAjaxData(d)),b},_buildFetchData:function(b){var c={};return this.order&&(c.order=this.order),a.defaults(a.pick(b,this._fetchParams),c)},_fetchParams:["order","limit","offset","view","keys"],_buildFetchFilters:function(b){return a.clone(b.filters||{})},_fetchFiltersToAjaxData:function(b){var c={q:[],qv:[]};return a.each(b,function(a,b){void 0!==a&&""!==a&&(a===!0&&(a="True"),a===!1&&(a="False"),null===a&&(a="None"),c.q.push(b),c.qv.push(a))}),c},reset:function(a,c){return this.allFetched=!1,b.Collection.prototype.reset.call(this,a,c)},order:null,comparators:{update_time:c.buildComparator("update_time",{ascending:!1}),"update_time-asc":c.buildComparator("update_time",{ascending:!0}),create_time:c.buildComparator("create_time",{ascending:!1}),"create_time-asc":c.buildComparator("create_time",{ascending:!0})},setOrder:function(b,c){c=c||{};var d=this,e=d.comparators[b];if(a.isUndefined(e))throw new Error("unknown order: "+b);if(e!==d.comparator){{d.order}return d.order=b,d.comparator=e,c.silent||d.trigger("changed-order",c),d}}}),e=d.extend({limitPerPage:500,initialize:function(a,b){d.prototype.initialize.call(this,a,b),this.currentPage=b.currentPage||0},getTotalItemCount:function(){return this.length},shouldPaginate:function(){return this.getTotalItemCount()>=this.limitPerPage},getLastPage:function(){return Math.floor(this.getTotalItemCount()/this.limitPerPage)},getPageCount:function(){return this.getLastPage()+1},getPageLimitOffset:function(a){return a=this.constrainPageNum(a),{limit:this.limitPerPage,offset:a*this.limitPerPage}},constrainPageNum:function(a){return Math.max(0,Math.min(a,this.getLastPage()))},fetchPage:function(b,c){var d=this;return b=d.constrainPageNum(b),d.currentPage=b,c=a.defaults(c||{},d.getPageLimitOffset(b)),d.trigger("fetching-more"),d.fetch(c).always(function(){d.trigger("fetching-more-done")})},fetchCurrentPage:function(a){return this.fetchPage(this.currentPage,a)},fetchPrevPage:function(a){return this.fetchPage(this.currentPage-1,a)},fetchNextPage:function(a){return this.fetchPage(this.currentPage+1,a)}}),f=d.extend({limitOnFirstFetch:null,limitPerFetch:100,initialize:function(a,b){d.prototype.initialize.call(this,a,b),this.limitOnFirstFetch=b.limitOnFirstFetch||this.limitOnFirstFetch,this.limitPerFetch=b.limitPerFetch||this.limitPerFetch,this.allFetched=!1,this.lastFetched=b.lastFetched||0},_buildFetchOptions:function(a){return a.remove=a.remove||!1,d.prototype._buildFetchOptions.call(this,a)},fetchFirst:function(b){return b=b?a.clone(b):{},this.allFetched=!1,this.lastFetched=0,this.fetchMore(a.defaults(b,{reset:!0,limit:this.limitOnFirstFetch}))},fetchMore:function(b){b=a.clone(b||{});var c=this;if(!b.reset&&c.allFetched)return jQuery.when();b.offset=b.reset?0:b.offset||c.lastFetched;var d=b.limit=b.limit||c.limitPerFetch||null;return c.trigger("fetching-more"),c.fetch(b).always(function(){c.trigger("fetching-more-done")}).done(function(b){var e=a.isArray(b)?b.length:0;c.lastFetched+=e,(!d||d>e)&&(c.allFetched=!0,c.trigger("all-fetched",this))})},fetchAll:function(b){b=b||{};var c=this;return b=a.pick(b,"silent"),b.filters={},c.fetch(b).done(function(){c.allFetched=!0,c.trigger("all-fetched",c)})}});return{ControlledFetchCollection:d,PaginatedCollection:e,InfinitelyScrollingCollection:f}}); -//# sourceMappingURL=../../../maps/mvc/base/controlled-fetch-collection.js.map \ No newline at end of file +define(["libs/underscore","libs/backbone","mvc/base-mvc"],function(t,e,i){"use strict";var r=e.Collection.extend({initialize:function(t,i){e.Collection.prototype.initialize.call(this,t,i),this.setOrder(i.order||this.order,{silent:!0})},_setUpListeners:function(){return this.on({"changed-order":this.sort})},fetch:function(t){return t=this._buildFetchOptions(t),e.Collection.prototype.fetch.call(this,t)},_buildFetchOptions:function(e){e=t.clone(e)||{};var i=this;e.traditional=!0,e.data=e.data||i._buildFetchData(e);var r=this._buildFetchFilters(e);return t.isEmpty(r)||t.extend(e.data,this._fetchFiltersToAjaxData(r)),e},_buildFetchData:function(e){var i={};return this.order&&(i.order=this.order),t.defaults(t.pick(e,this._fetchParams),i)},_fetchParams:["order","limit","offset","view","keys"],_buildFetchFilters:function(e){return t.clone(e.filters||{})},_fetchFiltersToAjaxData:function(e){var i={q:[],qv:[]};return t.each(e,function(t,e){void 0!==t&&""!==t&&(!0===t&&(t="True"),!1===t&&(t="False"),null===t&&(t="None"),i.q.push(e),i.qv.push(t))}),i},reset:function(t,i){return this.allFetched=!1,e.Collection.prototype.reset.call(this,t,i)},order:null,comparators:{update_time:i.buildComparator("update_time",{ascending:!1}),"update_time-asc":i.buildComparator("update_time",{ascending:!0}),create_time:i.buildComparator("create_time",{ascending:!1}),"create_time-asc":i.buildComparator("create_time",{ascending:!0})},setOrder:function(e,i){i=i||{};var r=this,n=r.comparators[e];if(t.isUndefined(n))throw new Error("unknown order: "+e);if(n!==r.comparator){r.order;return r.order=e,r.comparator=n,i.silent||r.trigger("changed-order",i),r}}}),n=r.extend({limitPerPage:500,initialize:function(t,e){r.prototype.initialize.call(this,t,e),this.currentPage=e.currentPage||0},getTotalItemCount:function(){return this.length},shouldPaginate:function(){return this.getTotalItemCount()>=this.limitPerPage},getLastPage:function(){return Math.floor(this.getTotalItemCount()/this.limitPerPage)},getPageCount:function(){return this.getLastPage()+1},getPageLimitOffset:function(t){return t=this.constrainPageNum(t),{limit:this.limitPerPage,offset:t*this.limitPerPage}},constrainPageNum:function(t){return Math.max(0,Math.min(t,this.getLastPage()))},fetchPage:function(e,i){var r=this;return e=r.constrainPageNum(e),r.currentPage=e,i=t.defaults(i||{},r.getPageLimitOffset(e)),r.trigger("fetching-more"),r.fetch(i).always(function(){r.trigger("fetching-more-done")})},fetchCurrentPage:function(t){return this.fetchPage(this.currentPage,t)},fetchPrevPage:function(t){return this.fetchPage(this.currentPage-1,t)},fetchNextPage:function(t){return this.fetchPage(this.currentPage+1,t)}}),a=r.extend({limitOnFirstFetch:null,limitPerFetch:100,initialize:function(t,e){r.prototype.initialize.call(this,t,e),this.limitOnFirstFetch=e.limitOnFirstFetch||this.limitOnFirstFetch,this.limitPerFetch=e.limitPerFetch||this.limitPerFetch,this.allFetched=!1,this.lastFetched=e.lastFetched||0},_buildFetchOptions:function(t){return t.remove=t.remove||!1,r.prototype._buildFetchOptions.call(this,t)},fetchFirst:function(e){return e=e?t.clone(e):{},this.allFetched=!1,this.lastFetched=0,this.fetchMore(t.defaults(e,{reset:!0,limit:this.limitOnFirstFetch}))},fetchMore:function(e){e=t.clone(e||{});var i=this;if(!e.reset&&i.allFetched)return jQuery.when();e.offset=e.reset?0:e.offset||i.lastFetched;var r=e.limit=e.limit||i.limitPerFetch||null;return i.trigger("fetching-more"),i.fetch(e).always(function(){i.trigger("fetching-more-done")}).done(function(e){var n=t.isArray(e)?e.length:0;i.lastFetched+=n,(!r||n"+this.formattedReference()+"

          "),this},formattedReference:function(){var a=this.model,b=a.entryType(),c=a.fields(),d="",e=this._asSentence((c.author?c.author:"")+(c.year?" ("+c.year+")":""))+" ",f=c.title||"",g=c.pages?"pp. "+c.pages:"",h=c.address;if("article"==b){var i=(c.volume?c.volume:"")+(c.number?" ("+c.number+")":"")+(g?", "+g:"");d=e+this._asSentence(f)+(c.journal?"In "+c.journal+", ":"")+this._asSentence(i)+this._asSentence(c.address)+""}else d="inproceedings"==b||"proceedings"==b?e+this._asSentence(f)+(c.booktitle?"In "+c.booktitle+", ":"")+(g?g:"")+(h?", "+h:"")+".":"mastersthesis"==b||"phdthesis"==b?e+this._asSentence(f)+(c.howpublished?c.howpublished+". ":"")+(c.note?c.note+".":""):"techreport"==b?e+this._asSentence(f)+this._asSentence(c.institution)+this._asSentence(c.number)+this._asSentence(c.type):"book"==b||"inbook"==b||"incollection"==b?e+" "+this._formatBookInfo(c):e+" "+this._asSentence(f)+this._asSentence(c.howpublished)+this._asSentence(c.note);var j="";c.doi&&(j="http://dx.doi.org/"+c.doi,d+='[doi:'+c.doi+"]");var k=c.url||j;return k&&(d+='[Link]'),d},_formatBookInfo:function(a){var b="";return a.chapter&&(b+=a.chapter+" in "),a.title&&(b+=""+a.title+""),a.editor&&(b+=", Edited by "+a.editor+", "),a.publisher&&(b+=", "+a.publisher),a.pages&&(b+=", pp. "+a.pages),a.series&&(b+=", "+a.series+""),a.volume&&(b+=", Vol."+a.volume),a.issn&&(b+=", ISBN: "+a.issn),b+"."},_asSentence:function(a){return a&&a.trim()?a+". ":""}}),e=Backbone.View.extend({el:"#citations",initialize:function(){this.listenTo(this.collection,"add",this.renderCitation)},events:{"click .citations-to-bibtex":"showBibtex","click .citations-to-formatted":"showFormatted"},renderCitation:function(a){var b=new d({model:a});this.$(".citations-formatted").append(b.render().el);var c=this.$(".citations-bibtex-text");c.val(c.val()+"\n\r"+a.attributes.content)},render:function(){this.$el.html(this.citationsElement()),this.collection.each(function(a){this.renderCitation(a)},this),this.showFormatted()},showBibtex:function(){this.$(".citations-to-formatted").show(),this.$(".citations-to-bibtex").hide(),this.$(".citations-bibtex").show(),this.$(".citations-formatted").hide(),this.$(".citations-bibtex-text").select()},showFormatted:function(){this.$(".citations-to-formatted").hide(),this.$(".citations-to-bibtex").show(),this.$(".citations-bibtex").hide(),this.$(".citations-formatted").show()},partialWarningElement:function(){return this.collection.partial?['
          ',"Warning: This is a experimental feature. Most Galaxy tools will not annotate"," citations explicitly at this time. When writing up your analysis, please manually"," review your histories and find all references"," that should be cited in order to completely describe your work. Also, please remember to",' cite Galaxy.',"
          "].join(""):""},citationsElement:function(){return['
          ','
          ',c("Citations"),' ',' ',"
          ",'
          ',this.partialWarningElement(),'',"
          ",'
          ','',"
          ","
          "].join("")}});return{CitationView:d,CitationListView:e}}); -//# sourceMappingURL=../../../maps/mvc/citation/citation-view.js.map \ No newline at end of file +define(["mvc/base-mvc","mvc/citation/citation-model","utils/localization"],function(t,e,i){var n=Backbone.View.extend({tagName:"div",className:"citations",render:function(){return this.$el.append("

          "+this.formattedReference()+"

          "),this},formattedReference:function(){var t=this.model,e=t.entryType(),i=t.fields(),n="",o=this._asSentence((i.author?i.author:"")+(i.year?" ("+i.year+")":""))+" ",s=i.title||"",a=i.pages?"pp. "+i.pages:"",r=i.address;if("article"==e){var l=(i.volume?i.volume:"")+(i.number?" ("+i.number+")":"")+(a?", "+a:"");n=o+this._asSentence(s)+(i.journal?"In "+i.journal+", ":"")+this._asSentence(l)+this._asSentence(i.address)+""}else n="inproceedings"==e||"proceedings"==e?o+this._asSentence(s)+(i.booktitle?"In "+i.booktitle+", ":"")+(a||"")+(r?", "+r:"")+".":"mastersthesis"==e||"phdthesis"==e?o+this._asSentence(s)+(i.howpublished?i.howpublished+". ":"")+(i.note?i.note+".":""):"techreport"==e?o+this._asSentence(s)+this._asSentence(i.institution)+this._asSentence(i.number)+this._asSentence(i.type):"book"==e||"inbook"==e||"incollection"==e?o+" "+this._formatBookInfo(i):o+" "+this._asSentence(s)+this._asSentence(i.howpublished)+this._asSentence(i.note);var c="";i.doi&&(c="http://dx.doi.org/"+i.doi,n+='[doi:'+i.doi+"]");var h=i.url||c;return h&&(n+='[Link]'),n},_formatBookInfo:function(t){var e="";return t.chapter&&(e+=t.chapter+" in "),t.title&&(e+=""+t.title+""),t.editor&&(e+=", Edited by "+t.editor+", "),t.publisher&&(e+=", "+t.publisher),t.pages&&(e+=", pp. "+t.pages),t.series&&(e+=", "+t.series+""),t.volume&&(e+=", Vol."+t.volume),t.issn&&(e+=", ISBN: "+t.issn),e+"."},_asSentence:function(t){return t&&t.trim()?t+". ":""}}),o=Backbone.View.extend({el:"#citations",initialize:function(){this.listenTo(this.collection,"add",this.renderCitation)},events:{"click .citations-to-bibtex":"showBibtex","click .citations-to-formatted":"showFormatted"},renderCitation:function(t){var e=new n({model:t});this.$(".citations-formatted").append(e.render().el);var i=this.$(".citations-bibtex-text");i.val(i.val()+"\n\r"+t.attributes.content)},render:function(){this.$el.html(this.citationsElement()),this.collection.each(function(t){this.renderCitation(t)},this),this.showFormatted()},showBibtex:function(){this.$(".citations-to-formatted").show(),this.$(".citations-to-bibtex").hide(),this.$(".citations-bibtex").show(),this.$(".citations-formatted").hide(),this.$(".citations-bibtex-text").select()},showFormatted:function(){this.$(".citations-to-formatted").hide(),this.$(".citations-to-bibtex").show(),this.$(".citations-bibtex").hide(),this.$(".citations-formatted").show()},partialWarningElement:function(){return this.collection.partial?['
          ',"Warning: This is a experimental feature. Most Galaxy tools will not annotate"," citations explicitly at this time. When writing up your analysis, please manually"," review your histories and find all references"," that should be cited in order to completely describe your work. Also, please remember to",' cite Galaxy.',"
          "].join(""):""},citationsElement:function(){return['
          ','
          ',i("Citations"),' ',' ',"
          ",'
          ',this.partialWarningElement(),'',"
          ",'
          ','',"
          ","
          "].join("")}});return{CitationView:n,CitationListView:o}}); +//# sourceMappingURL=../../../maps/mvc/citation/citation-view.js.map diff --git a/static/scripts/mvc/collection/base-creator.js b/static/scripts/mvc/collection/base-creator.js index fd6f71d8179..05acca3a757 100644 --- a/static/scripts/mvc/collection/base-creator.js +++ b/static/scripts/mvc/collection/base-creator.js @@ -1,2 +1,2 @@ -define([],function(){var a={_validationWarning:function(a,b){var c="validation-warning";"name"===a&&(a=this.$(".collection-name").add(this.$(".collection-name-prompt")),this.$(".collection-name").focus().select()),b?(a=a||this.$("."+c),a.removeClass(c)):a.addClass(c)},_changeHideOriginals:function(){this.hideOriginals=this.$(".hide-originals").prop("checked")},_changeName:function(){this._validationWarning("name",!!this._getName())},_nameCheckForEnter:function(a){13!==a.keyCode||this.blocking||this._clickCreate()},_getName:function(){return _.escape(this.$(".collection-name").val())},_clickMoreHelp:function(a){a.stopPropagation(),this.$(".main-help").addClass("expanded"),this.$(".more-help").hide()},_clickLessHelp:function(a){a.stopPropagation(),this.$(".main-help").removeClass("expanded"),this.$(".more-help").show()},_toggleHelp:function(a){a.stopPropagation(),this.$(".main-help").toggleClass("expanded"),this.$(".more-help").toggle()},_showAlert:function(a,b){b=b||"alert-danger",this.$(".main-help").hide(),this.$(".header .alert").attr("class","alert alert-dismissable").addClass(b).show().find(".alert-message").html(a)},_hideAlert:function(){this.$(".main-help").show(),this.$(".header .alert").hide()},_cancelCreate:function(){"function"==typeof this.oncancel&&this.oncancel.call(this)},_clickCreate:function(){var a=this._getName();a?this.blocking||this.createList(a):this._validationWarning("name")},_setUpCommonSettings:function(a){this.hideOriginals=a.defaultHideSourceItems||!1},_renderFooter:function(){var a=this,b=this.$(".footer").empty().html(this.templates.footer());return _.each(this.footerSettings,function(b,c){this.$(c).prop("checked",a[b])}),"function"==typeof this.oncancel&&this.$(".cancel-create.btn").show(),b},_creatorTemplates:{main:_.template(['
          ','
          ',''].join(""))}};return{CollectionCreatorMixin:a}}); -//# sourceMappingURL=../../../maps/mvc/collection/base-creator.js.map \ No newline at end of file +define([],function(){return{CollectionCreatorMixin:{_validationWarning:function(e,i){"name"===e&&(e=this.$(".collection-name").add(this.$(".collection-name-prompt")),this.$(".collection-name").focus().select()),i?(e=e||this.$(".validation-warning"),e.removeClass("validation-warning")):e.addClass("validation-warning")},_changeHideOriginals:function(e){this.hideOriginals=this.$(".hide-originals").prop("checked")},_changeName:function(e){this._validationWarning("name",!!this._getName())},_nameCheckForEnter:function(e){13!==e.keyCode||this.blocking||this._clickCreate()},_getName:function(){return _.escape(this.$(".collection-name").val())},_clickMoreHelp:function(e){e.stopPropagation(),this.$(".main-help").addClass("expanded"),this.$(".more-help").hide()},_clickLessHelp:function(e){e.stopPropagation(),this.$(".main-help").removeClass("expanded"),this.$(".more-help").show()},_toggleHelp:function(e){e.stopPropagation(),this.$(".main-help").toggleClass("expanded"),this.$(".more-help").toggle()},_showAlert:function(e,i){i=i||"alert-danger",this.$(".main-help").hide(),this.$(".header .alert").attr("class","alert alert-dismissable").addClass(i).show().find(".alert-message").html(e)},_hideAlert:function(e){this.$(".main-help").show(),this.$(".header .alert").hide()},_cancelCreate:function(e){"function"==typeof this.oncancel&&this.oncancel.call(this)},_clickCreate:function(e){var i=this._getName();i?this.blocking||this.createList(i):this._validationWarning("name")},_setUpCommonSettings:function(e){this.hideOriginals=e.defaultHideSourceItems||!1},_renderFooter:function(e,i){var t=this,n=this.$(".footer").empty().html(this.templates.footer());return _.each(this.footerSettings,function(e,i){this.$(i).prop("checked",t[e])}),"function"==typeof this.oncancel&&this.$(".cancel-create.btn").show(),n},_creatorTemplates:{main:_.template(['
          ','
          ',''].join(""))}}}}); +//# sourceMappingURL=../../../maps/mvc/collection/base-creator.js.map diff --git a/static/scripts/mvc/collection/collection-li-edit.js b/static/scripts/mvc/collection/collection-li-edit.js index dc47398c7e8..301b6b14f75 100644 --- a/static/scripts/mvc/collection/collection-li-edit.js +++ b/static/scripts/mvc/collection/collection-li-edit.js @@ -1,2 +1,2 @@ -define(["mvc/collection/collection-li","mvc/dataset/dataset-li-edit","mvc/base-mvc","utils/localization"],function(a,b){"use strict";var c=a.DCListItemView,d=c.extend({initialize:function(a){c.prototype.initialize.call(this,a)},toString:function(){var a=this.model?this.model+"":"(no model)";return"DCListItemEdit("+a+")"}}),e=a.DCEListItemView,f=e.extend({initialize:function(a){e.prototype.initialize.call(this,a)},toString:function(){var a=this.model?this.model+"":"(no model)";return"DCEListItemEdit("+a+")"}}),g=b.DatasetListItemEdit.extend({initialize:function(a){b.DatasetListItemEdit.prototype.initialize.call(this,a)},_fetchModelDetails:function(){var a=this;return a.model.inReadyState()&&!a.model.hasDetails()?a.model.fetch({silent:!0}):jQuery.when()},_renderDeleteButton:function(){return null},toString:function(){var a=this.model?this.model+"":"(no model)";return"DatasetDCEListItemEdit("+a+")"}});g.prototype.templates=function(){return _.extend({},b.DatasetListItemEdit.prototype.templates,{titleBar:a.DatasetDCEListItemView.prototype.templates.titleBar})}();var h=a.NestedDCDCEListItemView.extend({toString:function(){var a=this.model?this.model+"":"(no model)";return"NestedDCDCEListItemEdit("+a+")"}});return{DCListItemEdit:d,DCEListItemEdit:f,DatasetDCEListItemEdit:g,NestedDCDCEListItemEdit:h}}); -//# sourceMappingURL=../../../maps/mvc/collection/collection-li-edit.js.map \ No newline at end of file +define(["mvc/collection/collection-li","mvc/dataset/dataset-li-edit","mvc/base-mvc","utils/localization"],function(t,e,i,n){"use strict";var o=t.DCListItemView,s=o.extend({initialize:function(t){o.prototype.initialize.call(this,t)},toString:function(){return"DCListItemEdit("+(this.model?this.model+"":"(no model)")+")"}}),l=t.DCEListItemView,d=l.extend({initialize:function(t){l.prototype.initialize.call(this,t)},toString:function(){return"DCEListItemEdit("+(this.model?this.model+"":"(no model)")+")"}}),a=e.DatasetListItemEdit.extend({initialize:function(t){e.DatasetListItemEdit.prototype.initialize.call(this,t)},_fetchModelDetails:function(){var t=this;return t.model.inReadyState()&&!t.model.hasDetails()?t.model.fetch({silent:!0}):jQuery.when()},_renderDeleteButton:function(){return null},toString:function(){return"DatasetDCEListItemEdit("+(this.model?this.model+"":"(no model)")+")"}});return a.prototype.templates=function(){return _.extend({},e.DatasetListItemEdit.prototype.templates,{titleBar:t.DatasetDCEListItemView.prototype.templates.titleBar})}(),{DCListItemEdit:s,DCEListItemEdit:d,DatasetDCEListItemEdit:a,NestedDCDCEListItemEdit:t.NestedDCDCEListItemView.extend({toString:function(){return"NestedDCDCEListItemEdit("+(this.model?this.model+"":"(no model)")+")"}})}}); +//# sourceMappingURL=../../../maps/mvc/collection/collection-li-edit.js.map diff --git a/static/scripts/mvc/collection/collection-li.js b/static/scripts/mvc/collection/collection-li.js index 5b764376a62..40fe4d49585 100644 --- a/static/scripts/mvc/collection/collection-li.js +++ b/static/scripts/mvc/collection/collection-li.js @@ -1,2 +1,2 @@ -define(["mvc/list/list-item","mvc/dataset/dataset-li","mvc/base-mvc","utils/localization"],function(a,b,c,d){"use strict";var e=a.FoldoutListItemView,f=a.ListItemView,g=e.extend({className:e.prototype.className+" dataset-collection",id:function(){return["dataset_collection",this.model.get("id")].join("-")},initialize:function(a){this.linkTarget=a.linkTarget||"_blank",this.hasUser=a.hasUser,e.prototype.initialize.call(this,a)},_setUpListeners:function(){e.prototype._setUpListeners.call(this),this.listenTo(this.model,"change",function(a){_.has(a.changed,"deleted")?this.render():_.has(a.changed,"element_count")&&this.$("> .title-bar .subtitle").replaceWith(this._renderSubtitle())})},_renderSubtitle:function(){return $(this.templates.subtitle(this.model.toJSON(),this))},_getFoldoutPanelOptions:function(){var a=e.prototype._getFoldoutPanelOptions.call(this);return _.extend(a,{linkTarget:this.linkTarget,hasUser:this.hasUser})},$selector:function(){return this.$("> .selector")},toString:function(){var a=this.model?this.model+"":"(no model)";return"DCListItemView("+a+")"}});g.prototype.templates=function(){var a=_.extend({},e.prototype.templates.warnings,{error:c.wrapTemplate(["<% if( model.error ){ %>",'
          ',d("There was an error getting the data for this collection"),": <%- model.error %>","
          ","<% } %>"]),purged:c.wrapTemplate(["<% if( model.purged ){ %>",'
          ',d("This collection has been deleted and removed from disk"),"
          ","<% } %>"]),deleted:c.wrapTemplate(["<% if( model.deleted && !model.purged ){ %>",'
          ',d("This collection has been deleted"),"
          ","<% } %>"])}),b=c.wrapTemplate(['
          ','
          ','<%- collection.element_identifier || collection.name %>',"
          ",'
          ',"
          "],"collection"),f=c.wrapTemplate(['
          ','<% var countText = collection.element_count? ( collection.element_count + " " ) : ""; %>','<% if( collection.collection_type === "list" ){ %>',d("a list of <%- countText %>datasets"),'<% } else if( collection.collection_type === "paired" ){ %>',d("a pair of datasets"),'<% } else if( collection.collection_type === "list:paired" ){ %>',d("a list of <%- countText %>dataset pairs"),'<% } else if( collection.collection_type === "list:list" ){ %>',d("a list of <%- countText %>dataset lists"),"<% } %>","
          "],"collection");return _.extend({},e.prototype.templates,{warnings:a,titleBar:b,subtitle:f})}();var h=f.extend({className:f.prototype.className+" dataset-collection-element",initialize:function(a){a.logger&&(this.logger=this.model.logger=a.logger),this.log("DCEListItemView.initialize:",a),f.prototype.initialize.call(this,a)},toString:function(){var a=this.model?this.model+"":"(no model)";return"DCEListItemView("+a+")"}});h.prototype.templates=function(){var a=c.wrapTemplate(['
          ','
          ','<%- element.element_identifier %>',"
          ",'
          ',"
          "],"element");return _.extend({},f.prototype.templates,{titleBar:a})}();var i=b.DatasetListItemView.extend({className:b.DatasetListItemView.prototype.className+" dataset-collection-element",initialize:function(a){a.logger&&(this.logger=this.model.logger=a.logger),this.log("DatasetDCEListItemView.initialize:",a),b.DatasetListItemView.prototype.initialize.call(this,a)},_fetchModelDetails:function(){var a=this;return a.model.inReadyState()&&!a.model.hasDetails()?a.model.fetch({silent:!0}):jQuery.when()},toString:function(){var a=this.model?this.model+"":"(no model)";return"DatasetDCEListItemView("+a+")"}});i.prototype.templates=function(){var a=c.wrapTemplate(['
          ','','
          ','<%- element.element_identifier %>',"
          ","
          "],"element");return _.extend({},b.DatasetListItemView.prototype.templates,{titleBar:a})}();var j=g.extend({className:g.prototype.className+" dataset-collection-element",_swapNewRender:function(a){g.prototype._swapNewRender.call(this,a);var b=this.model.get("state")||"ok";return this.$el.addClass("state-"+b),this.$el},toString:function(){var a=this.model?this.model+"":"(no model)";return"NestedDCDCEListItemView("+a+")"}});return{DCListItemView:g,DCEListItemView:h,DatasetDCEListItemView:i,NestedDCDCEListItemView:j}}); -//# sourceMappingURL=../../../maps/mvc/collection/collection-li.js.map \ No newline at end of file +define(["mvc/list/list-item","mvc/dataset/dataset-li","mvc/base-mvc","utils/localization"],function(e,t,i,l){"use strict";var s=e.FoldoutListItemView,a=e.ListItemView,o=s.extend({className:s.prototype.className+" dataset-collection",id:function(){return["dataset_collection",this.model.get("id")].join("-")},initialize:function(e){this.linkTarget=e.linkTarget||"_blank",this.hasUser=e.hasUser,s.prototype.initialize.call(this,e)},_setUpListeners:function(){s.prototype._setUpListeners.call(this),this.listenTo(this.model,"change",function(e,t){_.has(e.changed,"deleted")?this.render():_.has(e.changed,"element_count")&&this.$("> .title-bar .subtitle").replaceWith(this._renderSubtitle())})},_renderSubtitle:function(){return $(this.templates.subtitle(this.model.toJSON(),this))},_getFoldoutPanelOptions:function(){var e=s.prototype._getFoldoutPanelOptions.call(this);return _.extend(e,{linkTarget:this.linkTarget,hasUser:this.hasUser})},$selector:function(){return this.$("> .selector")},toString:function(){return"DCListItemView("+(this.model?this.model+"":"(no model)")+")"}});o.prototype.templates=function(){var e=_.extend({},s.prototype.templates.warnings,{error:i.wrapTemplate(["<% if( model.error ){ %>",'
          ',l("There was an error getting the data for this collection"),": <%- model.error %>","
          ","<% } %>"]),purged:i.wrapTemplate(["<% if( model.purged ){ %>",'
          ',l("This collection has been deleted and removed from disk"),"
          ","<% } %>"]),deleted:i.wrapTemplate(["<% if( model.deleted && !model.purged ){ %>",'
          ',l("This collection has been deleted"),"
          ","<% } %>"])}),t=i.wrapTemplate(['
          ','
          ','<%- collection.element_identifier || collection.name %>',"
          ",'
          ',"
          "],"collection"),a=i.wrapTemplate(['
          ','<% var countText = collection.element_count? ( collection.element_count + " " ) : ""; %>','<% if( collection.collection_type === "list" ){ %>',l("a list of <%- countText %>datasets"),'<% } else if( collection.collection_type === "paired" ){ %>',l("a pair of datasets"),'<% } else if( collection.collection_type === "list:paired" ){ %>',l("a list of <%- countText %>dataset pairs"),'<% } else if( collection.collection_type === "list:list" ){ %>',l("a list of <%- countText %>dataset lists"),"<% } %>","
          "],"collection");return _.extend({},s.prototype.templates,{warnings:e,titleBar:t,subtitle:a})}();var n=a.extend({className:a.prototype.className+" dataset-collection-element",initialize:function(e){e.logger&&(this.logger=this.model.logger=e.logger),this.log("DCEListItemView.initialize:",e),a.prototype.initialize.call(this,e)},toString:function(){return"DCEListItemView("+(this.model?this.model+"":"(no model)")+")"}});n.prototype.templates=function(){var e=i.wrapTemplate(['
          ','
          ','<%- element.element_identifier %>',"
          ",'
          ',"
          "],"element");return _.extend({},a.prototype.templates,{titleBar:e})}();var r=t.DatasetListItemView.extend({className:t.DatasetListItemView.prototype.className+" dataset-collection-element",initialize:function(e){e.logger&&(this.logger=this.model.logger=e.logger),this.log("DatasetDCEListItemView.initialize:",e),t.DatasetListItemView.prototype.initialize.call(this,e)},_fetchModelDetails:function(){var e=this;return e.model.inReadyState()&&!e.model.hasDetails()?e.model.fetch({silent:!0}):jQuery.when()},toString:function(){return"DatasetDCEListItemView("+(this.model?this.model+"":"(no model)")+")"}});r.prototype.templates=function(){var e=i.wrapTemplate(['
          ','','
          ','<%- element.element_identifier %>',"
          ","
          "],"element");return _.extend({},t.DatasetListItemView.prototype.templates,{titleBar:e})}();var c=o.extend({className:o.prototype.className+" dataset-collection-element",_swapNewRender:function(e){o.prototype._swapNewRender.call(this,e);var t=this.model.get("state")||"ok";return this.$el.addClass("state-"+t),this.$el},toString:function(){return"NestedDCDCEListItemView("+(this.model?this.model+"":"(no model)")+")"}});return{DCListItemView:o,DCEListItemView:n,DatasetDCEListItemView:r,NestedDCDCEListItemView:c}}); +//# sourceMappingURL=../../../maps/mvc/collection/collection-li.js.map diff --git a/static/scripts/mvc/collection/collection-model.js b/static/scripts/mvc/collection/collection-model.js index 2eac87e99fb..96110865030 100644 --- a/static/scripts/mvc/collection/collection-model.js +++ b/static/scripts/mvc/collection/collection-model.js @@ -1,2 +1,2 @@ -define(["mvc/dataset/dataset-model","mvc/base-mvc","utils/localization"],function(a,b){"use strict";var c={defaults:{model_class:"DatasetCollectionElement",element_identifier:null,element_index:null,element_type:null},_mergeObject:function(a){return _.extend(a,a.object,{element_id:a.id}),delete a.object,a},constructor:function(a){a=this._mergeObject(a),this.idAttribute="element_id",Backbone.Model.apply(this,arguments)},parse:function(a){var b=a;return b=this._mergeObject(b)}},d=Backbone.Model.extend(b.LoggableMixin).extend(c).extend({_logNamespace:"collections"}),e=Backbone.Collection.extend(b.LoggableMixin).extend({_logNamespace:"collections",model:d,toString:function(){return["DatasetCollectionElementCollection(",this.length,")"].join("")}}),f=a.DatasetAssociation.extend(b.mixin(c,{url:function(){return this.has("history_id")?Galaxy.root+"api/histories/"+this.get("history_id")+"/contents/"+this.get("id"):(console.warn("no endpoint for non-hdas within a collection yet"),Galaxy.root+"api/datasets")},defaults:_.extend({},a.DatasetAssociation.prototype.defaults,c.defaults),constructor:function(a,b){this.debug(" DatasetDCE.constructor:",a,b),c.constructor.call(this,a,b)},hasDetails:function(){return this.elements&&this.elements.length},toString:function(){var a=this.get("element_identifier");return["DatasetDCE(",a,")"].join("")}})),g=e.extend({model:f,toString:function(){return["DatasetDCECollection(",this.length,")"].join("")}}),h=Backbone.Model.extend(b.LoggableMixin).extend(b.SearchableModelMixin).extend({_logNamespace:"collections",defaults:{collection_type:null,deleted:!1},collectionClass:e,initialize:function(a,b){this.debug(this+"(DatasetCollection).initialize:",a,b,this),this.elements=this._createElementsModel(),this.on("change:elements",function(){this.log("change:elements"),this.elements=this._createElementsModel()})},_createElementsModel:function(){this.debug(this+"._createElementsModel",this.collectionClass,this.get("elements"),this.elements);var a=this.get("elements")||[];return this.unset("elements",{silent:!0}),this.elements=new this.collectionClass(a),this.elements},toJSON:function(){var a=Backbone.Model.prototype.toJSON.call(this);return this.elements&&(a.elements=this.elements.toJSON()),a},inReadyState:function(){var a=this.get("populated");return this.isDeletedOrPurged()||a},hasDetails:function(){return 0!==this.elements.length},getVisibleContents:function(){return this.elements},parse:function(a,b){var c=Backbone.Model.prototype.parse.call(this,a,b);return c.create_time&&(c.create_time=new Date(c.create_time)),c.update_time&&(c.update_time=new Date(c.update_time)),c},"delete":function(a){return this.get("deleted")?jQuery.when():this.save({deleted:!0},a)},undelete:function(a){return!this.get("deleted")||this.get("purged")?jQuery.when():this.save({deleted:!1},a)},isDeletedOrPurged:function(){return this.get("deleted")||this.get("purged")},searchAttributes:["name"],toString:function(){var a=[this.get("id"),this.get("name")||this.get("element_identifier")];return"DatasetCollection("+a.join(",")+")"}}),i=h.extend({collectionClass:g,toString:function(){return"List"+h.prototype.toString.call(this)}}),j=i.extend({toString:function(){return"Pair"+h.prototype.toString.call(this)}}),k=h.extend(b.mixin(c,{constructor:function(a,b){this.debug(" NestedDCDCE.constructor:",a,b),c.constructor.call(this,a,b)},toString:function(){var a=this.object?""+this.object:this.get("element_identifier");return["NestedDCDCE(",a,")"].join("")}})),l=e.extend({model:k,toString:function(){return["NestedDCDCECollection(",this.length,")"].join("")}}),m=j.extend(b.mixin(c,{constructor:function(a,b){this.debug(" NestedPairDCDCE.constructor:",a,b),c.constructor.call(this,a,b)},toString:function(){var a=this.object?""+this.object:this.get("element_identifier");return["NestedPairDCDCE(",a,")"].join("")}})),n=l.extend({model:m,toString:function(){return["NestedPairDCDCECollection(",this.length,")"].join("")}}),o=h.extend({collectionClass:n,toString:function(){return["ListPairedDatasetCollection(",this.get("name"),")"].join("")}}),p=i.extend(b.mixin(c,{constructor:function(a,b){this.debug(" NestedListDCDCE.constructor:",a,b),c.constructor.call(this,a,b)},toString:function(){var a=this.object?""+this.object:this.get("element_identifier");return["NestedListDCDCE(",a,")"].join("")}})),q=l.extend({model:p,toString:function(){return["NestedListDCDCECollection(",this.length,")"].join("")}}),r=h.extend({collectionClass:q,toString:function(){return["ListOfListsDatasetCollection(",this.get("name"),")"].join("")}});return{ListDatasetCollection:i,PairDatasetCollection:j,ListPairedDatasetCollection:o,ListOfListsDatasetCollection:r}}); -//# sourceMappingURL=../../../maps/mvc/collection/collection-model.js.map \ No newline at end of file +define(["mvc/dataset/dataset-model","mvc/base-mvc","utils/localization"],function(t,e,n){"use strict";var i={defaults:{model_class:"DatasetCollectionElement",element_identifier:null,element_index:null,element_type:null},_mergeObject:function(t){return _.extend(t,t.object,{element_id:t.id}),delete t.object,t},constructor:function(t,e){t=this._mergeObject(t),this.idAttribute="element_id",Backbone.Model.apply(this,arguments)},parse:function(t,e){var n=t;return n=this._mergeObject(n)}},o=Backbone.Model.extend(e.LoggableMixin).extend(i).extend({_logNamespace:"collections"}),s=Backbone.Collection.extend(e.LoggableMixin).extend({_logNamespace:"collections",model:o,toString:function(){return["DatasetCollectionElementCollection(",this.length,")"].join("")}}),l=t.DatasetAssociation.extend(e.mixin(i,{url:function(){return this.has("history_id")?Galaxy.root+"api/histories/"+this.get("history_id")+"/contents/"+this.get("id"):(console.warn("no endpoint for non-hdas within a collection yet"),Galaxy.root+"api/datasets")},defaults:_.extend({},t.DatasetAssociation.prototype.defaults,i.defaults),constructor:function(t,e){this.debug("\t DatasetDCE.constructor:",t,e),i.constructor.call(this,t,e)},hasDetails:function(){return this.elements&&this.elements.length},toString:function(){return["DatasetDCE(",this.get("element_identifier"),")"].join("")}})),r=s.extend({model:l,toString:function(){return["DatasetDCECollection(",this.length,")"].join("")}}),c=Backbone.Model.extend(e.LoggableMixin).extend(e.SearchableModelMixin).extend({_logNamespace:"collections",defaults:{collection_type:null,deleted:!1},collectionClass:s,initialize:function(t,e){this.debug(this+"(DatasetCollection).initialize:",t,e,this),this.elements=this._createElementsModel(),this.on("change:elements",function(){this.log("change:elements"),this.elements=this._createElementsModel()})},_createElementsModel:function(){this.debug(this+"._createElementsModel",this.collectionClass,this.get("elements"),this.elements);var t=this.get("elements")||[];return this.unset("elements",{silent:!0}),this.elements=new this.collectionClass(t),this.elements},toJSON:function(){var t=Backbone.Model.prototype.toJSON.call(this);return this.elements&&(t.elements=this.elements.toJSON()),t},inReadyState:function(){var t=this.get("populated");return this.isDeletedOrPurged()||t},hasDetails:function(){return 0!==this.elements.length},getVisibleContents:function(t){return this.elements},parse:function(t,e){var n=Backbone.Model.prototype.parse.call(this,t,e);return n.create_time&&(n.create_time=new Date(n.create_time)),n.update_time&&(n.update_time=new Date(n.update_time)),n},delete:function(t){return this.get("deleted")?jQuery.when():this.save({deleted:!0},t)},undelete:function(t){return!this.get("deleted")||this.get("purged")?jQuery.when():this.save({deleted:!1},t)},isDeletedOrPurged:function(){return this.get("deleted")||this.get("purged")},searchAttributes:["name"],toString:function(){return"DatasetCollection("+[this.get("id"),this.get("name")||this.get("element_identifier")].join(",")+")"}}),a=c.extend({collectionClass:r,toString:function(){return"List"+c.prototype.toString.call(this)}}),d=a.extend({toString:function(){return"Pair"+c.prototype.toString.call(this)}}),u=c.extend(e.mixin(i,{constructor:function(t,e){this.debug("\t NestedDCDCE.constructor:",t,e),i.constructor.call(this,t,e)},toString:function(){return["NestedDCDCE(",this.object?""+this.object:this.get("element_identifier"),")"].join("")}})),h=s.extend({model:u,toString:function(){return["NestedDCDCECollection(",this.length,")"].join("")}}),g=d.extend(e.mixin(i,{constructor:function(t,e){this.debug("\t NestedPairDCDCE.constructor:",t,e),i.constructor.call(this,t,e)},toString:function(){return["NestedPairDCDCE(",this.object?""+this.object:this.get("element_identifier"),")"].join("")}})),m=h.extend({model:g,toString:function(){return["NestedPairDCDCECollection(",this.length,")"].join("")}}),f=c.extend({collectionClass:m,toString:function(){return["ListPairedDatasetCollection(",this.get("name"),")"].join("")}}),C=a.extend(e.mixin(i,{constructor:function(t,e){this.debug("\t NestedListDCDCE.constructor:",t,e),i.constructor.call(this,t,e)},toString:function(){return["NestedListDCDCE(",this.object?""+this.object:this.get("element_identifier"),")"].join("")}})),D=h.extend({model:C,toString:function(){return["NestedListDCDCECollection(",this.length,")"].join("")}});return{ListDatasetCollection:a,PairDatasetCollection:d,ListPairedDatasetCollection:f,ListOfListsDatasetCollection:c.extend({collectionClass:D,toString:function(){return["ListOfListsDatasetCollection(",this.get("name"),")"].join("")}})}}); +//# sourceMappingURL=../../../maps/mvc/collection/collection-model.js.map diff --git a/static/scripts/mvc/collection/collection-view-edit.js b/static/scripts/mvc/collection/collection-view-edit.js index 1614c937f50..b2aaa8b6d5b 100644 --- a/static/scripts/mvc/collection/collection-view-edit.js +++ b/static/scripts/mvc/collection/collection-view-edit.js @@ -1,2 +1,2 @@ -define(["mvc/collection/collection-view","mvc/collection/collection-model","mvc/collection/collection-li-edit","mvc/base-mvc","utils/localization","ui/editable-text"],function(a,b,c,d,e){"use strict";var f=a.CollectionView,g=f.extend({DatasetDCEViewClass:c.DatasetDCEListItemEdit,NestedDCDCEViewClass:c.NestedDCDCEListItemEdit,initialize:function(a){f.prototype.initialize.call(this,a)},_setUpBehaviors:function(a){if(a=a||this.$el,f.prototype._setUpBehaviors.call(this,a),this.model&&Galaxy.user&&!Galaxy.user.isAnonymous()){var b=this,c="> .controls .name";a.find(c).attr("title",e("Click to rename collection")).tooltip({placement:"bottom"}).make_text_editable({on_finish:function(a){var d=b.model.get("name");a&&a!==d?(b.$el.find(c).text(a),b.model.save({name:a}).fail(function(){b.$el.find(c).text(b.model.previous("name"))})):b.$el.find(c).text(d)}})}},toString:function(){return"CollectionViewEdit("+(this.model?this.model.get("name"):"")+")"}}),h=g.extend({DatasetDCEViewClass:c.DatasetDCEListItemEdit,toString:function(){return"ListCollectionViewEdit("+(this.model?this.model.get("name"):"")+")"}}),i=h.extend({toString:function(){return"PairCollectionViewEdit("+(this.model?this.model.get("name"):"")+")"}}),j=i.extend({_setUpBehaviors:function(a){f.prototype._setUpBehaviors.call(this,a)},toString:function(){return"NestedPairCollectionViewEdit("+(this.model?this.model.get("name"):"")+")"}}),k=g.extend({NestedDCDCEViewClass:c.NestedDCDCEListItemEdit.extend({foldoutPanelClass:j}),toString:function(){return"ListOfPairsCollectionViewEdit("+(this.model?this.model.get("name"):"")+")"}}),l=g.extend({NestedDCDCEViewClass:c.NestedDCDCEListItemEdit.extend({foldoutPanelClass:j}),toString:function(){return"ListOfListsCollectionViewEdit("+(this.model?this.model.get("name"):"")+")"}});return{CollectionViewEdit:g,ListCollectionViewEdit:h,PairCollectionViewEdit:i,ListOfPairsCollectionViewEdit:k,ListOfListsCollectionViewEdit:l}}); -//# sourceMappingURL=../../../maps/mvc/collection/collection-view-edit.js.map \ No newline at end of file +define(["mvc/collection/collection-view","mvc/collection/collection-model","mvc/collection/collection-li-edit","mvc/base-mvc","utils/localization","ui/editable-text"],function(t,e,i,o,n){"use strict";var l=t.CollectionView,s=l.extend({DatasetDCEViewClass:i.DatasetDCEListItemEdit,NestedDCDCEViewClass:i.NestedDCDCEListItemEdit,initialize:function(t){l.prototype.initialize.call(this,t)},_setUpBehaviors:function(t){if(t=t||this.$el,l.prototype._setUpBehaviors.call(this,t),this.model&&Galaxy.user&&!Galaxy.user.isAnonymous()){var e=this;t.find("> .controls .name").attr("title",n("Click to rename collection")).tooltip({placement:"bottom"}).make_text_editable({on_finish:function(t){var i=e.model.get("name");t&&t!==i?(e.$el.find("> .controls .name").text(t),e.model.save({name:t}).fail(function(){e.$el.find("> .controls .name").text(e.model.previous("name"))})):e.$el.find("> .controls .name").text(i)}})}},toString:function(){return"CollectionViewEdit("+(this.model?this.model.get("name"):"")+")"}}),a=s.extend({DatasetDCEViewClass:i.DatasetDCEListItemEdit,toString:function(){return"ListCollectionViewEdit("+(this.model?this.model.get("name"):"")+")"}}),d=a.extend({toString:function(){return"PairCollectionViewEdit("+(this.model?this.model.get("name"):"")+")"}}),c=d.extend({_setUpBehaviors:function(t){l.prototype._setUpBehaviors.call(this,t)},toString:function(){return"NestedPairCollectionViewEdit("+(this.model?this.model.get("name"):"")+")"}});return{CollectionViewEdit:s,ListCollectionViewEdit:a,PairCollectionViewEdit:d,ListOfPairsCollectionViewEdit:s.extend({NestedDCDCEViewClass:i.NestedDCDCEListItemEdit.extend({foldoutPanelClass:c}),toString:function(){return"ListOfPairsCollectionViewEdit("+(this.model?this.model.get("name"):"")+")"}}),ListOfListsCollectionViewEdit:s.extend({NestedDCDCEViewClass:i.NestedDCDCEListItemEdit.extend({foldoutPanelClass:c}),toString:function(){return"ListOfListsCollectionViewEdit("+(this.model?this.model.get("name"):"")+")"}})}}); +//# sourceMappingURL=../../../maps/mvc/collection/collection-view-edit.js.map diff --git a/static/scripts/mvc/collection/collection-view.js b/static/scripts/mvc/collection/collection-view.js index 4bdc54bbf1d..2164497573c 100644 --- a/static/scripts/mvc/collection/collection-view.js +++ b/static/scripts/mvc/collection/collection-view.js @@ -1,2 +1,2 @@ -define(["mvc/list/list-view","mvc/collection/collection-model","mvc/collection/collection-li","mvc/base-mvc","utils/localization"],function(a,b,c,d,e){"use strict";var f="collections",g=a.ModelListPanel,h=g.extend({_logNamespace:f,className:g.prototype.className+" dataset-collection-panel",DatasetDCEViewClass:c.DatasetDCEListItemView,NestedDCDCEViewClass:c.NestedDCDCEListItemView,modelCollectionKey:"elements",initialize:function(a){g.prototype.initialize.call(this,a),this.linkTarget=a.linkTarget||"_blank",this.hasUser=a.hasUser,this.panelStack=[],this.parentName=a.parentName,this.foldoutStyle=a.foldoutStyle||"foldout"},_queueNewRender:function(a,b){b=void 0===b?this.fxSpeed:b;var c=this;c.log("_queueNewRender:",a,b),c._swapNewRender(a),c.trigger("rendered",c)},_filterCollection:function(){return this.model.getVisibleContents()},_getItemViewClass:function(a){switch(a.get("element_type")){case"hda":return this.DatasetDCEViewClass;case"dataset_collection":return this.NestedDCDCEViewClass}throw new TypeError("Unknown element type:",a.get("element_type"))},_getItemViewOptions:function(a){var b=g.prototype._getItemViewOptions.call(this,a);return _.extend(b,{linkTarget:this.linkTarget,hasUser:this.hasUser,foldoutStyle:this.foldoutStyle})},_setUpItemViewListeners:function(a){var b=this;return g.prototype._setUpItemViewListeners.call(b,a),b.listenTo(a,{"expanded:drilldown":function(a,b){this._expandDrilldownPanel(b)},"collapsed:drilldown":function(a,b){this._collapseDrilldownPanel(b)}}),this},_expandDrilldownPanel:function(a){this.panelStack.push(a),this.$("> .controls").add(this.$list()).hide(),a.parentName=this.model.get("name"),this.$el.append(a.render().$el)},_collapseDrilldownPanel:function(){this.panelStack.pop(),this.render()},events:{"click .navigation .back":"close"},close:function(){this.remove(),this.trigger("close")},toString:function(){return"CollectionView("+(this.model?this.model.get("name"):"")+")"}});h.prototype.templates=function(){var a=d.wrapTemplate(['
          ','",'
          ','
          <%- collection.name || collection.element_identifier %>
          ','
          ','<% if( collection.collection_type === "list" ){ %>',e("a list of datasets"),'<% } else if( collection.collection_type === "paired" ){ %>',e("a pair of datasets"),'<% } else if( collection.collection_type === "list:paired" ){ %>',e("a list of paired datasets"),'<% } else if( collection.collection_type === "list:list" ){ %>',e("a list of dataset lists"),"<% } %>","
          ","
          ","
          "],"collection");return _.extend(_.clone(g.prototype.templates),{controls:a})}();var i=h.extend({DatasetDCEViewClass:c.DatasetDCEListItemView,toString:function(){return"ListCollectionView("+(this.model?this.model.get("name"):"")+")"}}),j=i.extend({toString:function(){return"PairCollectionView("+(this.model?this.model.get("name"):"")+")"}}),k=h.extend({NestedDCDCEViewClass:c.NestedDCDCEListItemView.extend({foldoutPanelClass:j}),toString:function(){return"ListOfPairsCollectionView("+(this.model?this.model.get("name"):"")+")"}}),l=h.extend({NestedDCDCEViewClass:c.NestedDCDCEListItemView.extend({foldoutPanelClass:j}),toString:function(){return"ListOfListsCollectionView("+(this.model?this.model.get("name"):"")+")"}});return{CollectionView:h,ListCollectionView:i,PairCollectionView:j,ListOfPairsCollectionView:k,ListOfListsCollectionView:l}}); -//# sourceMappingURL=../../../maps/mvc/collection/collection-view.js.map \ No newline at end of file +define(["mvc/list/list-view","mvc/collection/collection-model","mvc/collection/collection-li","mvc/base-mvc","utils/localization"],function(e,t,i,l,s){"use strict";var n=e.ModelListPanel,o=n.extend({_logNamespace:"collections",className:n.prototype.className+" dataset-collection-panel",DatasetDCEViewClass:i.DatasetDCEListItemView,NestedDCDCEViewClass:i.NestedDCDCEListItemView,modelCollectionKey:"elements",initialize:function(e){n.prototype.initialize.call(this,e),this.linkTarget=e.linkTarget||"_blank",this.hasUser=e.hasUser,this.panelStack=[],this.parentName=e.parentName,this.foldoutStyle=e.foldoutStyle||"foldout"},_queueNewRender:function(e,t){t=void 0===t?this.fxSpeed:t;var i=this;i.log("_queueNewRender:",e,t),i._swapNewRender(e),i.trigger("rendered",i)},_filterCollection:function(){return this.model.getVisibleContents()},_getItemViewClass:function(e){switch(e.get("element_type")){case"hda":return this.DatasetDCEViewClass;case"dataset_collection":return this.NestedDCDCEViewClass}throw new TypeError("Unknown element type:",e.get("element_type"))},_getItemViewOptions:function(e){var t=n.prototype._getItemViewOptions.call(this,e);return _.extend(t,{linkTarget:this.linkTarget,hasUser:this.hasUser,foldoutStyle:this.foldoutStyle})},_setUpItemViewListeners:function(e){var t=this;return n.prototype._setUpItemViewListeners.call(t,e),t.listenTo(e,{"expanded:drilldown":function(e,t){this._expandDrilldownPanel(t)},"collapsed:drilldown":function(e,t){this._collapseDrilldownPanel(t)}}),this},_expandDrilldownPanel:function(e){this.panelStack.push(e),this.$("> .controls").add(this.$list()).hide(),e.parentName=this.model.get("name"),this.$el.append(e.render().$el)},_collapseDrilldownPanel:function(e){this.panelStack.pop(),this.render()},events:{"click .navigation .back":"close"},close:function(e){this.remove(),this.trigger("close")},toString:function(){return"CollectionView("+(this.model?this.model.get("name"):"")+")"}});o.prototype.templates=function(){var e=l.wrapTemplate(['
          ','",'
          ','
          <%- collection.name || collection.element_identifier %>
          ','
          ','<% if( collection.collection_type === "list" ){ %>',s("a list of datasets"),'<% } else if( collection.collection_type === "paired" ){ %>',s("a pair of datasets"),'<% } else if( collection.collection_type === "list:paired" ){ %>',s("a list of paired datasets"),'<% } else if( collection.collection_type === "list:list" ){ %>',s("a list of dataset lists"),"<% } %>","
          ","
          ","
          "],"collection");return _.extend(_.clone(n.prototype.templates),{controls:e})}();var a=o.extend({DatasetDCEViewClass:i.DatasetDCEListItemView,toString:function(){return"ListCollectionView("+(this.model?this.model.get("name"):"")+")"}}),c=a.extend({toString:function(){return"PairCollectionView("+(this.model?this.model.get("name"):"")+")"}});return{CollectionView:o,ListCollectionView:a,PairCollectionView:c,ListOfPairsCollectionView:o.extend({NestedDCDCEViewClass:i.NestedDCDCEListItemView.extend({foldoutPanelClass:c}),toString:function(){return"ListOfPairsCollectionView("+(this.model?this.model.get("name"):"")+")"}}),ListOfListsCollectionView:o.extend({NestedDCDCEViewClass:i.NestedDCDCEListItemView.extend({foldoutPanelClass:c}),toString:function(){return"ListOfListsCollectionView("+(this.model?this.model.get("name"):"")+")"}})}}); +//# sourceMappingURL=../../../maps/mvc/collection/collection-view.js.map diff --git a/static/scripts/mvc/collection/list-collection-creator.js b/static/scripts/mvc/collection/list-collection-creator.js index 6d3f73a8175..128d28207f8 100644 --- a/static/scripts/mvc/collection/list-collection-creator.js +++ b/static/scripts/mvc/collection/list-collection-creator.js @@ -1,2 +1,2 @@ -define(["mvc/history/hdca-model","mvc/dataset/states","mvc/base-mvc","mvc/collection/base-creator","mvc/ui/ui-modal","utils/natural-sort","utils/localization","ui/hoverhighlight"],function(a,b,c,d,e,f,g){"use strict";function h(a,b){var c=a.toJSON(),d=m(c,{defaultHideSourceItems:b,creationFn:function(b,c,d){return b=b.map(function(a){return{id:a.id,name:a.name,src:"dataset"===a.history_content_type?"hda":"hdca"}}),a.createHDCA(b,"list",c,d)}});return d}var i="collections",j=Backbone.View.extend(c.LoggableMixin).extend({_logNamespace:i,tagName:"li",className:"collection-element",initialize:function(a){this.element=a.element||{},this.selected=a.selected||!1},render:function(){return this.$el.attr("data-element-id",this.element.id).attr("draggable",!0).html(this.template({element:this.element})),this.selected&&this.$el.addClass("selected"),this},template:_.template(['',"<%- element.name %>","",'"].join("")),select:function(a){this.$el.toggleClass("selected",a),this.trigger("select",{source:this,selected:this.$el.hasClass("selected")})},discard:function(){var a=this,b=this.$el.parent().width();this.$el.animate({"margin-right":b},"fast",function(){a.trigger("discard",{source:a}),a.destroy()})},destroy:function(){this.off(),this.$el.remove()},events:{click:"_click","click .name":"_clickName","click .discard":"_clickDiscard",dragstart:"_dragstart",dragend:"_dragend",dragover:"_sendToParent",drop:"_sendToParent"},_click:function(a){a.stopPropagation(),this.select(a)},_clickName:function(a){a.stopPropagation(),a.preventDefault();var b=([g("Enter a new name for the element"),":\n(",g("Note that changing the name here will not rename the dataset"),")"].join(""),prompt(g("Enter a new name for the element")+":",this.element.name));b&&(this.element.name=b,this.render())},_clickDiscard:function(a){a.stopPropagation(),this.discard()},_dragstart:function(a){a.originalEvent&&(a=a.originalEvent),a.dataTransfer.effectAllowed="move",a.dataTransfer.setData("text/plain",JSON.stringify(this.element)),this.$el.addClass("dragging"),this.$el.parent().trigger("collection-element.dragstart",[this])},_dragend:function(){this.$el.removeClass("dragging"),this.$el.parent().trigger("collection-element.dragend",[this])},_sendToParent:function(a){this.$el.parent().trigger(a)},toString:function(){return"DatasetCollectionElementView()"}}),k=Backbone.View.extend(c.LoggableMixin).extend(d.CollectionCreatorMixin).extend({_logNamespace:i,elementViewClass:j,collectionClass:a.HistoryListDatasetCollection,className:"list-collection-creator collection-creator flex-row-container",minElements:1,defaultAttributes:{creationFn:function(){throw new TypeError("no creation fn for creator")},oncreate:function(){},oncancel:function(){},autoscrollDist:24,highlightClr:"rgba( 64, 255, 255, 1.0 )"},footerSettings:{".hide-originals":"hideOriginals"},initialize:function(a){this.metric("ListCollectionCreator.initialize",a);var b=this;_.each(this.defaultAttributes,function(c,d){c=a[d]||c,b[d]=c}),b.initialElements=a.elements||[],this._setUpCommonSettings(a),this._instanceSetUp(),this._elementsSetUp(),this._setUpBehaviors()},_instanceSetUp:function(){this.selectedIds={},this.$dragging=null,this.blocking=!1},_elementsSetUp:function(){this.invalidElements=[],this.workingElements=[],this.elementViews=[],this.workingElements=this.initialElements.slice(0),this._ensureElementIds(),this._validateElements(),this._mangleDuplicateNames(),this._sortElements()},_ensureElementIds:function(){return this.workingElements.forEach(function(a){a.hasOwnProperty("id")||(a.id=_.uniqueId())}),this.workingElements},_validateElements:function(){var a=this;return a.invalidElements=[],this.workingElements=this.workingElements.filter(function(b){var c=a._isElementInvalid(b);return c&&a.invalidElements.push({element:b,text:c}),!c}),this.workingElements},_isElementInvalid:function(a){if("dataset"!==a.history_content_type)return g("is not a dataset");var c=a.state===b.OK||_.contains(b.NOT_READY_STATES,a.state);return c?a.deleted||a.purged?g("has been deleted or purged"):null:g("has errored, is paused, or is not accessible")},_mangleDuplicateNames:function(){var a=900,b=1,c={};this.workingElements.forEach(function(d){for(var e=d.name;c.hasOwnProperty(e);)if(e=d.name+" ("+b+")",b+=1,b>=a)throw new Error("Safety hit in while loop - thats impressive");d.name=e,c[d.name]=!0})},_sortElements:function(){},render:function(a,b){return this.workingElements.length .clear-selected").show():this.$(".collection-elements-controls > .clear-selected").hide()},_renderList:function(){var a=this,b=jQuery("
          "),c=a.$list();_.each(this.elementViews,function(b){b.destroy(),a.removeElementView(b)}),a.workingElements.forEach(function(c){var d=a._createElementView(c);b.append(d.$el)}),a._renderClearSelected(),c.empty().append(b.children()),_.invoke(a.elementViews,"render"),c.height()>c.css("max-height")?c.css("border-width","1px 0px 1px 0px"):c.css("border-width","0px")},_createElementView:function(a){var b=new this.elementViewClass({element:a,selected:_.has(this.selectedIds,a.id)});return this.elementViews.push(b),this._listenToElementView(b),b},_listenToElementView:function(a){var b=this;b.listenTo(a,{select:function(a){var c=a.source.element;a.selected?b.selectedIds[c.id]=!0:delete b.selectedIds[c.id],b.trigger("elements:select",a)},discard:function(a){b.trigger("elements:discard",a)}})},addElementView:function(){},removeElementView:function(a){delete this.selectedIds[a.element.id],this._renderClearSelected(),this.elementViews=_.without(this.elementViews,a),this.stopListening(a)},_renderNoElementsLeft:function(){this._disableNameAndCreate(!0),this.$(".collection-elements").append(this.templates.noElementsLeft())},_elementToJSON:function(a){return a},createList:function(a){if(!this.workingElements.length){var b=g("No valid elements for final list")+". ";return b+=''+g("Cancel")+" ",b+=g("or"),b+=' '+g("start over")+".",void this._showAlert(b)}var c=this,d=this.workingElements.map(function(a){return c._elementToJSON(a)});return c.blocking=!0,c.creationFn(d,a,c.hideOriginals).always(function(){c.blocking=!1}).fail(function(a,b){c.trigger("error",{xhr:a,status:b,message:g("An error occurred while creating this collection")})}).done(function(a,b,d){c.trigger("collection:created",a,b,d),c.metric("collection:created",a),"function"==typeof c.oncreate&&c.oncreate.call(this,a,b,d)})},_setUpBehaviors:function(){return this.on("error",this._errorHandler),this.once("rendered",function(){this.trigger("rendered:initial",this)}),this.on("elements:select",function(){this._renderClearSelected()}),this.on("elements:discard",function(a){var b=a.source.element;this.removeElementView(a.source),this.workingElements=_.without(this.workingElements,b),this.workingElements.length||this._renderNoElementsLeft()}),this},_errorHandler:function(a){this.error(a);var b=this;if(content=a.message||g("An error occurred"),a.xhr){var c=a.xhr,d=a.message;content+=0===c.readyState&&0===c.status?": "+g("Galaxy could not be reached and may be updating.")+g(" Try again in a few minutes."):c.responseJSON?":
          "+JSON.stringify(c.responseJSON)+"
          ":": "+d}b._showAlert(content,"alert-danger")},events:{"click .more-help":"_clickMoreHelp","click .less-help":"_clickLessHelp","click .main-help":"_toggleHelp","click .header .alert button":"_hideAlert","click .reset":"reset","click .clear-selected":"clearSelectedElements","click .collection-elements":"clearSelectedElements","dragover .collection-elements":"_dragoverElements","drop .collection-elements":"_dropElements","collection-element.dragstart .collection-elements":"_elementDragstart","collection-element.dragend .collection-elements":"_elementDragend","change .collection-name":"_changeName","keydown .collection-name":"_nameCheckForEnter","change .hide-originals":"_changeHideOriginals","click .cancel-create":"_cancelCreate","click .create-collection":"_clickCreate"},reset:function(){this._instanceSetUp(),this._elementsSetUp(),this.render()},clearSelectedElements:function(){this.$(".collection-elements .collection-element").removeClass("selected"),this.$(".collection-elements-controls > .clear-selected").hide()},_dragoverElements:function(a){a.preventDefault();var b=this.$list();this._checkForAutoscroll(b,a.originalEvent.clientY);var c=this._getNearestElement(a.originalEvent.clientY);this.$(".element-drop-placeholder").remove();var d=$('
          ');c.length?c.before(d):b.append(d)},_checkForAutoscroll:function(a,b){var c=2,d=a.offset(),e=a.scrollTop(),f=b-d.top,g=d.top+a.outerHeight()-b;f>=0&&f=0&&ga&&a>f-g)return e}return $()},_dropElements:function(a){a.originalEvent&&(a=a.originalEvent),a.preventDefault(),a.dataTransfer.dropEffect="move";var b=this._getNearestElement(a.clientY);return b.length?this.$dragging.insertBefore(b):this.$dragging.insertAfter(this.$(".collection-elements .collection-element").last()),this._syncOrderToDom(),!1},_syncOrderToDom:function(){var a=this,b=[];this.$(".collection-elements .collection-element").each(function(){var c=$(this).attr("data-element-id"),d=_.findWhere(a.workingElements,{id:c});d?b.push(d):console.error("missing element: ",c)}),this.workingElements=b,this._renderList()},_elementDragstart:function(a,b){b.select(!0),this.$dragging=this.$(".collection-elements .collection-element.selected")},_elementDragend:function(){$(".element-drop-placeholder").remove(),this.$dragging=null},templates:_.extend({},d.CollectionCreatorMixin._creatorTemplates,{header:_.template(['",'
          ','','',"
          "].join("")),middle:_.template(['",'
          ',"
          "].join("")),footer:_.template(['
          ','
          ','","
          ",'
          ','','
          ',g("Name"),":
          ","
          ","
          ",'
          ','
          ','",'
          ','",'","
          ","
          ",'
          ','","
          ","
          "].join("")),helpContent:_.template(["

          ",g(["Collections of datasets are permanent, ordered lists of datasets that can be passed to tools and ","workflows in order to have analyses done on each member of the entire group. This interface allows ","you to create a collection and re-order the final collection."].join("")),"

          ","
            ","
          • ",g(["Rename elements in the list by clicking on ",'the existing name.'].join("")),"
          • ","
          • ",g(["Discard elements from the final created list by clicking on the ",'"Discard" button.'].join("")),"
          • ","
          • ",g(["Reorder the list by clicking and dragging elements. Select multiple elements by clicking on ",'them and you can then move those selected by dragging the ',"entire group. Deselect them by clicking them again or by clicking the ",'the "Clear selected" link.'].join("")),"
          • ","
          • ",g(['Click the "Start over" link to begin again as if you had just opened ',"the interface."].join("")),"
          • ","
          • ",g(['Click the "Cancel" button to exit the interface.'].join("")),"
          • ","

          ","

          ",g(['Once your collection is complete, enter a name and ','click "Create list".'].join("")),"

          "].join("")),invalidElements:_.template([g("The following selections could not be included due to problems:"),"
            <% _.each( problems, function( problem ){ %>","
          • <%- problem.element.name %>: <%- problem.text %>
          • ","<% }); %>
          "].join("")),noElementsLeft:_.template(['
        • ',g("No elements left! "),g("Would you like to "),'',g("start over"),"?","
        • "].join("")),invalidInitial:_.template(['
          ','
          ','',"<% if( _.size( problems ) ){ %>",g("The following selections could not be included due to problems"),":","
            <% _.each( problems, function( problem ){ %>","
          • <%- problem.element.name %>: <%- problem.text %>
          • ","<% }); %>
          ","<% } else if( _.size( elements ) < 1 ){ %>",g("No datasets were selected"),".","<% } %>","
          ",g("At least one element is needed for the collection"),". ",g("You may need to "),'',g("cancel")," ",g("and reselect new elements"),".","
          ","
          ","
          ",'"].join(""))}),toString:function(){return"ListCollectionCreator"}}),l=function(a,b,c){var d,f=jQuery.Deferred(),h=Galaxy.modal||new e.View;return b=_.defaults(b||{},{elements:a,oncancel:function(){h.hide(),f.reject("cancelled")},oncreate:function(a,b){h.hide(),f.resolve(b)}}),d=new c(b),h.show({title:b.title||g("Create a collection"),body:d.$el,width:"80%",height:"100%",closing_events:!0}),d.render(),window._collectionCreator=d,f},m=function(a,b){return b=b||{},b.title=g("Create a collection from a list of datasets"),l(a,b,k)};return{DatasetCollectionElementView:j,ListCollectionCreator:k,collectionCreatorModal:l,listCollectionCreatorModal:m,createListCollection:h}}); -//# sourceMappingURL=../../../maps/mvc/collection/list-collection-creator.js.map \ No newline at end of file +define(["mvc/history/hdca-model","mvc/dataset/states","mvc/base-mvc","mvc/collection/base-creator","mvc/ui/ui-modal","utils/natural-sort","utils/localization","ui/hoverhighlight"],function(e,t,n,i,l,s,r){"use strict";function a(e,t){var n=e.toJSON();return h(n,{defaultHideSourceItems:t,creationFn:function(t,n,i){return t=t.map(function(e){return{id:e.id,name:e.name,src:"dataset"===e.history_content_type?"hda":"hdca"}}),e.createHDCA(t,"list",n,i)}})}var o=Backbone.View.extend(n.LoggableMixin).extend({_logNamespace:"collections",tagName:"li",className:"collection-element",initialize:function(e){this.element=e.element||{},this.selected=e.selected||!1},render:function(){return this.$el.attr("data-element-id",this.element.id).attr("draggable",!0).html(this.template({element:this.element})),this.selected&&this.$el.addClass("selected"),this},template:_.template(['',"<%- element.name %>","",'"].join("")),select:function(e){this.$el.toggleClass("selected",e),this.trigger("select",{source:this,selected:this.$el.hasClass("selected")})},discard:function(){var e=this,t=this.$el.parent().width();this.$el.animate({"margin-right":t},"fast",function(){e.trigger("discard",{source:e}),e.destroy()})},destroy:function(){this.off(),this.$el.remove()},events:{click:"_click","click .name":"_clickName","click .discard":"_clickDiscard",dragstart:"_dragstart",dragend:"_dragend",dragover:"_sendToParent",drop:"_sendToParent"},_click:function(e){e.stopPropagation(),this.select(e)},_clickName:function(e){e.stopPropagation(),e.preventDefault();var t=([r("Enter a new name for the element"),":\n(",r("Note that changing the name here will not rename the dataset"),")"].join(""),prompt(r("Enter a new name for the element")+":",this.element.name));t&&(this.element.name=t,this.render())},_clickDiscard:function(e){e.stopPropagation(),this.discard()},_dragstart:function(e){e.originalEvent&&(e=e.originalEvent),e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/plain",JSON.stringify(this.element)),this.$el.addClass("dragging"),this.$el.parent().trigger("collection-element.dragstart",[this])},_dragend:function(e){this.$el.removeClass("dragging"),this.$el.parent().trigger("collection-element.dragend",[this])},_sendToParent:function(e){this.$el.parent().trigger(e)},toString:function(){return"DatasetCollectionElementView()"}}),c=Backbone.View.extend(n.LoggableMixin).extend(i.CollectionCreatorMixin).extend({_logNamespace:"collections",elementViewClass:o,collectionClass:e.HistoryListDatasetCollection,className:"list-collection-creator collection-creator flex-row-container",minElements:1,defaultAttributes:{creationFn:function(){throw new TypeError("no creation fn for creator")},oncreate:function(){},oncancel:function(){},autoscrollDist:24,highlightClr:"rgba( 64, 255, 255, 1.0 )"},footerSettings:{".hide-originals":"hideOriginals"},initialize:function(e){this.metric("ListCollectionCreator.initialize",e);var t=this;_.each(this.defaultAttributes,function(n,i){n=e[i]||n,t[i]=n}),t.initialElements=e.elements||[],this._setUpCommonSettings(e),this._instanceSetUp(),this._elementsSetUp(),this._setUpBehaviors()},_instanceSetUp:function(){this.selectedIds={},this.$dragging=null,this.blocking=!1},_elementsSetUp:function(){this.invalidElements=[],this.workingElements=[],this.elementViews=[],this.workingElements=this.initialElements.slice(0),this._ensureElementIds(),this._validateElements(),this._mangleDuplicateNames(),this._sortElements()},_ensureElementIds:function(){return this.workingElements.forEach(function(e){e.hasOwnProperty("id")||(e.id=_.uniqueId())}),this.workingElements},_validateElements:function(){var e=this;return e.invalidElements=[],this.workingElements=this.workingElements.filter(function(t){var n=e._isElementInvalid(t);return n&&e.invalidElements.push({element:t,text:n}),!n}),this.workingElements},_isElementInvalid:function(e){return"dataset"!==e.history_content_type?r("is not a dataset"):e.state===t.OK||_.contains(t.NOT_READY_STATES,e.state)?e.deleted||e.purged?r("has been deleted or purged"):null:r("has errored, is paused, or is not accessible")},_mangleDuplicateNames:function(){var e=1,t={};this.workingElements.forEach(function(n){for(var i=n.name;t.hasOwnProperty(i);)if(i=n.name+" ("+e+")",(e+=1)>=900)throw new Error("Safety hit in while loop - thats impressive");n.name=i,t[n.name]=!0})},_sortElements:function(e){},render:function(e,t){return this.workingElements.length .clear-selected").show():this.$(".collection-elements-controls > .clear-selected").hide()},_renderList:function(e,t){var n=this,i=jQuery("
          "),l=n.$list();_.each(this.elementViews,function(e){e.destroy(),n.removeElementView(e)}),n.workingElements.forEach(function(e){var t=n._createElementView(e);i.append(t.$el)}),n._renderClearSelected(),l.empty().append(i.children()),_.invoke(n.elementViews,"render"),l.height()>l.css("max-height")?l.css("border-width","1px 0px 1px 0px"):l.css("border-width","0px")},_createElementView:function(e){var t=new this.elementViewClass({element:e,selected:_.has(this.selectedIds,e.id)});return this.elementViews.push(t),this._listenToElementView(t),t},_listenToElementView:function(e){var t=this;t.listenTo(e,{select:function(e){var n=e.source.element;e.selected?t.selectedIds[n.id]=!0:delete t.selectedIds[n.id],t.trigger("elements:select",e)},discard:function(e){t.trigger("elements:discard",e)}})},addElementView:function(e){},removeElementView:function(e){delete this.selectedIds[e.element.id],this._renderClearSelected(),this.elementViews=_.without(this.elementViews,e),this.stopListening(e)},_renderNoElementsLeft:function(){this._disableNameAndCreate(!0),this.$(".collection-elements").append(this.templates.noElementsLeft())},_elementToJSON:function(e){return e},createList:function(e){if(!this.workingElements.length){var t=r("No valid elements for final list")+". ";return t+=''+r("Cancel")+" ",t+=r("or"),t+=' '+r("start over")+".",void this._showAlert(t)}var n=this,i=this.workingElements.map(function(e){return n._elementToJSON(e)});return n.blocking=!0,n.creationFn(i,e,n.hideOriginals).always(function(){n.blocking=!1}).fail(function(e,t,i){n.trigger("error",{xhr:e,status:t,message:r("An error occurred while creating this collection")})}).done(function(e,t,i){n.trigger("collection:created",e,t,i),n.metric("collection:created",e),"function"==typeof n.oncreate&&n.oncreate.call(this,e,t,i)})},_setUpBehaviors:function(){return this.on("error",this._errorHandler),this.once("rendered",function(){this.trigger("rendered:initial",this)}),this.on("elements:select",function(e){this._renderClearSelected()}),this.on("elements:discard",function(e){var t=e.source.element;this.removeElementView(e.source),this.workingElements=_.without(this.workingElements,t),this.workingElements.length||this._renderNoElementsLeft()}),this},_errorHandler:function(e){this.error(e);var t=this;if(content=e.message||r("An error occurred"),e.xhr){var n=e.xhr,i=e.message;0===n.readyState&&0===n.status?content+=": "+r("Galaxy could not be reached and may be updating.")+r(" Try again in a few minutes."):n.responseJSON?content+=":
          "+JSON.stringify(n.responseJSON)+"
          ":content+=": "+i}t._showAlert(content,"alert-danger")},events:{"click .more-help":"_clickMoreHelp","click .less-help":"_clickLessHelp","click .main-help":"_toggleHelp","click .header .alert button":"_hideAlert","click .reset":"reset","click .clear-selected":"clearSelectedElements","click .collection-elements":"clearSelectedElements","dragover .collection-elements":"_dragoverElements","drop .collection-elements":"_dropElements","collection-element.dragstart .collection-elements":"_elementDragstart","collection-element.dragend .collection-elements":"_elementDragend","change .collection-name":"_changeName","keydown .collection-name":"_nameCheckForEnter","change .hide-originals":"_changeHideOriginals","click .cancel-create":"_cancelCreate","click .create-collection":"_clickCreate"},reset:function(){this._instanceSetUp(),this._elementsSetUp(),this.render()},clearSelectedElements:function(e){this.$(".collection-elements .collection-element").removeClass("selected"),this.$(".collection-elements-controls > .clear-selected").hide()},_dragoverElements:function(e){e.preventDefault();var t=this.$list();this._checkForAutoscroll(t,e.originalEvent.clientY);var n=this._getNearestElement(e.originalEvent.clientY);this.$(".element-drop-placeholder").remove();var i=$('
          ');n.length?n.before(i):t.append(i)},_checkForAutoscroll:function(e,t){var n=e.offset(),i=e.scrollTop(),l=t-n.top,s=n.top+e.outerHeight()-t;l>=0&&l=0&&se&&l-s','',r("More help"),"",'","
          ",'
          ','','',"
          "].join("")),middle:_.template(['",'
          ',"
          "].join("")),footer:_.template(['
          ','
          ','","
          ",'
          ','','
          ',r("Name"),":
          ","
          ","
          ",'
          ','
          ','",'
          ','",'","
          ","
          ",'
          ','","
          ","
          "].join("")),helpContent:_.template(["

          ",r(["Collections of datasets are permanent, ordered lists of datasets that can be passed to tools and ","workflows in order to have analyses done on each member of the entire group. This interface allows ","you to create a collection and re-order the final collection."].join("")),"

          ","
            ","
          • ",r(["Rename elements in the list by clicking on ",'the existing name.'].join("")),"
          • ","
          • ",r(["Discard elements from the final created list by clicking on the ",'"Discard" button.'].join("")),"
          • ","
          • ",r(["Reorder the list by clicking and dragging elements. Select multiple elements by clicking on ",'them and you can then move those selected by dragging the ',"entire group. Deselect them by clicking them again or by clicking the ",'the "Clear selected" link.'].join("")),"
          • ","
          • ",r(['Click the "Start over" link to begin again as if you had just opened ',"the interface."].join("")),"
          • ","
          • ",r(['Click the "Cancel" button to exit the interface.'].join("")),"
          • ","

          ","

          ",r(['Once your collection is complete, enter a name and ','click "Create list".'].join("")),"

          "].join("")),invalidElements:_.template([r("The following selections could not be included due to problems:"),"
            <% _.each( problems, function( problem ){ %>","
          • <%- problem.element.name %>: <%- problem.text %>
          • ","<% }); %>
          "].join("")),noElementsLeft:_.template(['
        • ',r("No elements left! "),r("Would you like to "),'',r("start over"),"?","
        • "].join("")),invalidInitial:_.template(['
          ','
          ','',"<% if( _.size( problems ) ){ %>",r("The following selections could not be included due to problems"),":","
            <% _.each( problems, function( problem ){ %>","
          • <%- problem.element.name %>: <%- problem.text %>
          • ","<% }); %>
          ","<% } else if( _.size( elements ) < 1 ){ %>",r("No datasets were selected"),".","<% } %>","
          ",r("At least one element is needed for the collection"),". ",r("You may need to "),'',r("cancel")," ",r("and reselect new elements"),".","
          ","
          ","
          ",'"].join(""))}),toString:function(){return"ListCollectionCreator"}}),d=function(e,t,n){var i,s=jQuery.Deferred(),a=Galaxy.modal||new l.View;return t=_.defaults(t||{},{elements:e,oncancel:function(){a.hide(),s.reject("cancelled")},oncreate:function(e,t){a.hide(),s.resolve(t)}}),i=new n(t),a.show({title:t.title||r("Create a collection"),body:i.$el,width:"80%",height:"100%",closing_events:!0}),i.render(),window._collectionCreator=i,s},h=function(e,t){return t=t||{},t.title=r("Create a collection from a list of datasets"),d(e,t,c)};return{DatasetCollectionElementView:o,ListCollectionCreator:c,collectionCreatorModal:d,listCollectionCreatorModal:h,createListCollection:a}}); +//# sourceMappingURL=../../../maps/mvc/collection/list-collection-creator.js.map diff --git a/static/scripts/mvc/collection/list-of-pairs-collection-creator.js b/static/scripts/mvc/collection/list-of-pairs-collection-creator.js index 9f741cdc8b5..88fbfc38d8c 100644 --- a/static/scripts/mvc/collection/list-of-pairs-collection-creator.js +++ b/static/scripts/mvc/collection/list-of-pairs-collection-creator.js @@ -1,2 +1,2 @@ -define(["utils/levenshtein","utils/natural-sort","mvc/collection/base-creator","mvc/base-mvc","utils/localization","ui/hoverhighlight"],function(a,b,c,d,e){"use strict";function f(a){function b(){return c.length||(c=[new RegExp(this.filters[0]),new RegExp(this.filters[1])]),c}a=a||{},a.createPair=a.createPair||function(a){a=a||{};var b=a.listA.splice(a.indexA,1)[0],c=a.listB.splice(a.indexB,1)[0],d=a.listB.indexOf(b),e=a.listA.indexOf(c);return-1!==d&&a.listB.splice(d,1),-1!==e&&a.listA.splice(e,1),this._pair(b,c,{silent:!0})};var c=[];return a.preprocessMatch=a.preprocessMatch||function(a){var c=b.call(this);return _.extend(a,{matchTo:a.matchTo.name.replace(c[0],""),possible:a.possible.name.replace(c[1],"")})},function(b){this.debug("autopair _strategy ---------------------------"),b=b||{};var c,d=b.listA,e=b.listB,f=0,g={score:0,index:null},h=[];for(this.debug("starting list lens:",d.length,e.length),this.debug("bestMatch (starting):",JSON.stringify(g,null," "));f=k?h.push(a.createPair.call(this,{listA:d,indexA:f,listB:e,indexB:g.index})):f+=1,!d.length||!e.length)return h}return this.debug("paired:",JSON.stringify(h,null," ")),this.debug("autopair _strategy ---------------------------"),h}}function g(a,b){var c=a.toJSON();return k(c,{historyId:a.historyId,defaultHideSourceItems:b})}var h="collections",i=Backbone.View.extend(d.LoggableMixin).extend({_logNamespace:h,tagName:"li",className:"dataset paired",initialize:function(a){this.pair=a.pair||{}},template:_.template(['<%- pair.forward.name %>','','<%- pair.name %>',"",'<%- pair.reverse.name %>'].join("")),render:function(){return this.$el.attr("draggable",!0).data("pair",this.pair).html(this.template({pair:this.pair})).addClass("flex-column-container"),this},events:{dragstart:"_dragstart",dragend:"_dragend",dragover:"_sendToParent",drop:"_sendToParent"},_dragstart:function(a){a.currentTarget.style.opacity="0.4",a.originalEvent&&(a=a.originalEvent),a.dataTransfer.effectAllowed="move",a.dataTransfer.setData("text/plain",JSON.stringify(this.pair)),this.$el.parent().trigger("pair.dragstart",[this])},_dragend:function(a){a.currentTarget.style.opacity="1.0",this.$el.parent().trigger("pair.dragend",[this])},_sendToParent:function(a){this.$el.parent().trigger(a)},toString:function(){return"PairView("+this.pair.name+")"}}),j=Backbone.View.extend(d.LoggableMixin).extend(c.CollectionCreatorMixin).extend({_logNamespace:h,className:"list-of-pairs-collection-creator collection-creator flex-row-container",initialize:function(a){this.metric("PairedCollectionCreator.initialize",a),a=_.defaults(a,{datasets:[],filters:this.DEFAULT_FILTERS,automaticallyPair:!0,strategy:"lcs",matchPercentage:.9,twoPassAutopairing:!0}),this.initialList=a.datasets,this.historyId=a.historyId,this.filters=this.commonFilters[a.filters]||this.commonFilters[this.DEFAULT_FILTERS],_.isArray(a.filters)&&(this.filters=a.filters),this.automaticallyPair=a.automaticallyPair,this.strategy=this.strategies[a.strategy]||this.strategies[this.DEFAULT_STRATEGY],_.isFunction(a.strategy)&&(this.strategy=a.strategy),this.matchPercentage=a.matchPercentage,this.twoPassAutopairing=a.twoPassAutopairing,this.removeExtensions=!0,this.oncancel=a.oncancel,this.oncreate=a.oncreate,this.autoscrollDist=a.autoscrollDist||24,this.unpairedPanelHidden=!1,this.pairedPanelHidden=!1,this.$dragging=null,this.blocking=!1,this._setUpCommonSettings(a),this._setUpBehaviors(),this._dataSetUp()},commonFilters:{illumina:["_1","_2"],Rs:["_R1","_R2"]},DEFAULT_FILTERS:"illumina",strategies:{simple:"autopairSimple",lcs:"autopairLCS",levenshtein:"autopairLevenshtein"},DEFAULT_STRATEGY:"lcs",_dataSetUp:function(){this.paired=[],this.unpaired=[],this.selectedIds=[],this._sortInitialList(),this._ensureIds(),this.unpaired=this.initialList.slice(0),this.automaticallyPair&&(this.autoPair(),this.once("rendered:initial",function(){this.trigger("autopair")}))},_sortInitialList:function(){this._sortDatasetList(this.initialList)},_sortDatasetList:function(a){return a.sort(function(a,c){return b(a.name,c.name)}),a},_ensureIds:function(){return this.initialList.forEach(function(a){a.hasOwnProperty("id")||(a.id=_.uniqueId())}),this.initialList},_splitByFilters:function(){function a(a,b){return b.test(a.name)}var b=this.filters.map(function(a){return new RegExp(a)}),c=[[],[]];return this.unpaired.forEach(function(d){b.forEach(function(b,e){a(d,b)&&c[e].push(d)})}),c},_addToUnpaired:function(a){var c=function(d,e){if(d===e)return d;var f=Math.floor((e-d)/2)+d,g=b(a.name,this.unpaired[f].name);if(0>g)return c(d,f);if(g>0)return c(f+1,e);for(;this.unpaired[f]&&this.unpaired[f].name===a.name;)f++;return f}.bind(this);this.unpaired.splice(c(0,this.unpaired.length),0,a)},autoPair:function(a){var b=this._splitByFilters(),c=[];return this.twoPassAutopairing&&(c=this.autopairSimple({listA:b[0],listB:b[1]}),b=this._splitByFilters()),a=a||this.strategy,b=this._splitByFilters(),c=c.concat(this[a].call(this,{listA:b[0],listB:b[1]}))},autopairSimple:f({scoreThreshold:function(){return 1},match:function(a){return a=a||{},a.matchTo===a.possible?{index:a.index,score:1}:a.bestMatch}}),autopairLevenshtein:f({scoreThreshold:function(){return this.matchPercentage},match:function(b){b=b||{};var c=a(b.matchTo,b.possible),d=1-c/Math.max(b.matchTo.length,b.possible.length);return d>b.bestMatch.score?{index:b.index,score:d}:b.bestMatch}}),autopairLCS:f({scoreThreshold:function(){return this.matchPercentage},match:function(a){a=a||{};var b=this._naiveStartingAndEndingLCS(a.matchTo,a.possible).length,c=b/Math.max(a.matchTo.length,a.possible.length);return c>a.bestMatch.score?{index:a.index,score:c}:a.bestMatch}}),_naiveStartingAndEndingLCS:function(a,b){for(var c="",d="",e=0,f=0;e=0&&f>=0&&a[e]===b[f];)d=[a[e],d].join(""),e-=1,f-=1;return c+d},_pair:function(a,b,c){c=c||{},this.debug("_pair:",a,b);var d=this._createPair(a,b,c.name);return this.paired.push(d),this.unpaired=_.without(this.unpaired,a,b),c.silent||this.trigger("pair:new",d),d},_createPair:function(a,b,c){if(!a||!b||a===b)throw new Error("Bad pairing: "+[JSON.stringify(a),JSON.stringify(b)]);return c=c||this._guessNameForPair(a,b),{forward:a,name:c,reverse:b}},_guessNameForPair:function(a,b,c){c=void 0!==c?c:this.removeExtensions;var d=a.name,e=b.name,f=this._naiveStartingAndEndingLCS(d.replace(new RegExp(this.filters[0]),""),e.replace(new RegExp(this.filters[1]),""));if(c){var g=f.lastIndexOf(".");if(g>0){var h=f.slice(g,f.length);f=f.replace(h,""),d=d.replace(h,""),e=e.replace(h,"")}}return f||d+" & "+e},_unpair:function(a,b){if(b=b||{},!a)throw new Error("Bad pair: "+JSON.stringify(a));return this.paired=_.without(this.paired,a),this._addToUnpaired(a.forward),this._addToUnpaired(a.reverse),b.silent||this.trigger("pair:unpair",[a]),a},unpairAll:function(){for(var a=[];this.paired.length;)a.push(this._unpair(this.paired[0],{silent:!0}));this.trigger("pair:unpair",a)},_pairToJSON:function(a,b){return b=b||"hda",{collection_type:"paired",src:"new_collection",name:a.name,element_identifiers:[{name:"forward",id:a.forward.id,src:b},{name:"reverse",id:a.reverse.id,src:b}]}},createList:function(a){var b=this,c=Galaxy.root+"api/histories/"+this.historyId+"/contents/dataset_collections",d={type:"dataset_collection",collection_type:"list:paired",hide_source_items:b.hideOriginals||!1,name:_.escape(a||b.$(".collection-name").val()),element_identifiers:b.paired.map(function(a){return b._pairToJSON(a)})};return b.blocking=!0,jQuery.ajax(c,{type:"POST",contentType:"application/json",dataType:"json",data:JSON.stringify(d)}).always(function(){b.blocking=!1}).fail(function(a,c,d){b._ajaxErrHandler(a,c,d)}).done(function(a,c,d){b.trigger("collection:created",a,c,d),b.metric("collection:created",a),"function"==typeof b.oncreate&&b.oncreate.call(this,a,c,d)})},_ajaxErrHandler:function(a,b,c){this.error(a,b,c);var d=e("An error occurred while creating this collection");a&&(d+=0===a.readyState&&0===a.status?": "+e("Galaxy could not be reached and may be updating.")+e(" Try again in a few minutes."):a.responseJSON?"
          "+JSON.stringify(a.responseJSON)+"
          ":": "+c),creator._showAlert(d,"alert-danger")},render:function(a){return this.$el.empty().html(this.templates.main()),this._renderHeader(a),this._renderMiddle(a),this._renderFooter(a),this._addPluginComponents(),this.trigger("rendered",this),this},_renderHeader:function(){var a=this.$(".header").empty().html(this.templates.header()).find(".help-content").prepend($(this.templates.helpContent()));return this._renderFilters(),a},_renderFilters:function(){return this.$(".forward-column .column-header input").val(this.filters[0]).add(this.$(".reverse-column .column-header input").val(this.filters[1]))},_renderMiddle:function(){var a=this.$(".middle").empty().html(this.templates.middle());return this.unpairedPanelHidden?this.$(".unpaired-columns").hide():this.pairedPanelHidden&&this.$(".paired-columns").hide(),this._renderUnpaired(),this._renderPaired(),a},_renderUnpaired:function(){var a,b,c=this,d=[],f=this._splitByFilters();return this.$(".forward-column .title").text([f[0].length,e("unpaired forward")].join(" ")),this.$(".forward-column .unpaired-info").text(this._renderUnpairedDisplayStr(this.unpaired.length-f[0].length)),this.$(".reverse-column .title").text([f[1].length,e("unpaired reverse")].join(" ")),this.$(".reverse-column .unpaired-info").text(this._renderUnpairedDisplayStr(this.unpaired.length-f[1].length)),this.$(".unpaired-columns .column-datasets").empty(),this.$(".autopair-link").toggle(0!==this.unpaired.length),0===this.unpaired.length?void this._renderUnpairedEmpty():(b=f[1].map(function(a,b){return void 0!==f[0][b]&&f[0][b]!==a&&d.push(c._renderPairButton()),c._renderUnpairedDataset(a)}),a=f[0].map(function(a){return c._renderUnpairedDataset(a)}),a.length||b.length?(this.$(".unpaired-columns .forward-column .column-datasets").append(a).add(this.$(".unpaired-columns .paired-column .column-datasets").append(d)).add(this.$(".unpaired-columns .reverse-column .column-datasets").append(b)),void this._adjUnpairedOnScrollbar()):void this._renderUnpairedNotShown())},_renderUnpairedDisplayStr:function(a){return["(",a," ",e("filtered out"),")"].join("")},_renderUnpairedDataset:function(a){return $("
        • ").attr("id","dataset-"+a.id).addClass("dataset unpaired").attr("draggable",!0).addClass(a.selected?"selected":"").append($("").addClass("dataset-name").text(a.name)).data("dataset",a)},_renderPairButton:function(){return $("
        • ").addClass("dataset unpaired").append($("").addClass("dataset-name").text(e("Pair these datasets")))},_renderUnpairedEmpty:function(){var a=$('
          ').text("("+e("no remaining unpaired datasets")+")");return this.$(".unpaired-columns .paired-column .column-datasets").empty().prepend(a),a},_renderUnpairedNotShown:function(){var a=$('
          ').text("("+e("no datasets were found matching the current filters")+")");return this.$(".unpaired-columns .paired-column .column-datasets").empty().prepend(a),a},_adjUnpairedOnScrollbar:function(){var a=this.$(".unpaired-columns").last(),b=this.$(".unpaired-columns .reverse-column .dataset").first();if(b.length){var c=a.offset().left+a.outerWidth(),d=b.offset().left+b.outerWidth(),e=Math.floor(c)-Math.floor(d);this.$(".unpaired-columns .forward-column").css("margin-left",e>0?e:0)}},_renderPaired:function(){if(this.$(".paired-column-title .title").text([this.paired.length,e("paired")].join(" ")),this.$(".unpair-all-link").toggle(0!==this.paired.length),0===this.paired.length)return void this._renderPairedEmpty();this.$(".remove-extensions-link").show(),this.$(".paired-columns .column-datasets").empty();var a=this;this.paired.forEach(function(b){var c=new i({pair:b});a.$(".paired-columns .column-datasets").append(c.render().$el).append(['"].join(""))})},_renderPairedEmpty:function(){var a=$('
          ').text("("+e("no paired datasets yet")+")");return this.$(".paired-columns .column-datasets").empty().prepend(a),a},footerSettings:{".hide-originals":"hideOriginals",".remove-extensions":"removeExtensions"},_addPluginComponents:function(){this._chooseFiltersPopover(".choose-filters-link"),this.$(".help-content i").hoverhighlight(".collection-creator","rgba( 64, 255, 255, 1.0 )")},_chooseFiltersPopover:function(a){function b(a,b){return['"].join("")}var c=$(_.template(['
          ','
          ',e("Choose from the following filters to change which unpaired reads are shown in the display"),":
          ",_.values(this.commonFilters).map(function(a){return b(a[0],a[1])}).join(""),"
          "].join(""))({}));return this.$(a).popover({container:".collection-creator",placement:"bottom",html:!0,content:c})},_validationWarning:function(a,b){var c="validation-warning";"name"===a&&(a=this.$(".collection-name").add(this.$(".collection-name-prompt")),this.$(".collection-name").focus().select()),b?(a=a||this.$("."+c),a.removeClass(c)):a.addClass(c)},_setUpBehaviors:function(){return this.once("rendered",function(){this.trigger("rendered:initial",this)}),this.on("pair:new",function(){this._renderUnpaired(),this._renderPaired(),this.$(".paired-columns").scrollTop(8e6)}),this.on("pair:unpair",function(){this._renderUnpaired(),this._renderPaired(),this.splitView()}),this.on("filter-change",function(){this.filters=[this.$(".forward-unpaired-filter input").val(),this.$(".reverse-unpaired-filter input").val()],this.metric("filter-change",this.filters),this._renderFilters(),this._renderUnpaired()}),this.on("autopair",function(){this._renderUnpaired(),this._renderPaired();var a,b=null;this.paired.length?(b="alert-success",a=this.paired.length+" "+e("pairs created"),this.unpaired.length||(a+=": "+e("all datasets have been successfully paired"),this.hideUnpaired(),this.$(".collection-name").focus())):a=e(["Could not automatically create any pairs from the given dataset names.","You may want to choose or enter different filters and try auto-pairing again.","Close this message using the X on the right to view more help."].join(" ")),this._showAlert(a,b)}),this},events:{"click .more-help":"_clickMoreHelp","click .less-help":"_clickLessHelp","click .main-help":"_toggleHelp","click .header .alert button":"_hideAlert","click .forward-column .column-title":"_clickShowOnlyUnpaired","click .reverse-column .column-title":"_clickShowOnlyUnpaired","click .unpair-all-link":"_clickUnpairAll","change .forward-unpaired-filter input":function(){this.trigger("filter-change")},"focus .forward-unpaired-filter input":function(a){$(a.currentTarget).select()},"click .autopair-link":"_clickAutopair","click .choose-filters .filter-choice":"_clickFilterChoice","click .clear-filters-link":"_clearFilters","change .reverse-unpaired-filter input":function(){this.trigger("filter-change")},"focus .reverse-unpaired-filter input":function(a){$(a.currentTarget).select()},"click .forward-column .dataset.unpaired":"_clickUnpairedDataset","click .reverse-column .dataset.unpaired":"_clickUnpairedDataset","click .paired-column .dataset.unpaired":"_clickPairRow","click .unpaired-columns":"clearSelectedUnpaired","mousedown .unpaired-columns .dataset":"_mousedownUnpaired","click .paired-column-title":"_clickShowOnlyPaired","mousedown .flexible-partition-drag":"_startPartitionDrag","click .paired-columns .dataset.paired":"selectPair","click .paired-columns":"clearSelectedPaired","click .paired-columns .pair-name":"_clickPairName","click .unpair-btn":"_clickUnpair","dragover .paired-columns .column-datasets":"_dragoverPairedColumns","drop .paired-columns .column-datasets":"_dropPairedColumns","pair.dragstart .paired-columns .column-datasets":"_pairDragstart","pair.dragend .paired-columns .column-datasets":"_pairDragend","change .remove-extensions":function(){this.toggleExtensions()},"change .collection-name":"_changeName","keydown .collection-name":"_nameCheckForEnter","change .hide-originals":"_changeHideOriginals","click .cancel-create":"_cancelCreate","click .create-collection":"_clickCreate"},_clickShowOnlyUnpaired:function(){this.$(".paired-columns").is(":visible")?this.hidePaired():this.splitView()},_clickShowOnlyPaired:function(){this.$(".unpaired-columns").is(":visible")?this.hideUnpaired():this.splitView()},hideUnpaired:function(a,b){this.unpairedPanelHidden=!0,this.pairedPanelHidden=!1,this._renderMiddle(a,b)},hidePaired:function(a,b){this.unpairedPanelHidden=!1,this.pairedPanelHidden=!0,this._renderMiddle(a,b)},splitView:function(a,b){return this.unpairedPanelHidden=this.pairedPanelHidden=!1,this._renderMiddle(a,b),this},_clickUnpairAll:function(){this.metric("unpairAll"),this.unpairAll()},_clickAutopair:function(){var a=this.autoPair();this.metric("autopair",a.length,this.unpaired.length),this.trigger("autopair")},_clickFilterChoice:function(a){var b=$(a.currentTarget);this.$(".forward-unpaired-filter input").val(b.data("forward")),this.$(".reverse-unpaired-filter input").val(b.data("reverse")),this._hideChooseFilters(),this.trigger("filter-change")},_hideChooseFilters:function(){this.$(".choose-filters-link").popover("hide"),this.$(".popover").css("display","none")},_clearFilters:function(){this.$(".forward-unpaired-filter input").val(""),this.$(".reverse-unpaired-filter input").val(""),this.trigger("filter-change")},_clickUnpairedDataset:function(a){return a.stopPropagation(),this.toggleSelectUnpaired($(a.currentTarget))},toggleSelectUnpaired:function(a,b){b=b||{};var c=a.data("dataset"),d=void 0!==b.force?b.force:!a.hasClass("selected");return a.length&&void 0!==c?(d?(a.addClass("selected"),b.waitToPair||this.pairAllSelected()):a.removeClass("selected"),a):a},pairAllSelected:function(a){a=a||{};var b=this,c=[],d=[],e=[];return b.$(".unpaired-columns .forward-column .dataset.selected").each(function(){c.push($(this).data("dataset"))}),b.$(".unpaired-columns .reverse-column .dataset.selected").each(function(){d.push($(this).data("dataset"))}),c.length=d.length=Math.min(c.length,d.length),c.forEach(function(a,c){try{e.push(b._pair(a,d[c],{silent:!0}))}catch(f){b.error(f)}}),e.length&&!a.silent&&this.trigger("pair:new",e),e},clearSelectedUnpaired:function(){this.$(".unpaired-columns .dataset.selected").removeClass("selected")},_mousedownUnpaired:function(a){if(a.shiftKey){var b=this,c=$(a.target).addClass("selected"),d=function(a){b.$(a.target).filter(".dataset").addClass("selected")};c.parent().on("mousemove",d),$(document).one("mouseup",function(){c.parent().off("mousemove",d),b.pairAllSelected()})}},_clickPairRow:function(a){var b=$(a.currentTarget).index(),c=$(".unpaired-columns .forward-column .dataset").eq(b).data("dataset"),d=$(".unpaired-columns .reverse-column .dataset").eq(b).data("dataset");this._pair(c,d)},_startPartitionDrag:function(a){function b(){d.$(".flexible-partition-drag").css("color",""),$("body").css("cursor","").unbind("mousemove",c)}function c(a){var b=a.pageY-e;d.adjPartition(b)||$("body").trigger("mouseup"),d._adjUnpairedOnScrollbar(),e+=b}var d=this,e=a.pageY;$("body").css("cursor","ns-resize"),d.$(".flexible-partition-drag").css("color","black"),$("body").mousemove(c),$("body").one("mouseup",b)},adjPartition:function(a){var b=this.$(".unpaired-columns"),c=this.$(".paired-columns"),d=parseInt(b.css("height"),10),e=parseInt(c.css("height"),10);d=Math.max(10,d+a),e-=a;var f=0>a;if(f){if(this.unpairedPanelHidden)return!1;if(10>=d)return this.hideUnpaired(),!1}else this.unpairedPanelHidden&&(b.show(),this.unpairedPanelHidden=!1);if(f)this.pairedPanelHidden&&(c.show(),this.pairedPanelHidden=!1);else{if(this.pairedPanelHidden)return!1;if(15>=e)return this.hidePaired(),!1}return b.css({height:d+"px",flex:"0 0 auto"}),!0},selectPair:function(a){a.stopPropagation(),$(a.currentTarget).toggleClass("selected")},clearSelectedPaired:function(){this.$(".paired-columns .dataset.selected").removeClass("selected")},_clickPairName:function(a){a.stopPropagation();var b=$(a.currentTarget),c=b.parent().parent(),d=c.index(".dataset.paired"),e=this.paired[d],f=prompt("Enter a new name for the pair:",e.name);f&&(e.name=f,e.customizedName=!0,b.text(e.name))},_clickUnpair:function(a){var b=Math.floor($(a.currentTarget).index(".unpair-btn"));this._unpair(this.paired[b])},_dragoverPairedColumns:function(a){a.preventDefault();var b=this.$(".paired-columns .column-datasets");this._checkForAutoscroll(b,a.originalEvent.clientY);var c=this._getNearestPairedDatasetLi(a.originalEvent.clientY);$(".element-drop-placeholder").remove();var d=$('
          ');c.length?c.before(d):b.append(d)},_checkForAutoscroll:function(a,b){var c=2,d=a.offset(),e=a.scrollTop(),f=b-d.top,g=d.top+a.outerHeight()-b;f>=0&&f=0&&ga&&a>f-g)return e}return $()},_dropPairedColumns:function(a){a.preventDefault(),a.dataTransfer.dropEffect="move";var b=this._getNearestPairedDatasetLi(a.originalEvent.clientY);return b.length?this.$dragging.insertBefore(b):this.$dragging.insertAfter(this.$(".paired-columns .unpair-btn").last()),this._syncPairsToDom(),!1},_syncPairsToDom:function(){var a=[];this.$(".paired-columns .dataset.paired").each(function(){a.push($(this).data("pair"))}),this.paired=a,this._renderPaired()},_pairDragstart:function(a,b){b.$el.addClass("selected");var c=this.$(".paired-columns .dataset.selected");this.$dragging=c},_pairDragend:function(){$(".element-drop-placeholder").remove(),this.$dragging=null},toggleExtensions:function(a){var b=this;b.removeExtensions=void 0!==a?a:!b.removeExtensions,_.each(b.paired,function(a){a.customizedName||(a.name=b._guessNameForPair(a.forward,a.reverse))}),b._renderPaired(),b._renderFooter()},_printList:function(a){var b=this;_.each(a,function(c){a===b.paired&&b._printPair(c)})},_printPair:function(a){this.debug(a.forward.name,a.reverse.name,": ->",a.name)},toString:function(){return"PairedCollectionCreator"},templates:_.extend({},c.CollectionCreatorMixin._creatorTemplates,{header:_.template(['",'
          ','','',"
          ",'
          ','
          ','
          ','
          ','',e("Unpaired forward"),"",'',"
          ",'
          ','',"
          ","
          ","
          ",'",'
          ','
          ','
          ','',e("Unpaired reverse"),"",'',"
          ",'
          ','',"
          ","
          ","
          ","
          "].join("")),middle:_.template(['
          ','
          ','
            ',"
            ",'
            ','
              ',"
              ",'
              ','
                ',"
                ","
                ",'
                ','
                ','
                ','
                ','',"
                ",'',e("Unpair all"),"","
                ","
                ",'
                ','
                  ',"
                  "].join("")),footer:_.template(['
                  ','
                  ','",'","
                  ",'
                  ','','
                  ',e("Name"),":
                  ","
                  ","
                  ",'
                  ','
                  ','",'
                  ','",'","
                  ","
                  ",'
                  ','","
                  ","
                  "].join("")),helpContent:_.template(["

                  ",e(["Collections of paired datasets are ordered lists of dataset pairs (often forward and reverse reads). ","These collections can be passed to tools and workflows in order to have analyses done on each member of ","the entire group. This interface allows you to create a collection, choose which datasets are paired, ","and re-order the final collection."].join("")),"

                  ","

                  ",e(['Unpaired datasets are shown in the unpaired section ',"(hover over the underlined words to highlight below). ",'Paired datasets are shown in the paired section.',"

                    To pair datasets, you can:","
                  • Click a dataset in the ",'forward column ',"to select it then click a dataset in the ",'reverse column.',"
                  • ",'
                  • Click one of the "Pair these datasets" buttons in the ','middle column ',"to pair the datasets in a particular row.","
                  • ",'
                  • Click "Auto-pair" ',"to have your datasets automatically paired based on name.","
                  • ","
                  "].join("")),"

                  ","

                  ",e(["

                    You can filter what is shown in the unpaired sections by:","
                  • Entering partial dataset names in either the ",'forward filter or ','reverse filter.',"
                  • ","
                  • Choosing from a list of preset filters by clicking the ",'"Choose filters" link.',"
                  • ","
                  • Entering regular expressions to match dataset names. See: ",'MDN\'s JavaScript Regular Expression Tutorial. ',"Note: forward slashes (\\) are not needed.","
                  • ","
                  • Clearing the filters by clicking the ",'"Clear filters" link.',"
                  • ","
                  "].join("")),"

                  ","

                  ",e(["To unpair individual dataset pairs, click the ",'unpair buttons ( ). ','Click the "Unpair all" link to unpair all pairs.'].join("")),"

                  ","

                  ",e(['You can include or remove the file extensions (e.g. ".fastq") from your pair names by toggling the ','"Remove file extensions from pair names?" control.'].join("")),"

                  ","

                  ",e(['Once your collection is complete, enter a name and ','click "Create list". ',"(Note: you do not have to pair all unpaired datasets to finish.)"].join("")),"

                  "].join(""))})}),k=function(a,b){var c,d=jQuery.Deferred();if(b=_.defaults(b||{},{datasets:a,oncancel:function(){Galaxy.modal.hide(),d.reject("cancelled")},oncreate:function(a,b){Galaxy.modal.hide(),d.resolve(b)}}),!window.Galaxy||!Galaxy.modal)throw new Error("Galaxy or Galaxy.modal not found");return c=new j(b),Galaxy.modal.show({title:"Create a collection of paired datasets",body:c.$el,width:"80%",height:"800px",closing_events:!0}),c.render(),window.creator=c,d};return{PairedCollectionCreator:j,pairedCollectionCreatorModal:k,createListOfPairsCollection:g}}); -//# sourceMappingURL=../../../maps/mvc/collection/list-of-pairs-collection-creator.js.map \ No newline at end of file +define(["utils/levenshtein","utils/natural-sort","mvc/collection/base-creator","mvc/base-mvc","utils/localization","ui/hoverhighlight"],function(e,t,i,a,r){"use strict";function n(e){function t(){return i.length||(i=[new RegExp(this.filters[0]),new RegExp(this.filters[1])]),i}e=e||{},e.createPair=e.createPair||function(e){e=e||{};var t=e.listA.splice(e.indexA,1)[0],i=e.listB.splice(e.indexB,1)[0],a=e.listB.indexOf(t),r=e.listA.indexOf(i);return-1!==a&&e.listB.splice(a,1),-1!==r&&e.listA.splice(r,1),this._pair(t,i,{silent:!0})};var i=[];return e.preprocessMatch=e.preprocessMatch||function(e){var i=t.call(this);return _.extend(e,{matchTo:e.matchTo.name.replace(i[0],""),possible:e.possible.name.replace(i[1],"")})},function(t){this.debug("autopair _strategy ---------------------------"),t=t||{};var i,a=t.listA,r=t.listB,n=0,s={score:0,index:null},l=[];for(this.debug("starting list lens:",a.length,r.length),this.debug("bestMatch (starting):",JSON.stringify(s,null," "));n=d?l.push(e.createPair.call(this,{listA:a,indexA:n,listB:r,indexB:s.index})):n+=1,!a.length||!r.length)return l}return this.debug("paired:",JSON.stringify(l,null," ")),this.debug("autopair _strategy ---------------------------"),l}}function s(e,t){var i=e.toJSON();return c(i,{historyId:e.historyId,defaultHideSourceItems:t})}var l=Backbone.View.extend(a.LoggableMixin).extend({_logNamespace:"collections",tagName:"li",className:"dataset paired",initialize:function(e){this.pair=e.pair||{}},template:_.template(['<%- pair.forward.name %>','','<%- pair.name %>',"",'<%- pair.reverse.name %>'].join("")),render:function(){return this.$el.attr("draggable",!0).data("pair",this.pair).html(this.template({pair:this.pair})).addClass("flex-column-container"),this},events:{dragstart:"_dragstart",dragend:"_dragend",dragover:"_sendToParent",drop:"_sendToParent"},_dragstart:function(e){e.currentTarget.style.opacity="0.4",e.originalEvent&&(e=e.originalEvent),e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/plain",JSON.stringify(this.pair)),this.$el.parent().trigger("pair.dragstart",[this])},_dragend:function(e){e.currentTarget.style.opacity="1.0",this.$el.parent().trigger("pair.dragend",[this])},_sendToParent:function(e){this.$el.parent().trigger(e)},toString:function(){return"PairView("+this.pair.name+")"}}),o=Backbone.View.extend(a.LoggableMixin).extend(i.CollectionCreatorMixin).extend({_logNamespace:"collections",className:"list-of-pairs-collection-creator collection-creator flex-row-container",initialize:function(e){this.metric("PairedCollectionCreator.initialize",e),e=_.defaults(e,{datasets:[],filters:this.DEFAULT_FILTERS,automaticallyPair:!0,strategy:"lcs",matchPercentage:.9,twoPassAutopairing:!0}),this.initialList=e.datasets,this.historyId=e.historyId,this.filters=this.commonFilters[e.filters]||this.commonFilters[this.DEFAULT_FILTERS],_.isArray(e.filters)&&(this.filters=e.filters),this.automaticallyPair=e.automaticallyPair,this.strategy=this.strategies[e.strategy]||this.strategies[this.DEFAULT_STRATEGY],_.isFunction(e.strategy)&&(this.strategy=e.strategy),this.matchPercentage=e.matchPercentage,this.twoPassAutopairing=e.twoPassAutopairing,this.removeExtensions=!0,this.oncancel=e.oncancel,this.oncreate=e.oncreate,this.autoscrollDist=e.autoscrollDist||24,this.unpairedPanelHidden=!1,this.pairedPanelHidden=!1,this.$dragging=null,this.blocking=!1,this._setUpCommonSettings(e),this._setUpBehaviors(),this._dataSetUp()},commonFilters:{illumina:["_1","_2"],Rs:["_R1","_R2"]},DEFAULT_FILTERS:"illumina",strategies:{simple:"autopairSimple",lcs:"autopairLCS",levenshtein:"autopairLevenshtein"},DEFAULT_STRATEGY:"lcs",_dataSetUp:function(){this.paired=[],this.unpaired=[],this.selectedIds=[],this._sortInitialList(),this._ensureIds(),this.unpaired=this.initialList.slice(0),this.automaticallyPair&&(this.autoPair(),this.once("rendered:initial",function(){this.trigger("autopair")}))},_sortInitialList:function(){this._sortDatasetList(this.initialList)},_sortDatasetList:function(e){return e.sort(function(e,i){return t(e.name,i.name)}),e},_ensureIds:function(){return this.initialList.forEach(function(e){e.hasOwnProperty("id")||(e.id=_.uniqueId())}),this.initialList},_splitByFilters:function(){function e(e,t){return t.test(e.name)}var t=this.filters.map(function(e){return new RegExp(e)}),i=[[],[]];return this.unpaired.forEach(function(a){t.forEach(function(t,r){e(a,t)&&i[r].push(a)})}),i},_addToUnpaired:function(e){var i=function(a,r){if(a===r)return a;var n=Math.floor((r-a)/2)+a,s=t(e.name,this.unpaired[n].name);if(s<0)return i(a,n);if(s>0)return i(n+1,r);for(;this.unpaired[n]&&this.unpaired[n].name===e.name;)n++;return n}.bind(this);this.unpaired.splice(i(0,this.unpaired.length),0,e)},autoPair:function(e){var t=this._splitByFilters(),i=[];return this.twoPassAutopairing&&(i=this.autopairSimple({listA:t[0],listB:t[1]}),t=this._splitByFilters()),e=e||this.strategy,t=this._splitByFilters(),i=i.concat(this[e].call(this,{listA:t[0],listB:t[1]}))},autopairSimple:n({scoreThreshold:function(){return 1},match:function(e){return e=e||{},e.matchTo===e.possible?{index:e.index,score:1}:e.bestMatch}}),autopairLevenshtein:n({scoreThreshold:function(){return this.matchPercentage},match:function(t){t=t||{};var i=e(t.matchTo,t.possible),a=1-i/Math.max(t.matchTo.length,t.possible.length);return a>t.bestMatch.score?{index:t.index,score:a}:t.bestMatch}}),autopairLCS:n({scoreThreshold:function(){return this.matchPercentage},match:function(e){e=e||{};var t=this._naiveStartingAndEndingLCS(e.matchTo,e.possible).length,i=t/Math.max(e.matchTo.length,e.possible.length);return i>e.bestMatch.score?{index:e.index,score:i}:e.bestMatch}}),_naiveStartingAndEndingLCS:function(e,t){for(var i="",a="",r=0,n=0;r=0&&n>=0&&e[r]===t[n];)a=[e[r],a].join(""),r-=1,n-=1;return i+a},_pair:function(e,t,i){i=i||{},this.debug("_pair:",e,t);var a=this._createPair(e,t,i.name);return this.paired.push(a),this.unpaired=_.without(this.unpaired,e,t),i.silent||this.trigger("pair:new",a),a},_createPair:function(e,t,i){if(!e||!t||e===t)throw new Error("Bad pairing: "+[JSON.stringify(e),JSON.stringify(t)]);return i=i||this._guessNameForPair(e,t),{forward:e,name:i,reverse:t}},_guessNameForPair:function(e,t,i){i=void 0!==i?i:this.removeExtensions;var a=e.name,r=t.name,n=this._naiveStartingAndEndingLCS(a.replace(new RegExp(this.filters[0]),""),r.replace(new RegExp(this.filters[1]),""));if(i){var s=n.lastIndexOf(".");if(s>0){var l=n.slice(s,n.length);n=n.replace(l,""),a=a.replace(l,""),r=r.replace(l,"")}}return n||a+" & "+r},_unpair:function(e,t){if(t=t||{},!e)throw new Error("Bad pair: "+JSON.stringify(e));return this.paired=_.without(this.paired,e),this._addToUnpaired(e.forward),this._addToUnpaired(e.reverse),t.silent||this.trigger("pair:unpair",[e]),e},unpairAll:function(){for(var e=[];this.paired.length;)e.push(this._unpair(this.paired[0],{silent:!0}));this.trigger("pair:unpair",e)},_pairToJSON:function(e,t){return t=t||"hda",{collection_type:"paired",src:"new_collection",name:e.name,element_identifiers:[{name:"forward",id:e.forward.id,src:t},{name:"reverse",id:e.reverse.id,src:t}]}},createList:function(e){var t=this,i=Galaxy.root+"api/histories/"+this.historyId+"/contents/dataset_collections",a={type:"dataset_collection",collection_type:"list:paired",hide_source_items:t.hideOriginals||!1,name:_.escape(e||t.$(".collection-name").val()),element_identifiers:t.paired.map(function(e){return t._pairToJSON(e)})};return t.blocking=!0,jQuery.ajax(i,{type:"POST",contentType:"application/json",dataType:"json",data:JSON.stringify(a)}).always(function(){t.blocking=!1}).fail(function(e,i,a){t._ajaxErrHandler(e,i,a)}).done(function(e,i,a){t.trigger("collection:created",e,i,a),t.metric("collection:created",e),"function"==typeof t.oncreate&&t.oncreate.call(this,e,i,a)})},_ajaxErrHandler:function(e,t,i){this.error(e,t,i);var a=r("An error occurred while creating this collection");e&&(0===e.readyState&&0===e.status?a+=": "+r("Galaxy could not be reached and may be updating.")+r(" Try again in a few minutes."):e.responseJSON?a+="
                  "+JSON.stringify(e.responseJSON)+"
                  ":a+=": "+i),creator._showAlert(a,"alert-danger")},render:function(e,t){return this.$el.empty().html(this.templates.main()),this._renderHeader(e),this._renderMiddle(e),this._renderFooter(e),this._addPluginComponents(),this.trigger("rendered",this),this},_renderHeader:function(e,t){var i=this.$(".header").empty().html(this.templates.header()).find(".help-content").prepend($(this.templates.helpContent()));return this._renderFilters(),i},_renderFilters:function(){return this.$(".forward-column .column-header input").val(this.filters[0]).add(this.$(".reverse-column .column-header input").val(this.filters[1]))},_renderMiddle:function(e,t){var i=this.$(".middle").empty().html(this.templates.middle());return this.unpairedPanelHidden?this.$(".unpaired-columns").hide():this.pairedPanelHidden&&this.$(".paired-columns").hide(),this._renderUnpaired(),this._renderPaired(),i},_renderUnpaired:function(e,t){var i,a,n=this,s=[],l=this._splitByFilters();return this.$(".forward-column .title").text([l[0].length,r("unpaired forward")].join(" ")),this.$(".forward-column .unpaired-info").text(this._renderUnpairedDisplayStr(this.unpaired.length-l[0].length)),this.$(".reverse-column .title").text([l[1].length,r("unpaired reverse")].join(" ")),this.$(".reverse-column .unpaired-info").text(this._renderUnpairedDisplayStr(this.unpaired.length-l[1].length)),this.$(".unpaired-columns .column-datasets").empty(),this.$(".autopair-link").toggle(0!==this.unpaired.length),0===this.unpaired.length?void this._renderUnpairedEmpty():(a=l[1].map(function(e,t){return void 0!==l[0][t]&&l[0][t]!==e&&s.push(n._renderPairButton()),n._renderUnpairedDataset(e)}),i=l[0].map(function(e){return n._renderUnpairedDataset(e)}),i.length||a.length?(this.$(".unpaired-columns .forward-column .column-datasets").append(i).add(this.$(".unpaired-columns .paired-column .column-datasets").append(s)).add(this.$(".unpaired-columns .reverse-column .column-datasets").append(a)),void this._adjUnpairedOnScrollbar()):void this._renderUnpairedNotShown())},_renderUnpairedDisplayStr:function(e){return["(",e," ",r("filtered out"),")"].join("")},_renderUnpairedDataset:function(e){return $("
                1. ").attr("id","dataset-"+e.id).addClass("dataset unpaired").attr("draggable",!0).addClass(e.selected?"selected":"").append($("").addClass("dataset-name").text(e.name)).data("dataset",e)},_renderPairButton:function(){return $("
                2. ").addClass("dataset unpaired").append($("").addClass("dataset-name").text(r("Pair these datasets")))},_renderUnpairedEmpty:function(){var e=$('
                  ').text("("+r("no remaining unpaired datasets")+")");return this.$(".unpaired-columns .paired-column .column-datasets").empty().prepend(e),e},_renderUnpairedNotShown:function(){var e=$('
                  ').text("("+r("no datasets were found matching the current filters")+")");return this.$(".unpaired-columns .paired-column .column-datasets").empty().prepend(e),e},_adjUnpairedOnScrollbar:function(){var e=this.$(".unpaired-columns").last(),t=this.$(".unpaired-columns .reverse-column .dataset").first();if(t.length){var i=e.offset().left+e.outerWidth(),a=t.offset().left+t.outerWidth(),r=Math.floor(i)-Math.floor(a);this.$(".unpaired-columns .forward-column").css("margin-left",r>0?r:0)}},_renderPaired:function(e,t){if(this.$(".paired-column-title .title").text([this.paired.length,r("paired")].join(" ")),this.$(".unpair-all-link").toggle(0!==this.paired.length),0===this.paired.length)return void this._renderPairedEmpty();this.$(".remove-extensions-link").show(),this.$(".paired-columns .column-datasets").empty();var i=this;this.paired.forEach(function(e,t){var a=new l({pair:e});i.$(".paired-columns .column-datasets").append(a.render().$el).append(['"].join(""))})},_renderPairedEmpty:function(){var e=$('
                  ').text("("+r("no paired datasets yet")+")");return this.$(".paired-columns .column-datasets").empty().prepend(e),e},footerSettings:{".hide-originals":"hideOriginals",".remove-extensions":"removeExtensions"},_addPluginComponents:function(){this._chooseFiltersPopover(".choose-filters-link"),this.$(".help-content i").hoverhighlight(".collection-creator","rgba( 64, 255, 255, 1.0 )")},_chooseFiltersPopover:function(e){function t(e,t){return['"].join("")}var i=$(_.template(['
                  ','
                  ',r("Choose from the following filters to change which unpaired reads are shown in the display"),":
                  ",_.values(this.commonFilters).map(function(e){return t(e[0],e[1])}).join(""),"
                  "].join(""))({}));return this.$(e).popover({container:".collection-creator",placement:"bottom",html:!0,content:i})},_validationWarning:function(e,t){"name"===e&&(e=this.$(".collection-name").add(this.$(".collection-name-prompt")),this.$(".collection-name").focus().select()),t?(e=e||this.$(".validation-warning"),e.removeClass("validation-warning")):e.addClass("validation-warning")},_setUpBehaviors:function(){return this.once("rendered",function(){this.trigger("rendered:initial",this)}),this.on("pair:new",function(){this._renderUnpaired(),this._renderPaired(),this.$(".paired-columns").scrollTop(8e6)}),this.on("pair:unpair",function(e){this._renderUnpaired(),this._renderPaired(),this.splitView()}),this.on("filter-change",function(){this.filters=[this.$(".forward-unpaired-filter input").val(),this.$(".reverse-unpaired-filter input").val()],this.metric("filter-change",this.filters),this._renderFilters(),this._renderUnpaired()}),this.on("autopair",function(){this._renderUnpaired(),this._renderPaired();var e,t=null;this.paired.length?(t="alert-success",e=this.paired.length+" "+r("pairs created"),this.unpaired.length||(e+=": "+r("all datasets have been successfully paired"),this.hideUnpaired(),this.$(".collection-name").focus())):e=r(["Could not automatically create any pairs from the given dataset names.","You may want to choose or enter different filters and try auto-pairing again.","Close this message using the X on the right to view more help."].join(" ")),this._showAlert(e,t)}),this},events:{"click .more-help":"_clickMoreHelp","click .less-help":"_clickLessHelp","click .main-help":"_toggleHelp","click .header .alert button":"_hideAlert","click .forward-column .column-title":"_clickShowOnlyUnpaired","click .reverse-column .column-title":"_clickShowOnlyUnpaired","click .unpair-all-link":"_clickUnpairAll","change .forward-unpaired-filter input":function(e){this.trigger("filter-change")},"focus .forward-unpaired-filter input":function(e){$(e.currentTarget).select()},"click .autopair-link":"_clickAutopair","click .choose-filters .filter-choice":"_clickFilterChoice","click .clear-filters-link":"_clearFilters","change .reverse-unpaired-filter input":function(e){this.trigger("filter-change")},"focus .reverse-unpaired-filter input":function(e){$(e.currentTarget).select()},"click .forward-column .dataset.unpaired":"_clickUnpairedDataset","click .reverse-column .dataset.unpaired":"_clickUnpairedDataset","click .paired-column .dataset.unpaired":"_clickPairRow","click .unpaired-columns":"clearSelectedUnpaired","mousedown .unpaired-columns .dataset":"_mousedownUnpaired","click .paired-column-title":"_clickShowOnlyPaired","mousedown .flexible-partition-drag":"_startPartitionDrag","click .paired-columns .dataset.paired":"selectPair","click .paired-columns":"clearSelectedPaired","click .paired-columns .pair-name":"_clickPairName","click .unpair-btn":"_clickUnpair","dragover .paired-columns .column-datasets":"_dragoverPairedColumns","drop .paired-columns .column-datasets":"_dropPairedColumns","pair.dragstart .paired-columns .column-datasets":"_pairDragstart","pair.dragend .paired-columns .column-datasets":"_pairDragend","change .remove-extensions":function(e){this.toggleExtensions()},"change .collection-name":"_changeName","keydown .collection-name":"_nameCheckForEnter","change .hide-originals":"_changeHideOriginals","click .cancel-create":"_cancelCreate","click .create-collection":"_clickCreate"},_clickShowOnlyUnpaired:function(e){this.$(".paired-columns").is(":visible")?this.hidePaired():this.splitView()},_clickShowOnlyPaired:function(e){this.$(".unpaired-columns").is(":visible")?this.hideUnpaired():this.splitView()},hideUnpaired:function(e,t){this.unpairedPanelHidden=!0,this.pairedPanelHidden=!1,this._renderMiddle(e,t)},hidePaired:function(e,t){this.unpairedPanelHidden=!1,this.pairedPanelHidden=!0,this._renderMiddle(e,t)},splitView:function(e,t){return this.unpairedPanelHidden=this.pairedPanelHidden=!1,this._renderMiddle(e,t),this},_clickUnpairAll:function(e){this.metric("unpairAll"),this.unpairAll()},_clickAutopair:function(e){var t=this.autoPair();this.metric("autopair",t.length,this.unpaired.length),this.trigger("autopair")},_clickFilterChoice:function(e){var t=$(e.currentTarget);this.$(".forward-unpaired-filter input").val(t.data("forward")),this.$(".reverse-unpaired-filter input").val(t.data("reverse")),this._hideChooseFilters(),this.trigger("filter-change")},_hideChooseFilters:function(){this.$(".choose-filters-link").popover("hide"),this.$(".popover").css("display","none")},_clearFilters:function(e){this.$(".forward-unpaired-filter input").val(""),this.$(".reverse-unpaired-filter input").val(""),this.trigger("filter-change")},_clickUnpairedDataset:function(e){return e.stopPropagation(),this.toggleSelectUnpaired($(e.currentTarget))},toggleSelectUnpaired:function(e,t){t=t||{};var i=e.data("dataset"),a=void 0!==t.force?t.force:!e.hasClass("selected");return e.length&&void 0!==i?(a?(e.addClass("selected"),t.waitToPair||this.pairAllSelected()):e.removeClass("selected"),e):e},pairAllSelected:function(e){e=e||{};var t=this,i=[],a=[],r=[];return t.$(".unpaired-columns .forward-column .dataset.selected").each(function(){i.push($(this).data("dataset"))}),t.$(".unpaired-columns .reverse-column .dataset.selected").each(function(){a.push($(this).data("dataset"))}),i.length=a.length=Math.min(i.length,a.length),i.forEach(function(e,i){try{r.push(t._pair(e,a[i],{silent:!0}))}catch(e){t.error(e)}}),r.length&&!e.silent&&this.trigger("pair:new",r),r},clearSelectedUnpaired:function(){this.$(".unpaired-columns .dataset.selected").removeClass("selected")},_mousedownUnpaired:function(e){if(e.shiftKey){var t=this,i=$(e.target).addClass("selected"),a=function(e){t.$(e.target).filter(".dataset").addClass("selected")};i.parent().on("mousemove",a),$(document).one("mouseup",function(e){i.parent().off("mousemove",a),t.pairAllSelected()})}},_clickPairRow:function(e){var t=$(e.currentTarget).index(),i=$(".unpaired-columns .forward-column .dataset").eq(t).data("dataset"),a=$(".unpaired-columns .reverse-column .dataset").eq(t).data("dataset");this._pair(i,a)},_startPartitionDrag:function(e){function t(e){a.$(".flexible-partition-drag").css("color",""),$("body").css("cursor","").unbind("mousemove",i)}function i(e){var t=e.pageY-r;a.adjPartition(t)||$("body").trigger("mouseup"),a._adjUnpairedOnScrollbar(),r+=t}var a=this,r=e.pageY;$("body").css("cursor","ns-resize"),a.$(".flexible-partition-drag").css("color","black"),$("body").mousemove(i),$("body").one("mouseup",t)},adjPartition:function(e){var t=this.$(".unpaired-columns"),i=this.$(".paired-columns"),a=parseInt(t.css("height"),10),r=parseInt(i.css("height"),10);a=Math.max(10,a+e),r-=e;var n=e<0;if(n){if(this.unpairedPanelHidden)return!1;if(a<=10)return this.hideUnpaired(),!1}else this.unpairedPanelHidden&&(t.show(),this.unpairedPanelHidden=!1);if(n)this.pairedPanelHidden&&(i.show(),this.pairedPanelHidden=!1);else{if(this.pairedPanelHidden)return!1;if(r<=15)return this.hidePaired(),!1}return t.css({height:a+"px",flex:"0 0 auto"}),!0},selectPair:function(e){e.stopPropagation(),$(e.currentTarget).toggleClass("selected")},clearSelectedPaired:function(e){this.$(".paired-columns .dataset.selected").removeClass("selected")},_clickPairName:function(e){e.stopPropagation();var t=$(e.currentTarget),i=t.parent().parent(),a=i.index(".dataset.paired"),r=this.paired[a],n=prompt("Enter a new name for the pair:",r.name);n&&(r.name=n,r.customizedName=!0,t.text(r.name))},_clickUnpair:function(e){var t=Math.floor($(e.currentTarget).index(".unpair-btn"));this._unpair(this.paired[t])},_dragoverPairedColumns:function(e){e.preventDefault();var t=this.$(".paired-columns .column-datasets");this._checkForAutoscroll(t,e.originalEvent.clientY);var i=this._getNearestPairedDatasetLi(e.originalEvent.clientY);$(".element-drop-placeholder").remove();var a=$('
                  ');i.length?i.before(a):t.append(a)},_checkForAutoscroll:function(e,t){var i=e.offset(),a=e.scrollTop(),r=t-i.top,n=i.top+e.outerHeight()-t;r>=0&&r=0&&ne&&r-n",e.name)},toString:function(){return"PairedCollectionCreator"},templates:_.extend({},i.CollectionCreatorMixin._creatorTemplates,{header:_.template(['",'
                  ','','',"
                  ",'
                  ','
                  ','
                  ','
                  ','',r("Unpaired forward"),"",'',"
                  ",'
                  ','',"
                  ","
                  ","
                  ",'",'
                  ','
                  ','
                  ','',r("Unpaired reverse"),"",'',"
                  ",'
                  ','',"
                  ","
                  ","
                  ","
                  "].join("")),middle:_.template(['
                  ','
                  ','
                    ',"
                    ",'
                    ','
                      ',"
                      ",'
                      ','
                        ',"
                        ","
                        ",'
                        ','
                        ','
                        ','
                        ','',"
                        ",'',r("Unpair all"),"","
                        ","
                        ",'
                        ','
                          ',"
                          "].join("")),footer:_.template(['
                          ','
                          ','",'","
                          ",'
                          ','','
                          ',r("Name"),":
                          ","
                          ","
                          ",'
                          ','
                          ','",'
                          ','",'","
                          ","
                          ",'
                          ','","
                          ","
                          "].join("")),helpContent:_.template(["

                          ",r(["Collections of paired datasets are ordered lists of dataset pairs (often forward and reverse reads). ","These collections can be passed to tools and workflows in order to have analyses done on each member of ","the entire group. This interface allows you to create a collection, choose which datasets are paired, ","and re-order the final collection."].join("")),"

                          ","

                          ",r(['Unpaired datasets are shown in the unpaired section ',"(hover over the underlined words to highlight below). ",'Paired datasets are shown in the paired section.',"

                            To pair datasets, you can:","
                          • Click a dataset in the ",'forward column ',"to select it then click a dataset in the ",'reverse column.',"
                          • ",'
                          • Click one of the "Pair these datasets" buttons in the ','middle column ',"to pair the datasets in a particular row.","
                          • ",'
                          • Click "Auto-pair" ',"to have your datasets automatically paired based on name.","
                          • ","
                          "].join("")),"

                          ","

                          ",r(["

                            You can filter what is shown in the unpaired sections by:","
                          • Entering partial dataset names in either the ",'forward filter or ','reverse filter.',"
                          • ","
                          • Choosing from a list of preset filters by clicking the ",'"Choose filters" link.',"
                          • ","
                          • Entering regular expressions to match dataset names. See: ",'MDN\'s JavaScript Regular Expression Tutorial. ',"Note: forward slashes (\\) are not needed.","
                          • ","
                          • Clearing the filters by clicking the ",'"Clear filters" link.',"
                          • ","
                          "].join("")),"

                          ","

                          ",r(["To unpair individual dataset pairs, click the ",'unpair buttons ( ). ','Click the "Unpair all" link to unpair all pairs.'].join("")),"

                          ","

                          ",r(['You can include or remove the file extensions (e.g. ".fastq") from your pair names by toggling the ','"Remove file extensions from pair names?" control.'].join("")),"

                          ","

                          ",r(['Once your collection is complete, enter a name and ','click "Create list". ',"(Note: you do not have to pair all unpaired datasets to finish.)"].join("")),"

                          "].join(""))})}),c=function(e,t){var i,a=jQuery.Deferred();if(t=_.defaults(t||{},{datasets:e,oncancel:function(){Galaxy.modal.hide(),a.reject("cancelled")},oncreate:function(e,t){Galaxy.modal.hide(),a.resolve(t)}}),!window.Galaxy||!Galaxy.modal)throw new Error("Galaxy or Galaxy.modal not found");return i=new o(t),Galaxy.modal.show({title:"Create a collection of paired datasets",body:i.$el,width:"80%",height:"800px",closing_events:!0}),i.render(),window.creator=i,a};return{PairedCollectionCreator:o,pairedCollectionCreatorModal:c,createListOfPairsCollection:s}}); +//# sourceMappingURL=../../../maps/mvc/collection/list-of-pairs-collection-creator.js.map diff --git a/static/scripts/mvc/collection/pair-collection-creator.js b/static/scripts/mvc/collection/pair-collection-creator.js index 5f881faa87f..0c93c5f3820 100644 --- a/static/scripts/mvc/collection/pair-collection-creator.js +++ b/static/scripts/mvc/collection/pair-collection-creator.js @@ -1,2 +1,2 @@ -define(["mvc/collection/list-collection-creator","mvc/history/hdca-model","mvc/base-mvc","utils/localization"],function(a,b,c,d){"use strict";function e(a,b){var c=a.toJSON(),d=j(c,{defaultHideSourceItems:b,creationFn:function(b,c,d){return b=[{name:"forward",src:"hda",id:b[0].id},{name:"reverse",src:"hda",id:b[1].id}],a.createHDCA(b,"paired",c,d)}});return d}var f="collections",g=Backbone.View.extend(c.LoggableMixin).extend({_logNamespace:f,tagName:"li",className:"collection-element",initialize:function(a){this.element=a.element||{},this.identifier=a.identifier},render:function(){return this.$el.attr("data-element-id",this.element.id).html(this.template({identifier:this.identifier,element:this.element})),this},template:_.template(['<%- identifier %>','<%- element.name %>'].join("")),destroy:function(){this.off(),this.$el.remove()},toString:function(){return"DatasetCollectionElementView()"}}),h=a.ListCollectionCreator,i=h.extend({elementViewClass:g,collectionClass:b.HistoryPairDatasetCollection,className:"pair-collection-creator collection-creator flex-row-container",_mangleDuplicateNames:function(){},render:function(a,b){return 2===this.workingElements.length?h.prototype.render.call(this,a,b):this._renderInvalid(a,b)},_renderList:function(){var a=this,b=jQuery("
                          "),c=a.$list();_.each(this.elementViews,function(b){b.destroy(),a.removeElementView(b)}),b.append(a._createForwardElementView().$el),b.append(a._createReverseElementView().$el),c.empty().append(b.children()),_.invoke(a.elementViews,"render")},_createForwardElementView:function(){return this._createElementView(this.workingElements[0],{identifier:"forward"})},_createReverseElementView:function(){return this._createElementView(this.workingElements[1],{identifier:"reverse"})},_createElementView:function(a,b){var c=new this.elementViewClass(_.extend(b,{element:a}));return this.elementViews.push(c),c},swap:function(){this.workingElements=[this.workingElements[1],this.workingElements[0]],this._renderList()},events:_.extend(_.clone(h.prototype.events),{"click .swap":"swap"}),templates:_.extend(_.clone(h.prototype.templates),{middle:_.template(['",'
                          ',"
                          "].join("")),helpContent:_.template(["

                          ",d(["Pair collections are permanent collections containing two datasets: one forward and one reverse. ","Often these are forward and reverse reads. The pair collections can be passed to tools and ","workflows in order to have analyses done on both datasets. This interface allows ","you to create a pair, name it, and swap which is forward and which reverse."].join("")),"

                          ","
                            ","
                          • ",d(['Click the "Swap" link to make your forward dataset the reverse ',"and the reverse dataset forward."].join("")),"
                          • ","
                          • ",d(['Click the "Cancel" button to exit the interface.'].join("")),"
                          • ","

                          ","

                          ",d(['Once your collection is complete, enter a name and ','click "Create list".'].join("")),"

                          "].join("")),invalidInitial:_.template(['
                          ','
                          ','',"<% if( _.size( problems ) ){ %>",d("The following selections could not be included due to problems"),"
                            <% _.each( problems, function( problem ){ %>","
                          • <%- problem.element.name %>: <%- problem.text %>
                          • ","<% }); %>
                          ","<% } else if( _.size( elements ) === 0 ){ %>",d("No datasets were selected"),".","<% } else if( _.size( elements ) === 1 ){ %>",d("Only one dataset was selected"),": <%- elements[0].name %>","<% } else if( _.size( elements ) > 2 ){ %>",d("Too many datasets were selected"),': <%- _.pluck( elements, "name" ).join( ", ") %>',"<% } %>","
                          ",d("Two (and only two) elements are needed for the pair"),". ",d("You may need to "),'',d("cancel")," ",d("and reselect new elements"),".","
                          ","
                          ","
                          ",'"].join(""))}),toString:function(){return"PairCollectionCreator"}}),j=function(b,c){return c=c||{},c.title=d("Create a collection from a pair of datasets"),a.collectionCreatorModal(b,c,i)};return{PairCollectionCreator:i,pairCollectionCreatorModal:j,createPairCollection:e}}); -//# sourceMappingURL=../../../maps/mvc/collection/pair-collection-creator.js.map \ No newline at end of file +define(["mvc/collection/list-collection-creator","mvc/history/hdca-model","mvc/base-mvc","utils/localization"],function(e,t,n,i){"use strict";function a(e,t){var n=e.toJSON();return s(n,{defaultHideSourceItems:t,creationFn:function(t,n,i){return t=[{name:"forward",src:"hda",id:t[0].id},{name:"reverse",src:"hda",id:t[1].id}],e.createHDCA(t,"paired",n,i)}})}var l=Backbone.View.extend(n.LoggableMixin).extend({_logNamespace:"collections",tagName:"li",className:"collection-element",initialize:function(e){this.element=e.element||{},this.identifier=e.identifier},render:function(){return this.$el.attr("data-element-id",this.element.id).html(this.template({identifier:this.identifier,element:this.element})),this},template:_.template(['<%- identifier %>','<%- element.name %>'].join("")),destroy:function(){this.off(),this.$el.remove()},toString:function(){return"DatasetCollectionElementView()"}}),r=e.ListCollectionCreator,o=r.extend({elementViewClass:l,collectionClass:t.HistoryPairDatasetCollection,className:"pair-collection-creator collection-creator flex-row-container",_mangleDuplicateNames:function(){},render:function(e,t){return 2===this.workingElements.length?r.prototype.render.call(this,e,t):this._renderInvalid(e,t)},_renderList:function(e,t){var n=this,i=jQuery("
                          "),a=n.$list();_.each(this.elementViews,function(e){e.destroy(),n.removeElementView(e)}),i.append(n._createForwardElementView().$el),i.append(n._createReverseElementView().$el),a.empty().append(i.children()),_.invoke(n.elementViews,"render")},_createForwardElementView:function(){return this._createElementView(this.workingElements[0],{identifier:"forward"})},_createReverseElementView:function(){return this._createElementView(this.workingElements[1],{identifier:"reverse"})},_createElementView:function(e,t){var n=new this.elementViewClass(_.extend(t,{element:e}));return this.elementViews.push(n),n},swap:function(){this.workingElements=[this.workingElements[1],this.workingElements[0]],this._renderList()},events:_.extend(_.clone(r.prototype.events),{"click .swap":"swap"}),templates:_.extend(_.clone(r.prototype.templates),{middle:_.template(['",'
                          ',"
                          "].join("")),helpContent:_.template(["

                          ",i(["Pair collections are permanent collections containing two datasets: one forward and one reverse. ","Often these are forward and reverse reads. The pair collections can be passed to tools and ","workflows in order to have analyses done on both datasets. This interface allows ","you to create a pair, name it, and swap which is forward and which reverse."].join("")),"

                          ","
                            ","
                          • ",i(['Click the "Swap" link to make your forward dataset the reverse ',"and the reverse dataset forward."].join("")),"
                          • ","
                          • ",i(['Click the "Cancel" button to exit the interface.'].join("")),"
                          • ","

                          ","

                          ",i(['Once your collection is complete, enter a name and ','click "Create list".'].join("")),"

                          "].join("")),invalidInitial:_.template(['
                          ','
                          ','',"<% if( _.size( problems ) ){ %>",i("The following selections could not be included due to problems"),"
                            <% _.each( problems, function( problem ){ %>","
                          • <%- problem.element.name %>: <%- problem.text %>
                          • ","<% }); %>
                          ","<% } else if( _.size( elements ) === 0 ){ %>",i("No datasets were selected"),".","<% } else if( _.size( elements ) === 1 ){ %>",i("Only one dataset was selected"),": <%- elements[0].name %>","<% } else if( _.size( elements ) > 2 ){ %>",i("Too many datasets were selected"),': <%- _.pluck( elements, "name" ).join( ", ") %>',"<% } %>","
                          ",i("Two (and only two) elements are needed for the pair"),". ",i("You may need to "),'',i("cancel")," ",i("and reselect new elements"),".","
                          ","
                          ","
                          ",'"].join(""))}),toString:function(){return"PairCollectionCreator"}}),s=function(t,n){return n=n||{},n.title=i("Create a collection from a pair of datasets"),e.collectionCreatorModal(t,n,o)};return{PairCollectionCreator:o,pairCollectionCreatorModal:s,createPairCollection:a}}); +//# sourceMappingURL=../../../maps/mvc/collection/pair-collection-creator.js.map diff --git a/static/scripts/mvc/dataset/data.js b/static/scripts/mvc/dataset/data.js index 58528c8bb20..34aad0ba6d1 100644 --- a/static/scripts/mvc/dataset/data.js +++ b/static/scripts/mvc/dataset/data.js @@ -1,2 +1,2 @@ -define(["mvc/ui/ui-modal","mvc/ui/ui-frames","mvc/ui/icon-button"],function(a,b,c){var d=Backbone.Model.extend({}),e=Backbone.Model.extend({defaults:{id:"",type:"",name:"",hda_ldda:"hda",metadata:null},initialize:function(){this.get("metadata")||this._set_metadata(),this.on("change",this._set_metadata,this)},_set_metadata:function(){var a=new d;_.each(_.keys(this.attributes),function(b){if(0===b.indexOf("metadata_")){var c=b.split("metadata_")[1];a.set(c,this.attributes[b]),delete this.attributes[b]}},this),this.set("metadata",a,{silent:!0})},get_metadata:function(a){return this.attributes.metadata.get(a)},urlRoot:Galaxy.root+"api/datasets"}),f=e.extend({defaults:_.extend({},e.prototype.defaults,{chunk_url:null,first_data_chunk:null,offset:0,at_eof:!1}),initialize:function(){e.prototype.initialize.call(this),this.attributes.first_data_chunk&&(this.attributes.offset=this.attributes.first_data_chunk.offset),this.attributes.chunk_url=Galaxy.root+"dataset/display?dataset_id="+this.id,this.attributes.url_viz=Galaxy.root+"visualization"},get_next_chunk:function(){if(this.attributes.at_eof)return null;var a=this,b=$.Deferred();return $.getJSON(this.attributes.chunk_url,{offset:a.attributes.offset}).success(function(c){var d;""!==c.ck_data?(d=c,a.attributes.offset=c.offset):(a.attributes.at_eof=!0,d=null),b.resolve(d)}),b}}),g=Backbone.Collection.extend({model:e}),h=Backbone.View.extend({initialize:function(a){this.row_count=0,this.loading_chunk=!1,new k({model:a.model,$el:this.$el})},expand_to_container:function(){this.$el.height()").attr("id","loading_indicator"),this.$el.append(this.loading_indicator);var a=$("").attr({id:"content_table",cellpadding:0});this.$el.append(a);var b=this.model.get_metadata("column_names"),c=$("").appendTo(a),d=$("").appendTo(c);if(b)d.append("");else for(var e=1;e<=this.model.get_metadata("columns");e++)d.append("");var f=this,g=this.model.get("first_data_chunk");g?this._renderChunk(g):$.when(f.model.get_next_chunk()).then(function(a){f._renderChunk(a)}),this.scroll_elt.scroll(function(){f.attempt_to_fetch()})},scrolled_to_bottom:function(){return!1},_renderCell:function(a,b,c){var d=$("";if("advanced"==b.filterable&&(f+='"),f+='"},filter_element:function(b,c){return c=a.sanitize(c),''+c+''}}}); -//# sourceMappingURL=../../../maps/mvc/grid/grid-template.js.map \ No newline at end of file +define(["utils/utils"],function(e){return{grid:function(e){var a="";return a=e.embedded?this.grid_header(e)+this.grid_table(e):'
                          "+b.join("")+""+e+"").text(a),e=this.model.get_metadata("column_types");return void 0!==c?d.attr("colspan",c).addClass("stringalign"):e&&b"),d=this.model.get_metadata("columns");return this.row_count%2!==0&&c.addClass("dark_row"),b.length===d?_.each(b,function(a,b){c.append(this._renderCell(a,b))},this):b.length>d?(_.each(b.slice(0,d-1),function(a,b){c.append(this._renderCell(a,b))},this),c.append(this._renderCell(b.slice(d-1).join(" "),d-1))):1===b.length?c.append(this._renderCell(a,0,d)):(_.each(b,function(a,b){c.append(this._renderCell(a,b))},this),_.each(_.range(d-b.length),function(){c.append($(""))})),this.row_count++,c},_renderChunk:function(a){var b=this.$el.find("table");_.each(a.ck_data.split("\n"),function(a){""!==a&&b.append(this._renderRow(a))},this)}}),i=h.extend({initialize:function(a){h.prototype.initialize.call(this,a),scroll_elt=_.find(this.$el.parents(),function(a){return"auto"===$(a).css("overflow")}),scroll_elt||(scroll_elt=window),this.scroll_elt=$(scroll_elt)},scrolled_to_bottom:function(){return this.$el.height()-this.scroll_elt.scrollTop()-this.scroll_elt.height()<=0}}),j=h.extend({initialize:function(a){h.prototype.initialize.call(this,a),this.scroll_elt=this.$el.css({position:"relative",overflow:"scroll",height:a.height||"500px"})},scrolled_to_bottom:function(){return this.$el.scrollTop()+this.$el.innerHeight()>=this.el.scrollHeight}}),k=Backbone.View.extend({col:{chrom:null,start:null,end:null},url_viz:null,dataset_id:null,genome_build:null,file_ext:null,initialize:function(a){function b(a,b){for(var c=0;c").attr("id","loading_indicator"),this.$el.append(this.loading_indicator);var t=$("").attr({id:"content_table",cellpadding:0});this.$el.append(t);var e=this.model.get_metadata("column_names"),i=$("").appendTo(t),n=$("").appendTo(i);if(e)n.append("");else for(var a=1;a<=this.model.get_metadata("columns");a++)n.append("");var o=this,l=this.model.get("first_data_chunk");l?this._renderChunk(l):$.when(o.model.get_next_chunk()).then(function(t){o._renderChunk(t)}),this.scroll_elt.scroll(function(){o.attempt_to_fetch()})},scrolled_to_bottom:function(){return!1},_renderCell:function(t,e,i){var n=$("";a.show_item_checkboxes&&(b+="");for(var c in a.columns){var d=a.columns[c];d.visible&&(b+='")}return b+=""},body:function(a){var b="",c=0,d=a.items.length;0==d&&(b+='',c=1);for(var e in a.items){var f=a.items[e],g=f.encode_id;b+="",a.show_item_checkboxes&&(b+='');for(j in a.columns){var h=a.columns[j];if(h.visible){var i="";h.nowrap&&(i='style="white-space:nowrap;"');var k=f.column_config[h.label],l=k.link,m=k.value,n=k.target;"string"===jQuery.type(m)&&(m=m.replace(/\/\//g,"/"));var o="",p="";h.attach_popup&&(o="grid-"+e+"-popup",p="menubutton",""!=l&&(p+=" split"),p+=" popup"),b+=""}}b+="",c++}return b},footer:function(a){var b="";if(a.use_paging&&a.num_pages>1){var c=a.num_page_links,d=a.cur_page_num,e=a.num_pages,f=c/2,g=d-f,h=0;0>=g&&(g=1,h=f-(d-g));var j=f+h,k=d+j;e>=k?max_offset=0:(k=e,max_offset=j-(k+1-d)),0!=max_offset&&(g-=max_offset,1>g&&(g=1)),b+='',a.show_item_checkboxes&&(b+=""),b+=''}if(a.show_item_checkboxes){b+='"}var n=!1;for(i in a.operations)if(a.operations[i].global_operation){n=!0;break}if(n){b+='"}return a.legend&&(b+='"),b},message:function(a){return'

                          '+a.message+'

                          '},grid_filters:function(a){var b=a.default_filter_dict,c=a.filters,d="none";a.advanced_search&&(d="block");var e=!1;for(var f in a.columns){var g=a.columns[f];if("advanced"==g.filterable){var h=g.key,i=c[h],j=b[h];i&&j&&i!=j&&(d="block"),e=!0}}var k="block";"block"==d&&(k="none");var l='
                          "+e.join("")+""+a+"").text(t),a=this.model.get_metadata("column_types");return void 0!==i?n.attr("colspan",i).addClass("stringalign"):a&&e"),n=this.model.get_metadata("columns");return this.row_count%2!=0&&i.addClass("dark_row"),e.length===n?_.each(e,function(t,e){i.append(this._renderCell(t,e))},this):e.length>n?(_.each(e.slice(0,n-1),function(t,e){i.append(this._renderCell(t,e))},this),i.append(this._renderCell(e.slice(n-1).join("\t"),n-1))):1===e.length?i.append(this._renderCell(t,0,n)):(_.each(e,function(t,e){i.append(this._renderCell(t,e))},this),_.each(_.range(n-e.length),function(){i.append($(""))})),this.row_count++,i},_renderChunk:function(t){var e=this.$el.find("table");_.each(t.ck_data.split("\n"),function(t,i){""!==t&&e.append(this._renderRow(t))},this)}}),r=s.extend({initialize:function(t){s.prototype.initialize.call(this,t),scroll_elt=_.find(this.$el.parents(),function(t){return"auto"===$(t).css("overflow")}),scroll_elt||(scroll_elt=window),this.scroll_elt=$(scroll_elt)},scrolled_to_bottom:function(){return this.$el.height()-this.scroll_elt.scrollTop()-this.scroll_elt.height()<=0}}),d=s.extend({initialize:function(t){s.prototype.initialize.call(this,t),this.scroll_elt=this.$el.css({position:"relative",overflow:"scroll",height:t.height||"500px"})},scrolled_to_bottom:function(){return this.$el.scrollTop()+this.$el.innerHeight()>=this.el.scrollHeight}}),c=Backbone.View.extend({col:{chrom:null,start:null,end:null},url_viz:null,dataset_id:null,genome_build:null,file_ext:null,initialize:function(t){function e(t,e){for(var i=0;i'].join("")}),i.$(".modal-header").remove(),i.$(".modal-footer").css("margin-top","0px"),j=new b.DatasetList({title:g.title,subtitle:g.subtitle||e(["Click the checkboxes on the right to select datasets. ","Click the datasets names to see their details. "].join("")),el:i.$body.find(".list-panel"),selecting:!0,selected:g.selected,collection:new a.DatasetAssociationCollection(d)}),j.once("rendered:initial",function(){i.show(),i.$el.addClass("dataset-choice-modal")}),g.multiselect||(j.on("rendered",function(){j.$(".list-actions").hide()}),j.on("view:selected",function(a){l.resolve([a.model.toJSON()])})),j.render(0),l.always(function(){i.hide()})):l.reject("No matches found")},i=Backbone.View.extend(d.LoggableMixin).extend({_logNamespace:g,className:"dataset-choice",initialize:function(a){this.debug(this+"(DatasetChoice).initialize:",a),this.label=void 0!==a.label?e(a.label):"",this.where=a.where,this.datasetsOnly=void 0!==a.datasetsOnly?a.datasetsOnly:!0,this.datasetJSON=a.datasetJSON||[],this.selected=a.selected||[],this._setUpListeners()},_setUpListeners:function(){},render:function(){var a=this.toJSON();return this.$el.html(this._template(a)),this.$(".selected").replaceWith(this._renderSelected(a)),this},_template:function(a){return _.template([""].join(""))(a)},_renderSelected:function(a){return $(a.selected.length?_.template(['
                          ','<%- selected.hid %>: <%- selected.name %>','',"<%- selected.misc_blurb %>","",e("format")+": ","<%- selected.file_ext %>","<%- selected.misc_info %>","","
                          "].join(""),{variable:"selected"})(a.selected[0]):['(',e("click to select a dataset"),")"].join(""))},toJSON:function(){var a=this;return{label:a.label,datasets:a.datasetJSON,selected:_.compact(_.map(a.selected,function(b){return _.findWhere(a.datasetJSON,{id:b})}))}},events:{click:"chooseWithModal"},chooseWithModal:function(){var a=this;return this._createModal().done(function(b){b?(a.selected=_.pluck(b,"id"),a.trigger("selected",a,b),a.render()):a.trigger("cancelled",a)}).fail(function(){a.trigger("error",a,arguments)})},_createModal:function(){return new h(this.datasetJSON,this._getModalOptions())},_getModalOptions:function(){return{title:this.label,multiselect:!1,selected:this.selected,where:this.where,datasetsOnly:this.datasetsOnly}},toString:function(){return"DatasetChoice("+this.selected+")"}}),j=i.extend({className:i.prototype.className+" multi",cells:{hid:e("History #"),name:e("Name"),misc_blurb:e("Summary"),file_ext:e("Format"),genome_build:e("Genome"),tags:e("Tags"),annotation:e("Annotation")},initialize:function(a){this.showHeaders=void 0!==a.showHeaders?a.showHeaders:!0,this.cells=a.cells||this.cells,i.prototype.initialize.call(this,a)},_renderSelected:function(a){return $(a.selected.length?_.template(['',"<% if( json.showHeaders ){ %>","","<% _.map( json.cells, function( val, key ){ %>","","<% }); %>","","<% } %>","","<% _.map( json.selected, function( selected ){ %>","","<% _.map( json.cells, function( val, key ){ %>",'',"<% }) %>","","<% }); %>","","
                          <%- val %>
                          <%- selected[ key ] %>
                          "].join(""),{variable:"json"})(a):['(',e("click to select a dataset"),")"].join(""))},toJSON:function(){return _.extend(i.prototype.toJSON.call(this),{showHeaders:this.showHeaders,cells:this.cells})},_getModalOptions:function(){return _.extend(i.prototype._getModalOptions.call(this),{multiselect:!0})},toString:function(){return"DatasetChoice("+this.selected+")"}});return{DatasetChoiceModal:h,DatasetChoice:i,MultiDatasetChoice:j}}); -//# sourceMappingURL=../../../maps/mvc/dataset/dataset-choice.js.map \ No newline at end of file +define(["mvc/dataset/dataset-model","mvc/dataset/dataset-list","mvc/ui/ui-modal","mvc/base-mvc","utils/localization"],function(e,t,s,l,i){"use strict";function a(e,t,s){function l(e,t){for(var s in t)if(t.hasOwnProperty(s)&&e[s]!==t[s])return!1;return!0}return e.filter(function(e){return console.debug(e),!e.deleted&&e.visible&&(!s||void 0===e.collection_type)&&l(e,t)})}var n=function(l,n){function o(){h.resolve(d.getSelectedModels().map(function(e){return e.toJSON()}))}n=_.defaults(n||{},{datasetsOnly:!0,where:{state:"ok"},multiselect:!1,selected:[]}),n.title=n.title||i(n.multiselect?"Choose datasets:":"Choose a dataset:");var c,d,r,h=jQuery.Deferred();return l=(n.filter||a)(l,n.where,n.datasetsOnly),l.length?(n.multiselect&&(r={},r[i("Ok")]=o),c=new s.View({height:"auto",buttons:r,closing_events:!0,closing_callback:function(){h.resolve(null)},body:['
                          '].join("")}),c.$(".modal-header").remove(),c.$(".modal-footer").css("margin-top","0px"),d=new t.DatasetList({title:n.title,subtitle:n.subtitle||i(["Click the checkboxes on the right to select datasets. ","Click the datasets names to see their details. "].join("")),el:c.$body.find(".list-panel"),selecting:!0,selected:n.selected,collection:new e.DatasetAssociationCollection(l)}),d.once("rendered:initial",function(){c.show(),c.$el.addClass("dataset-choice-modal")}),n.multiselect||(d.on("rendered",function(){d.$(".list-actions").hide()}),d.on("view:selected",function(e){h.resolve([e.model.toJSON()])})),d.render(0),h.always(function(){c.hide()})):h.reject("No matches found")},o=Backbone.View.extend(l.LoggableMixin).extend({_logNamespace:"dataset",className:"dataset-choice",initialize:function(e){this.debug(this+"(DatasetChoice).initialize:",e),this.label=void 0!==e.label?i(e.label):"",this.where=e.where,this.datasetsOnly=void 0===e.datasetsOnly||e.datasetsOnly,this.datasetJSON=e.datasetJSON||[],this.selected=e.selected||[],this._setUpListeners()},_setUpListeners:function(){},render:function(){var e=this.toJSON();return this.$el.html(this._template(e)),this.$(".selected").replaceWith(this._renderSelected(e)),this},_template:function(e){return _.template([""].join(""))(e)},_renderSelected:function(e){return e.selected.length?$(_.template(['
                          ','<%- selected.hid %>: <%- selected.name %>','',"<%- selected.misc_blurb %>","",i("format")+": ","<%- selected.file_ext %>","<%- selected.misc_info %>","","
                          "].join(""),{variable:"selected"})(e.selected[0])):$(['(',i("click to select a dataset"),")"].join(""))},toJSON:function(){var e=this;return{label:e.label,datasets:e.datasetJSON,selected:_.compact(_.map(e.selected,function(t){return _.findWhere(e.datasetJSON,{id:t})}))}},events:{click:"chooseWithModal"},chooseWithModal:function(){var e=this;return this._createModal().done(function(t){t?(e.selected=_.pluck(t,"id"),e.trigger("selected",e,t),e.render()):e.trigger("cancelled",e)}).fail(function(){e.trigger("error",e,arguments)})},_createModal:function(){return new n(this.datasetJSON,this._getModalOptions())},_getModalOptions:function(){return{title:this.label,multiselect:!1,selected:this.selected,where:this.where,datasetsOnly:this.datasetsOnly}},toString:function(){return"DatasetChoice("+this.selected+")"}}),c=o.extend({className:o.prototype.className+" multi",cells:{hid:i("History #"),name:i("Name"),misc_blurb:i("Summary"),file_ext:i("Format"),genome_build:i("Genome"),tags:i("Tags"),annotation:i("Annotation")},initialize:function(e){this.showHeaders=void 0===e.showHeaders||e.showHeaders,this.cells=e.cells||this.cells,o.prototype.initialize.call(this,e)},_renderSelected:function(e){return e.selected.length?$(_.template(['',"<% if( json.showHeaders ){ %>","","<% _.map( json.cells, function( val, key ){ %>","","<% }); %>","","<% } %>","","<% _.map( json.selected, function( selected ){ %>","","<% _.map( json.cells, function( val, key ){ %>",'',"<% }) %>","","<% }); %>","","
                          <%- val %>
                          <%- selected[ key ] %>
                          "].join(""),{variable:"json"})(e)):$(['(',i("click to select a dataset"),")"].join(""))},toJSON:function(){return _.extend(o.prototype.toJSON.call(this),{showHeaders:this.showHeaders,cells:this.cells})},_getModalOptions:function(){return _.extend(o.prototype._getModalOptions.call(this),{multiselect:!0})},toString:function(){return"DatasetChoice("+this.selected+")"}});return{DatasetChoiceModal:n,DatasetChoice:o,MultiDatasetChoice:c}}); +//# sourceMappingURL=../../../maps/mvc/dataset/dataset-choice.js.map diff --git a/static/scripts/mvc/dataset/dataset-li-edit.js b/static/scripts/mvc/dataset/dataset-li-edit.js index f016cf2b6c9..a9bc2e7dbcb 100644 --- a/static/scripts/mvc/dataset/dataset-li-edit.js +++ b/static/scripts/mvc/dataset/dataset-li-edit.js @@ -1,2 +1,2 @@ -define(["mvc/dataset/states","mvc/dataset/dataset-li","mvc/tag","mvc/annotation","ui/fa-icon-button","mvc/base-mvc","utils/localization"],function(a,b,c,d,e,f,g){"use strict";var h=b.DatasetListItemView,i=h.extend({initialize:function(a){h.prototype.initialize.call(this,a),this.hasUser=a.hasUser,this.purgeAllowed=a.purgeAllowed||!1,this.tagsEditorShown=a.tagsEditorShown||!1,this.annotationEditorShown=a.annotationEditorShown||!1},_renderPrimaryActions:function(){var b=h.prototype._renderPrimaryActions.call(this);return this.model.get("state")===a.NOT_VIEWABLE?b:h.prototype._renderPrimaryActions.call(this).concat([this._renderEditButton(),this._renderDeleteButton()])},_renderEditButton:function(){if(this.model.get("state")===a.DISCARDED||!this.model.get("accessible"))return null;var b=this.model.get("purged"),c=this.model.get("deleted"),d={title:g("Edit attributes"),href:this.model.urls.edit,target:this.linkTarget,faIcon:"fa-pencil",classes:"edit-btn"};return c||b?(d.disabled=!0,b?d.title=g("Cannot edit attributes of datasets removed from disk"):c&&(d.title=g("Undelete dataset to edit attributes"))):_.contains([a.UPLOAD,a.NEW],this.model.get("state"))&&(d.disabled=!0,d.title=g("This dataset is not yet editable")),e(d)},_renderDeleteButton:function(){if(!this.model.get("accessible"))return null;var a=this,b=this.model.isDeletedOrPurged();return e({title:g(b?"Dataset is already deleted":"Delete"),disabled:b,faIcon:"fa-times",classes:"delete-btn",onclick:function(){a.$el.find(".icon-btn.delete-btn").trigger("mouseout"),a.model.delete()}})},_renderDetails:function(){var b=h.prototype._renderDetails.call(this),c=this.model.get("state");return!this.model.isDeletedOrPurged()&&_.contains([a.OK,a.FAILED_METADATA],c)&&(this._renderTags(b),this._renderAnnotation(b),this._makeDbkeyEditLink(b)),this._setUpBehaviors(b),b},_renderToolHelpButton:function(){var a=this.model.attributes.dataset_id,b=this.model.attributes.creating_job,c=this,d=function(b){var d='
                          ';b.name&&b.help?(d+="Tool help for "+b.name+"
                          ",d+=b.help):d+="Tool help is unavailable for this dataset.
                          ",d+="
                          ",c.$el.find(".details").append($.parseHTML(d))},f=function(a){$.ajax({url:Galaxy.root+"api/tools/"+a.tool_id+"/build"}).done(function(a){d(a)}).fail(function(){d({})})};return null===Galaxy.user.id?null:e({title:"Tool Help",classes:"icon-btn",href:"#",faIcon:"fa-question",onclick:function(){c.$el.find(".toolhelp").length>0?c.$el.find(".toolhelp").toggle():$.ajax({url:Galaxy.root+"api/jobs/"+b}).done(function(a){f(a)}).fail(function(){console.log('Failed at recovering job information from the Galaxy API for job id "'+b+'".')})}})},_renderSecondaryActions:function(){var b=h.prototype._renderSecondaryActions.call(this);switch(this.model.get("state")){case a.UPLOAD:case a.NOT_VIEWABLE:return b;case a.ERROR:return b.unshift(this._renderErrButton()),b.concat([this._renderRerunButton(),this._renderToolHelpButton()]);case a.OK:case a.FAILED_METADATA:return b.concat([this._renderRerunButton(),this._renderVisualizationsButton(),this._renderToolHelpButton()])}return b.concat([this._renderRerunButton(),this._renderToolHelpButton()])},_renderErrButton:function(){return e({title:g("View or report this error"),href:this.model.urls.report_error,classes:"report-error-btn",target:this.linkTarget,faIcon:"fa-bug"})},_renderRerunButton:function(){var a=this.model.get("creating_job");return this.model.get("rerunnable")?e({title:g("Run this job again"),href:this.model.urls.rerun,classes:"rerun-btn",target:this.linkTarget,faIcon:"fa-refresh",onclick:function(b){b.preventDefault(),Galaxy.router.push("/",{job_id:a})}}):void 0},_renderVisualizationsButton:function(){var a=this.model.get("visualizations");if(this.model.isDeletedOrPurged()||!this.hasUser||!this.model.hasData()||_.isEmpty(a))return null;if(!_.isObject(a[0]))return this.warn("Visualizations have been switched off"),null;var b=$(this.templates.visualizations(a,this));return b.find('[target="galaxy_main"]').attr("target",this.linkTarget),this._addScratchBookFn(b.find(".visualization-link").addBack(".visualization-link")),b},_addScratchBookFn:function(a){a.click(function(a){Galaxy.frame&&Galaxy.frame.active&&(Galaxy.frame.add({title:"Visualization",url:$(this).attr("href")}),a.preventDefault(),a.stopPropagation())})},_renderTags:function(a){if(this.hasUser){var b=this;this.tagsEditor=new c.TagsEditor({model:this.model,el:a.find(".tags-display"),onshowFirstTime:function(){this.render()},onshow:function(){b.tagsEditorShown=!0},onhide:function(){b.tagsEditorShown=!1},$activator:e({title:g("Edit dataset tags"),classes:"tag-btn",faIcon:"fa-tags"}).appendTo(a.find(".actions .right"))}),this.tagsEditorShown&&this.tagsEditor.toggle(!0)}},_renderAnnotation:function(a){if(this.hasUser){var b=this;this.annotationEditor=new d.AnnotationEditor({model:this.model,el:a.find(".annotation-display"),onshowFirstTime:function(){this.render()},onshow:function(){b.annotationEditorShown=!0},onhide:function(){b.annotationEditorShown=!1},$activator:e({title:g("Edit dataset annotation"),classes:"annotate-btn",faIcon:"fa-comment"}).appendTo(a.find(".actions .right"))}),this.annotationEditorShown&&this.annotationEditor.toggle(!0)}},_makeDbkeyEditLink:function(a){if("?"===this.model.get("metadata_dbkey")&&!this.model.isDeletedOrPurged()){var b=$('?').attr("href",this.model.urls.edit).attr("target",this.linkTarget);a.find(".dbkey .value").replaceWith(b)}},events:_.extend(_.clone(h.prototype.events),{"click .undelete-link":"_clickUndeleteLink","click .purge-link":"_clickPurgeLink","click .edit-btn":function(a){this.trigger("edit",this,a)},"click .delete-btn":function(a){this.trigger("delete",this,a)},"click .rerun-btn":function(a){this.trigger("rerun",this,a)},"click .report-err-btn":function(a){this.trigger("report-err",this,a)},"click .visualization-btn":function(a){this.trigger("visualize",this,a)},"click .dbkey a":function(a){this.trigger("edit",this,a)}}),_clickUndeleteLink:function(){return this.model.undelete(),!1},_clickPurgeLink:function(){return confirm(g("This will permanently remove the data in your dataset. Are you sure?"))&&this.model.purge(),!1},toString:function(){var a=this.model?this.model+"":"(no model)";return"HDAEditView("+a+")"}});return i.prototype.templates=function(){var a=_.extend({},h.prototype.templates.warnings,{failed_metadata:f.wrapTemplate(['<% if( dataset.state === "failed_metadata" ){ %>','","<% } %>"],"dataset"),deleted:f.wrapTemplate(["<% if( dataset.deleted && !dataset.purged ){ %>",'
                          ',g("This dataset has been deleted"),'
                          ',g("Undelete it"),"","<% if( view.purgeAllowed ){ %>",'
                          ',g("Permanently remove it from disk"),"","<% } %>","
                          ","<% } %>"],"dataset")}),b=f.wrapTemplate(["<% if( visualizations.length === 1 ){ %>",'">','',"","<% } else { %>",'","<% } %>"],"visualizations");return _.extend({},h.prototype.templates,{warnings:a,visualizations:b})}(),{DatasetListItemEdit:i}}); -//# sourceMappingURL=../../../maps/mvc/dataset/dataset-li-edit.js.map \ No newline at end of file +define(["mvc/dataset/states","mvc/dataset/dataset-li","mvc/tag","mvc/annotation","ui/fa-icon-button","mvc/base-mvc","utils/localization"],function(t,e,i,n,a,r,o){"use strict";var s=e.DatasetListItemView,l=s.extend({initialize:function(t){s.prototype.initialize.call(this,t),this.hasUser=t.hasUser,this.purgeAllowed=t.purgeAllowed||!1,this.tagsEditorShown=t.tagsEditorShown||!1,this.annotationEditorShown=t.annotationEditorShown||!1},_renderPrimaryActions:function(){var e=s.prototype._renderPrimaryActions.call(this);return this.model.get("state")===t.NOT_VIEWABLE?e:s.prototype._renderPrimaryActions.call(this).concat([this._renderEditButton(),this._renderDeleteButton()])},_renderEditButton:function(){if(this.model.get("state")===t.DISCARDED||!this.model.get("accessible"))return null;var e=this.model.get("purged"),i=this.model.get("deleted"),n={title:o("Edit attributes"),href:this.model.urls.edit,target:this.linkTarget,faIcon:"fa-pencil",classes:"edit-btn"};return i||e?(n.disabled=!0,e?n.title=o("Cannot edit attributes of datasets removed from disk"):i&&(n.title=o("Undelete dataset to edit attributes"))):_.contains([t.UPLOAD,t.NEW],this.model.get("state"))&&(n.disabled=!0,n.title=o("This dataset is not yet editable")),a(n)},_renderDeleteButton:function(){if(!this.model.get("accessible"))return null;var t=this,e=this.model.isDeletedOrPurged();return a({title:o(e?"Dataset is already deleted":"Delete"),disabled:e,faIcon:"fa-times",classes:"delete-btn",onclick:function(){t.$el.find(".icon-btn.delete-btn").trigger("mouseout"),t.model.delete()}})},_renderDetails:function(){var e=s.prototype._renderDetails.call(this),i=this.model.get("state");return!this.model.isDeletedOrPurged()&&_.contains([t.OK,t.FAILED_METADATA],i)&&(this._renderTags(e),this._renderAnnotation(e),this._makeDbkeyEditLink(e)),this._setUpBehaviors(e),e},_renderToolHelpButton:function(){var t=this.model.attributes.dataset_id,e=this.model.attributes.creating_job,i=this,n=function(e){var n='
                          ';e.name&&e.help?(n+="Tool help for "+e.name+"
                          ",n+=e.help):n+="Tool help is unavailable for this dataset.
                          ",n+="
                          ",i.$el.find(".details").append($.parseHTML(n))},r=function(t){$.ajax({url:Galaxy.root+"api/tools/"+t.tool_id+"/build"}).done(function(t){n(t)}).fail(function(){n({})})};return null===Galaxy.user.id?null:a({title:"Tool Help",classes:"icon-btn",href:"#",faIcon:"fa-question",onclick:function(){i.$el.find(".toolhelp").length>0?i.$el.find(".toolhelp").toggle():$.ajax({url:Galaxy.root+"api/jobs/"+e}).done(function(t){r(t)}).fail(function(){console.log('Failed at recovering job information from the Galaxy API for job id "'+e+'".')})}})},_renderSecondaryActions:function(){var e=s.prototype._renderSecondaryActions.call(this);switch(this.model.get("state")){case t.UPLOAD:case t.NOT_VIEWABLE:return e;case t.ERROR:return e.unshift(this._renderErrButton()),e.concat([this._renderRerunButton(),this._renderToolHelpButton()]);case t.OK:case t.FAILED_METADATA:return e.concat([this._renderRerunButton(),this._renderVisualizationsButton(),this._renderToolHelpButton()])}return e.concat([this._renderRerunButton(),this._renderToolHelpButton()])},_renderErrButton:function(){return a({title:o("View or report this error"),href:this.model.urls.report_error,classes:"report-error-btn",target:this.linkTarget,faIcon:"fa-bug"})},_renderRerunButton:function(){var t=this.model.get("creating_job");if(this.model.get("rerunnable"))return a({title:o("Run this job again"),href:this.model.urls.rerun,classes:"rerun-btn",target:this.linkTarget,faIcon:"fa-refresh",onclick:function(e){e.preventDefault(),Galaxy.router.push("/",{job_id:t})}})},_renderVisualizationsButton:function(){var t=this.model.get("visualizations");if(this.model.isDeletedOrPurged()||!this.hasUser||!this.model.hasData()||_.isEmpty(t))return null;if(!_.isObject(t[0]))return this.warn("Visualizations have been switched off"),null;var e=$(this.templates.visualizations(t,this));return e.find('[target="galaxy_main"]').attr("target",this.linkTarget),this._addScratchBookFn(e.find(".visualization-link").addBack(".visualization-link")),e},_addScratchBookFn:function(t){t.click(function(t){Galaxy.frame&&Galaxy.frame.active&&(Galaxy.frame.add({title:"Visualization",url:$(this).attr("href")}),t.preventDefault(),t.stopPropagation())})},_renderTags:function(t){if(this.hasUser){var e=this;this.tagsEditor=new i.TagsEditor({model:this.model,el:t.find(".tags-display"),onshowFirstTime:function(){this.render()},onshow:function(){e.tagsEditorShown=!0},onhide:function(){e.tagsEditorShown=!1},$activator:a({title:o("Edit dataset tags"),classes:"tag-btn",faIcon:"fa-tags"}).appendTo(t.find(".actions .right"))}),this.tagsEditorShown&&this.tagsEditor.toggle(!0)}},_renderAnnotation:function(t){if(this.hasUser){var e=this;this.annotationEditor=new n.AnnotationEditor({model:this.model,el:t.find(".annotation-display"),onshowFirstTime:function(){this.render()},onshow:function(){e.annotationEditorShown=!0},onhide:function(){e.annotationEditorShown=!1},$activator:a({title:o("Edit dataset annotation"),classes:"annotate-btn",faIcon:"fa-comment"}).appendTo(t.find(".actions .right"))}),this.annotationEditorShown&&this.annotationEditor.toggle(!0)}},_makeDbkeyEditLink:function(t){if("?"===this.model.get("metadata_dbkey")&&!this.model.isDeletedOrPurged()){var e=$('?').attr("href",this.model.urls.edit).attr("target",this.linkTarget);t.find(".dbkey .value").replaceWith(e)}},events:_.extend(_.clone(s.prototype.events),{"click .undelete-link":"_clickUndeleteLink","click .purge-link":"_clickPurgeLink","click .edit-btn":function(t){this.trigger("edit",this,t)},"click .delete-btn":function(t){this.trigger("delete",this,t)},"click .rerun-btn":function(t){this.trigger("rerun",this,t)},"click .report-err-btn":function(t){this.trigger("report-err",this,t)},"click .visualization-btn":function(t){this.trigger("visualize",this,t)},"click .dbkey a":function(t){this.trigger("edit",this,t)}}),_clickUndeleteLink:function(t){return this.model.undelete(),!1},_clickPurgeLink:function(t){return confirm(o("This will permanently remove the data in your dataset. Are you sure?"))&&this.model.purge(),!1},toString:function(){return"HDAEditView("+(this.model?this.model+"":"(no model)")+")"}});return l.prototype.templates=function(){var t=_.extend({},s.prototype.templates.warnings,{failed_metadata:r.wrapTemplate(['<% if( dataset.state === "failed_metadata" ){ %>','","<% } %>"],"dataset"),deleted:r.wrapTemplate(["<% if( dataset.deleted && !dataset.purged ){ %>",'
                          ',o("This dataset has been deleted"),'
                          ',o("Undelete it"),"","<% if( view.purgeAllowed ){ %>",'
                          ',o("Permanently remove it from disk"),"","<% } %>","
                          ","<% } %>"],"dataset")}),e=r.wrapTemplate(["<% if( visualizations.length === 1 ){ %>",'">','',"","<% } else { %>",'","<% } %>"],"visualizations");return _.extend({},s.prototype.templates,{warnings:t,visualizations:e})}(),{DatasetListItemEdit:l}}); +//# sourceMappingURL=../../../maps/mvc/dataset/dataset-li-edit.js.map diff --git a/static/scripts/mvc/dataset/dataset-li.js b/static/scripts/mvc/dataset/dataset-li.js index 5e9e38785fd..03f7b405991 100644 --- a/static/scripts/mvc/dataset/dataset-li.js +++ b/static/scripts/mvc/dataset/dataset-li.js @@ -1,2 +1,2 @@ -define(["mvc/list/list-item","mvc/dataset/states","ui/fa-icon-button","mvc/base-mvc","utils/localization"],function(a,b,c,d,e){"use strict";var f="dataset",g=a.ListItemView,h=g.extend({_logNamespace:f,className:g.prototype.className+" dataset",id:function(){return["dataset",this.model.get("id")].join("-")},initialize:function(a){a.logger&&(this.logger=this.model.logger=a.logger),this.log(this+".initialize:",a),g.prototype.initialize.call(this,a),this.linkTarget=a.linkTarget||"_blank"},_setUpListeners:function(){g.prototype._setUpListeners.call(this);var a=this;return a.listenTo(a.model,{change:function(){a.model.changedAttributes().state&&a.model.inReadyState()&&a.expanded&&!a.model.hasDetails()?a.model.fetch({silent:!0}).done(function(){a.render()}):a.render()}})},_fetchModelDetails:function(){var a=this;return a.model.inReadyState()&&!a.model.hasDetails()?a.model.fetch({silent:!0}):jQuery.when()},remove:function(a,b){var c=this;a=a||this.fxSpeed,this.$el.fadeOut(a,function(){Backbone.View.prototype.remove.call(c),b&&b.call(c)})},_swapNewRender:function(a){return g.prototype._swapNewRender.call(this,a),this.model.has("state")&&this.$el.addClass("state-"+this.model.get("state")),this.$el},_renderPrimaryActions:function(){return[this._renderDisplayButton()]},_renderDisplayButton:function(){var a=this.model.get("state");if(a===b.NOT_VIEWABLE||a===b.DISCARDED||!this.model.get("accessible"))return null;var d={target:this.linkTarget,classes:"display-btn"};if(this.model.get("purged"))d.disabled=!0,d.title=e("Cannot display datasets removed from disk");else if(a===b.UPLOAD)d.disabled=!0,d.title=e("This dataset must finish uploading before it can be viewed");else if(a===b.NEW)d.disabled=!0,d.title=e("This dataset is not yet viewable");else{d.title=e("View data"),d.href=this.model.urls.display;var f=this;d.onclick=function(a){Galaxy.frame&&Galaxy.frame.active&&(Galaxy.frame.addDataset(f.model.get("id")),a.preventDefault())}}return d.faIcon="fa-eye",c(d)},_renderDetails:function(){if(this.model.get("state")===b.NOT_VIEWABLE)return $(this.templates.noAccess(this.model.toJSON(),this));var a=g.prototype._renderDetails.call(this);return a.find(".actions .left").empty().append(this._renderSecondaryActions()),a.find(".summary").html(this._renderSummary()).prepend(this._renderDetailMessages()),a.find(".display-applications").html(this._renderDisplayApplications()),this._setUpBehaviors(a),a},_renderSummary:function(){var a=this.model.toJSON(),b=this.templates.summaries[a.state];return(b=b||this.templates.summaries.unknown)(a,this)},_renderDetailMessages:function(){var a=this,b=$('
                          '),c=a.model.toJSON();return _.each(a.templates.detailMessages,function(d){b.append($(d(c,a)))}),b},_renderDisplayApplications:function(){return this.model.isDeletedOrPurged()?"":[this.templates.displayApplications(this.model.get("display_apps"),this),this.templates.displayApplications(this.model.get("display_types"),this)].join("")},_renderSecondaryActions:function(){switch(this.debug("_renderSecondaryActions"),this.model.get("state")){case b.NOT_VIEWABLE:return[];case b.OK:case b.FAILED_METADATA:case b.ERROR:return[this._renderDownloadButton(),this._renderShowParamsButton()]}return[this._renderShowParamsButton()]},_renderShowParamsButton:function(){return c({title:e("View details"),classes:"params-btn",href:this.model.urls.show_params,target:this.linkTarget,faIcon:"fa-info-circle",onclick:function(a){Galaxy.frame&&Galaxy.frame.active&&(Galaxy.frame.add({title:"Dataset details",url:this.href}),a.preventDefault(),a.stopPropagation())}})},_renderDownloadButton:function(){return this.model.get("purged")||!this.model.hasData()?null:_.isEmpty(this.model.get("meta_files"))?$(['','',""].join("")):this._renderMetaFileDownloadButton()},_renderMetaFileDownloadButton:function(){var a=this.model.urls;return $(['"].join("\n"))},events:_.extend(_.clone(g.prototype.events),{"click .display-btn":function(a){this.trigger("display",this,a)},"click .params-btn":function(a){this.trigger("params",this,a)},"click .download-btn":function(a){this.trigger("download",this,a)}}),toString:function(){var a=this.model?this.model+"":"(no model)";return"DatasetListItemView("+a+")"}});return h.prototype.templates=function(){var a=_.extend({},g.prototype.templates.warnings,{failed_metadata:d.wrapTemplate(['<% if( model.state === "failed_metadata" ){ %>','
                          ',e("An error occurred setting the metadata for this dataset"),"
                          ","<% } %>"]),error:d.wrapTemplate(["<% if( model.error ){ %>",'
                          ',e("There was an error getting the data for this dataset"),": <%- model.error %>","
                          ","<% } %>"]),purged:d.wrapTemplate(["<% if( model.purged ){ %>",'
                          ',e("This dataset has been deleted and removed from disk"),"
                          ","<% } %>"]),deleted:d.wrapTemplate(["<% if( model.deleted && !model.purged ){ %>",'
                          ',e("This dataset has been deleted"),"
                          ","<% } %>"])}),c=d.wrapTemplate(['
                          ','
                          ','
                          ','
                          ','
                          ',"
                          ","<% if( !dataset.deleted && !dataset.purged ){ %>",'
                          ','
                          ','
                          ',"<% if( dataset.peek ){ %>",'
                          <%= dataset.peek %>
                          ',"<% } %>","<% } %>","
                          "],"dataset"),f=d.wrapTemplate(['
                          ','
                          ',e("You do not have permission to view this dataset"),"
                          ","
                          "],"dataset"),h={};h[b.OK]=h[b.FAILED_METADATA]=d.wrapTemplate(["<% if( dataset.misc_blurb ){ %>",'
                          ','<%- dataset.misc_blurb %>',"
                          ","<% } %>","<% if( dataset.file_ext ){ %>",'
                          ','",'<%- dataset.file_ext %>',"
                          ","<% } %>","<% if( dataset.metadata_dbkey ){ %>",'
                          ','",'',"<%- dataset.metadata_dbkey %>","","
                          ","<% } %>","<% if( dataset.misc_info ){ %>",'
                          ','<%- dataset.misc_info %>',"
                          ","<% } %>"],"dataset"),h[b.NEW]=d.wrapTemplate(["
                          ",e("This is a new dataset and not all of its data are available yet"),"
                          "],"dataset"),h[b.NOT_VIEWABLE]=d.wrapTemplate(["
                          ",e("You do not have permission to view this dataset"),"
                          "],"dataset"),h[b.DISCARDED]=d.wrapTemplate(["
                          ",e("The job creating this dataset was cancelled before completion"),"
                          "],"dataset"),h[b.QUEUED]=d.wrapTemplate(["
                          ",e("This job is waiting to run"),"
                          "],"dataset"),h[b.RUNNING]=d.wrapTemplate(["
                          ",e("This job is currently running"),"
                          "],"dataset"),h[b.UPLOAD]=d.wrapTemplate(["
                          ",e("This dataset is currently uploading"),"
                          "],"dataset"),h[b.SETTING_METADATA]=d.wrapTemplate(["
                          ",e("Metadata is being auto-detected"),"
                          "],"dataset"),h[b.PAUSED]=d.wrapTemplate(["
                          ",e('This job is paused. Use the "Resume Paused Jobs" in the history menu to resume'),"
                          "],"dataset"),h[b.ERROR]=d.wrapTemplate(["<% if( !dataset.purged ){ %>","
                          <%- dataset.misc_blurb %>
                          ","<% } %>",'',e("An error occurred with this dataset"),":",'
                          <%- dataset.misc_info %>
                          '],"dataset"),h[b.EMPTY]=d.wrapTemplate(["
                          ",e("No data"),": <%- dataset.misc_blurb %>
                          "],"dataset"),h.unknown=d.wrapTemplate(['
                          Error: unknown dataset state: "<%- dataset.state %>"
                          '],"dataset");var i={resubmitted:d.wrapTemplate(["<% if( model.resubmitted ){ %>",'
                          ',e("The job creating this dataset has been resubmitted"),"
                          ","<% } %>"])},j=d.wrapTemplate(["<% _.each( apps, function( app ){ %>",'
                          ','<%- app.label %> ','',"<% _.each( app.links, function( link ){ %>",'',"<% print( _l( link.text ) ); %>"," ","<% }); %>","","
                          ","<% }); %>"],"apps");return _.extend({},g.prototype.templates,{warnings:a,details:c,noAccess:f,summaries:h,detailMessages:i,displayApplications:j})}(),{DatasetListItemView:h}}); -//# sourceMappingURL=../../../maps/mvc/dataset/dataset-li.js.map \ No newline at end of file +define(["mvc/list/list-item","mvc/dataset/states","ui/fa-icon-button","mvc/base-mvc","utils/localization"],function(e,t,a,s,i){"use strict";var d=e.ListItemView,l=d.extend({_logNamespace:"dataset",className:d.prototype.className+" dataset",id:function(){return["dataset",this.model.get("id")].join("-")},initialize:function(e){e.logger&&(this.logger=this.model.logger=e.logger),this.log(this+".initialize:",e),d.prototype.initialize.call(this,e),this.linkTarget=e.linkTarget||"_blank"},_setUpListeners:function(){d.prototype._setUpListeners.call(this);var e=this;return e.listenTo(e.model,{change:function(t,a){e.model.changedAttributes().state&&e.model.inReadyState()&&e.expanded&&!e.model.hasDetails()?e.model.fetch({silent:!0}).done(function(){e.render()}):e.render()}})},_fetchModelDetails:function(){var e=this;return e.model.inReadyState()&&!e.model.hasDetails()?e.model.fetch({silent:!0}):jQuery.when()},remove:function(e,t){var a=this;e=e||this.fxSpeed,this.$el.fadeOut(e,function(){Backbone.View.prototype.remove.call(a),t&&t.call(a)})},_swapNewRender:function(e){return d.prototype._swapNewRender.call(this,e),this.model.has("state")&&this.$el.addClass("state-"+this.model.get("state")),this.$el},_renderPrimaryActions:function(){return[this._renderDisplayButton()]},_renderDisplayButton:function(){var e=this.model.get("state");if(e===t.NOT_VIEWABLE||e===t.DISCARDED||!this.model.get("accessible"))return null;var s={target:this.linkTarget,classes:"display-btn"};if(this.model.get("purged"))s.disabled=!0,s.title=i("Cannot display datasets removed from disk");else if(e===t.UPLOAD)s.disabled=!0,s.title=i("This dataset must finish uploading before it can be viewed");else if(e===t.NEW)s.disabled=!0,s.title=i("This dataset is not yet viewable");else{s.title=i("View data"),s.href=this.model.urls.display;var d=this;s.onclick=function(e){Galaxy.frame&&Galaxy.frame.active&&(Galaxy.frame.addDataset(d.model.get("id")),e.preventDefault())}}return s.faIcon="fa-eye",a(s)},_renderDetails:function(){if(this.model.get("state")===t.NOT_VIEWABLE)return $(this.templates.noAccess(this.model.toJSON(),this));var e=d.prototype._renderDetails.call(this);return e.find(".actions .left").empty().append(this._renderSecondaryActions()),e.find(".summary").html(this._renderSummary()).prepend(this._renderDetailMessages()),e.find(".display-applications").html(this._renderDisplayApplications()),this._setUpBehaviors(e),e},_renderSummary:function(){var e=this.model.toJSON(),t=this.templates.summaries[e.state];return(t=t||this.templates.summaries.unknown)(e,this)},_renderDetailMessages:function(){var e=this,t=$('
                          '),a=e.model.toJSON();return _.each(e.templates.detailMessages,function(s){t.append($(s(a,e)))}),t},_renderDisplayApplications:function(){return this.model.isDeletedOrPurged()?"":[this.templates.displayApplications(this.model.get("display_apps"),this),this.templates.displayApplications(this.model.get("display_types"),this)].join("")},_renderSecondaryActions:function(){switch(this.debug("_renderSecondaryActions"),this.model.get("state")){case t.NOT_VIEWABLE:return[];case t.OK:case t.FAILED_METADATA:case t.ERROR:return[this._renderDownloadButton(),this._renderShowParamsButton()]}return[this._renderShowParamsButton()]},_renderShowParamsButton:function(){return a({title:i("View details"),classes:"params-btn",href:this.model.urls.show_params,target:this.linkTarget,faIcon:"fa-info-circle",onclick:function(e){Galaxy.frame&&Galaxy.frame.active&&(Galaxy.frame.add({title:"Dataset details",url:this.href}),e.preventDefault(),e.stopPropagation())}})},_renderDownloadButton:function(){return this.model.get("purged")||!this.model.hasData()?null:_.isEmpty(this.model.get("meta_files"))?$(['','',""].join("")):this._renderMetaFileDownloadButton()},_renderMetaFileDownloadButton:function(){var e=this.model.urls;return $(['"].join("\n"))},events:_.extend(_.clone(d.prototype.events),{"click .display-btn":function(e){this.trigger("display",this,e)},"click .params-btn":function(e){this.trigger("params",this,e)},"click .download-btn":function(e){this.trigger("download",this,e)}}),toString:function(){return"DatasetListItemView("+(this.model?this.model+"":"(no model)")+")"}});return l.prototype.templates=function(){var e=_.extend({},d.prototype.templates.warnings,{failed_metadata:s.wrapTemplate(['<% if( model.state === "failed_metadata" ){ %>','
                          ',i("An error occurred setting the metadata for this dataset"),"
                          ","<% } %>"]),error:s.wrapTemplate(["<% if( model.error ){ %>",'
                          ',i("There was an error getting the data for this dataset"),": <%- model.error %>","
                          ","<% } %>"]),purged:s.wrapTemplate(["<% if( model.purged ){ %>",'
                          ',i("This dataset has been deleted and removed from disk"),"
                          ","<% } %>"]),deleted:s.wrapTemplate(["<% if( model.deleted && !model.purged ){ %>",'
                          ',i("This dataset has been deleted"),"
                          ","<% } %>"])}),a=s.wrapTemplate(['
                          ','
                          ','
                          ','
                          ','
                          ',"
                          ","<% if( !dataset.deleted && !dataset.purged ){ %>",'
                          ','
                          ','
                          ',"<% if( dataset.peek ){ %>",'
                          <%= dataset.peek %>
                          ',"<% } %>","<% } %>","
                          "],"dataset"),l=s.wrapTemplate(['
                          ','
                          ',i("You do not have permission to view this dataset"),"
                          ","
                          "],"dataset"),n={};n[t.OK]=n[t.FAILED_METADATA]=s.wrapTemplate(["<% if( dataset.misc_blurb ){ %>",'
                          ','<%- dataset.misc_blurb %>',"
                          ","<% } %>","<% if( dataset.file_ext ){ %>",'
                          ','",'<%- dataset.file_ext %>',"
                          ","<% } %>","<% if( dataset.metadata_dbkey ){ %>",'
                          ','",'',"<%- dataset.metadata_dbkey %>","","
                          ","<% } %>","<% if( dataset.misc_info ){ %>",'
                          ','<%- dataset.misc_info %>',"
                          ","<% } %>"],"dataset"),n[t.NEW]=s.wrapTemplate(["
                          ",i("This is a new dataset and not all of its data are available yet"),"
                          "],"dataset"),n[t.NOT_VIEWABLE]=s.wrapTemplate(["
                          ",i("You do not have permission to view this dataset"),"
                          "],"dataset"),n[t.DISCARDED]=s.wrapTemplate(["
                          ",i("The job creating this dataset was cancelled before completion"),"
                          "],"dataset"),n[t.QUEUED]=s.wrapTemplate(["
                          ",i("This job is waiting to run"),"
                          "],"dataset"),n[t.RUNNING]=s.wrapTemplate(["
                          ",i("This job is currently running"),"
                          "],"dataset"),n[t.UPLOAD]=s.wrapTemplate(["
                          ",i("This dataset is currently uploading"),"
                          "],"dataset"),n[t.SETTING_METADATA]=s.wrapTemplate(["
                          ",i("Metadata is being auto-detected"),"
                          "],"dataset"),n[t.PAUSED]=s.wrapTemplate(["
                          ",i('This job is paused. Use the "Resume Paused Jobs" in the history menu to resume'),"
                          "],"dataset"),n[t.ERROR]=s.wrapTemplate(["<% if( !dataset.purged ){ %>","
                          <%- dataset.misc_blurb %>
                          ","<% } %>",'',i("An error occurred with this dataset"),":",'
                          <%- dataset.misc_info %>
                          '],"dataset"),n[t.EMPTY]=s.wrapTemplate(["
                          ",i("No data"),": <%- dataset.misc_blurb %>
                          "],"dataset"),n.unknown=s.wrapTemplate(['
                          Error: unknown dataset state: "<%- dataset.state %>"
                          '],"dataset");var r={resubmitted:s.wrapTemplate(["<% if( model.resubmitted ){ %>",'
                          ',i("The job creating this dataset has been resubmitted"),"
                          ","<% } %>"])},o=s.wrapTemplate(["<% _.each( apps, function( app ){ %>",'
                          ','<%- app.label %> ','',"<% _.each( app.links, function( link ){ %>",'',"<% print( _l( link.text ) ); %>"," ","<% }); %>","","
                          ","<% }); %>"],"apps");return _.extend({},d.prototype.templates,{warnings:e,details:a,noAccess:l,summaries:n,detailMessages:r,displayApplications:o})}(),{DatasetListItemView:l}}); +//# sourceMappingURL=../../../maps/mvc/dataset/dataset-li.js.map diff --git a/static/scripts/mvc/dataset/dataset-list.js b/static/scripts/mvc/dataset/dataset-list.js index 1cc1778d00e..e9a03051f5c 100644 --- a/static/scripts/mvc/dataset/dataset-list.js +++ b/static/scripts/mvc/dataset/dataset-list.js @@ -1,2 +1,2 @@ -define(["mvc/list/list-view","mvc/dataset/dataset-li","mvc/base-mvc","utils/localization"],function(a,b,c,d){"use strict";var e="dataset",f=a.ListPanel,g=f.extend({_logNamespace:e,viewClass:b.DatasetListItemView,className:f.prototype.className+" dataset-list",noneFoundMsg:d("No matching datasets found"),initialize:function(a){f.prototype.initialize.call(this,a)},toString:function(){return"DatasetList("+this.collection+")"}});return{DatasetList:g}}); -//# sourceMappingURL=../../../maps/mvc/dataset/dataset-list.js.map \ No newline at end of file +define(["mvc/list/list-view","mvc/dataset/dataset-li","mvc/base-mvc","utils/localization"],function(t,a,i,e){"use strict";var s=t.ListPanel;return{DatasetList:s.extend({_logNamespace:"dataset",viewClass:a.DatasetListItemView,className:s.prototype.className+" dataset-list",noneFoundMsg:e("No matching datasets found"),initialize:function(t){s.prototype.initialize.call(this,t)},toString:function(){return"DatasetList("+this.collection+")"}})}}); +//# sourceMappingURL=../../../maps/mvc/dataset/dataset-list.js.map diff --git a/static/scripts/mvc/dataset/dataset-model.js b/static/scripts/mvc/dataset/dataset-model.js index 941696a1b59..a5532c46e53 100644 --- a/static/scripts/mvc/dataset/dataset-model.js +++ b/static/scripts/mvc/dataset/dataset-model.js @@ -1,2 +1,2 @@ -define(["mvc/dataset/states","mvc/base-mvc","utils/localization"],function(a,b,c){"use strict";var d="dataset",e=b.SearchableModelMixin,f=Backbone.Model.extend(b.LoggableMixin).extend(b.mixin(e,{_logNamespace:d,defaults:{state:a.NEW,deleted:!1,purged:!1,name:"(unnamed dataset)",accessible:!0,data_type:"",file_ext:"",file_size:0,meta_files:[],misc_blurb:"",misc_info:"",tags:[]},initialize:function(b,c){this.debug(this+"(Dataset).initialize",b,c),this.get("accessible")||this.set("state",a.NOT_VIEWABLE),this.urls=this._generateUrls(),this._setUpListeners()},_generateUrls:function(){var a=this.get("id");if(!a)return{};var b={purge:"datasets/"+a+"/purge_async",display:"datasets/"+a+"/display/?preview=True",edit:"datasets/"+a+"/edit",download:"datasets/"+a+"/display?to_ext="+this.get("file_ext"),report_error:"dataset/errors?id="+a,rerun:"tool_runner/rerun?id="+a,show_params:"datasets/"+a+"/show_params",visualization:"visualization",meta_download:"dataset/get_metadata_file?hda_id="+a+"&metadata_name="};return _.each(b,function(a,c){b[c]=Galaxy.root+a}),this.urls=b,b},_setUpListeners:function(){this.on("change:state",function(a,b){this.log(this+" has changed state:",a,b),this.inReadyState()&&this.trigger("state:ready",a,b,this.previous("state"))}),this.on("change:id change:file_ext",function(){this._generateUrls()})},toJSON:function(){var a=Backbone.Model.prototype.toJSON.call(this);return _.extend(a,{urls:this.urls})},isDeletedOrPurged:function(){return this.get("deleted")||this.get("purged")},inReadyState:function(){var b=_.contains(a.READY_STATES,this.get("state"));return this.isDeletedOrPurged()||b},hasDetails:function(){return this.get("accessible")?this.has("annotation"):!0},hasData:function(){return this.get("file_size")>0},fetch:function(a){var b=this;return Backbone.Model.prototype.fetch.call(this,a).always(function(){b._generateUrls()})},parse:function(a,b){var c=Backbone.Model.prototype.parse.call(this,a,b);return c.create_time&&(c.create_time=new Date(c.create_time)),c.update_time&&(c.update_time=new Date(c.update_time)),c},save:function(a,b){return b=b||{},b.wait=_.isUndefined(b.wait)?!0:b.wait,Backbone.Model.prototype.save.call(this,a,b)},"delete":function(a){return this.get("deleted")?jQuery.when():this.save({deleted:!0},a)},undelete:function(a){return!this.get("deleted")||this.get("purged")?jQuery.when():this.save({deleted:!1},a)},purge:function(a){if(this.get("purged"))return jQuery.when();a=a||{},a.url=this.urls.purge;var b=this,d=jQuery.ajax(a);return d.done(function(){b.set({deleted:!0,purged:!0})}),d.fail(function(d){var e=c("Unable to purge dataset"),f="Removal of datasets by users is not allowed in this Galaxy instance";d.responseJSON&&d.responseJSON.error?e=d.responseJSON.error:-1!==d.responseText.indexOf(f)&&(e=f),d.responseText=e,b.trigger("error",b,d,a,c(e),{error:e})}),d},searchAttributes:["name","file_ext","genome_build","misc_blurb","misc_info","annotation","tags"],searchAliases:{title:"name",format:"file_ext",database:"genome_build",blurb:"misc_blurb",description:"misc_blurb",info:"misc_info",tag:"tags"},toString:function(){var a=this.get("id")||"";return this.get("name")&&(a='"'+this.get("name")+'",'+a),"Dataset("+a+")"}})),g=Backbone.Collection.extend(b.LoggableMixin).extend({_logNamespace:d,model:f,urlRoot:Galaxy.root+"api/datasets",url:function(){return this.urlRoot},ids:function(){return this.map(function(a){return a.get("id")})},notReady:function(){return this.filter(function(a){return!a.inReadyState()})},haveDetails:function(){return this.all(function(a){return a.hasDetails()})},ajaxQueue:function(a,b){var c=jQuery.Deferred(),d=this.length,e=[];if(!d)return c.resolve([]),c;var f=this.chain().reverse().map(function(g,h){return function(){var i=a.call(g,b);i.done(function(a){c.notify({curr:h,total:d,response:a,model:g})}),i.always(function(a){e.push(a),f.length?f.shift()():c.resolve(e)})}}).value();return f.shift()(),c},matches:function(a){return this.filter(function(b){return b.matches(a)})},toString:function(){return["DatasetAssociationCollection(",this.length,")"].join("")}});return{DatasetAssociation:f,DatasetAssociationCollection:g}}); -//# sourceMappingURL=../../../maps/mvc/dataset/dataset-model.js.map \ No newline at end of file +define(["mvc/dataset/states","mvc/base-mvc","utils/localization"],function(e,t,i){"use strict";var a=t.SearchableModelMixin,n=Backbone.Model.extend(t.LoggableMixin).extend(t.mixin(a,{_logNamespace:"dataset",defaults:{state:e.NEW,deleted:!1,purged:!1,name:"(unnamed dataset)",accessible:!0,data_type:"",file_ext:"",file_size:0,meta_files:[],misc_blurb:"",misc_info:"",tags:[]},initialize:function(t,i){this.debug(this+"(Dataset).initialize",t,i),this.get("accessible")||this.set("state",e.NOT_VIEWABLE),this.urls=this._generateUrls(),this._setUpListeners()},_generateUrls:function(){var e=this.get("id");if(!e)return{};var t={purge:"datasets/"+e+"/purge_async",display:"datasets/"+e+"/display/?preview=True",edit:"datasets/"+e+"/edit",download:"datasets/"+e+"/display?to_ext="+this.get("file_ext"),report_error:"dataset/errors?id="+e,rerun:"tool_runner/rerun?id="+e,show_params:"datasets/"+e+"/show_params",visualization:"visualization",meta_download:"dataset/get_metadata_file?hda_id="+e+"&metadata_name="};return _.each(t,function(e,i){t[i]=Galaxy.root+e}),this.urls=t,t},_setUpListeners:function(){this.on("change:state",function(e,t){this.log(this+" has changed state:",e,t),this.inReadyState()&&this.trigger("state:ready",e,t,this.previous("state"))}),this.on("change:id change:file_ext",function(e){this._generateUrls()})},toJSON:function(){var e=Backbone.Model.prototype.toJSON.call(this);return _.extend(e,{urls:this.urls})},isDeletedOrPurged:function(){return this.get("deleted")||this.get("purged")},inReadyState:function(){var t=_.contains(e.READY_STATES,this.get("state"));return this.isDeletedOrPurged()||t},hasDetails:function(){return!this.get("accessible")||this.has("annotation")},hasData:function(){return this.get("file_size")>0},fetch:function(e){var t=this;return Backbone.Model.prototype.fetch.call(this,e).always(function(){t._generateUrls()})},parse:function(e,t){var i=Backbone.Model.prototype.parse.call(this,e,t);return i.create_time&&(i.create_time=new Date(i.create_time)),i.update_time&&(i.update_time=new Date(i.update_time)),i},save:function(e,t){return t=t||{},t.wait=!!_.isUndefined(t.wait)||t.wait,Backbone.Model.prototype.save.call(this,e,t)},delete:function(e){return this.get("deleted")?jQuery.when():this.save({deleted:!0},e)},undelete:function(e){return!this.get("deleted")||this.get("purged")?jQuery.when():this.save({deleted:!1},e)},purge:function(e){if(this.get("purged"))return jQuery.when();e=e||{},e.url=this.urls.purge;var t=this,a=jQuery.ajax(e);return a.done(function(e,i,a){t.set({deleted:!0,purged:!0})}),a.fail(function(a,n,s){var r=i("Unable to purge dataset");a.responseJSON&&a.responseJSON.error?r=a.responseJSON.error:-1!==a.responseText.indexOf("Removal of datasets by users is not allowed in this Galaxy instance")&&(r="Removal of datasets by users is not allowed in this Galaxy instance"),a.responseText=r,t.trigger("error",t,a,e,i(r),{error:r})}),a},searchAttributes:["name","file_ext","genome_build","misc_blurb","misc_info","annotation","tags"],searchAliases:{title:"name",format:"file_ext",database:"genome_build",blurb:"misc_blurb",description:"misc_blurb",info:"misc_info",tag:"tags"},toString:function(){var e=this.get("id")||"";return this.get("name")&&(e='"'+this.get("name")+'",'+e),"Dataset("+e+")"}}));return{DatasetAssociation:n,DatasetAssociationCollection:Backbone.Collection.extend(t.LoggableMixin).extend({_logNamespace:"dataset",model:n,urlRoot:Galaxy.root+"api/datasets",url:function(){return this.urlRoot},ids:function(){return this.map(function(e){return e.get("id")})},notReady:function(){return this.filter(function(e){return!e.inReadyState()})},haveDetails:function(){return this.all(function(e){return e.hasDetails()})},ajaxQueue:function(e,t){var i=jQuery.Deferred(),a=this.length,n=[];if(!a)return i.resolve([]),i;var s=this.chain().reverse().map(function(r,o){return function(){var u=e.call(r,t);u.done(function(e){i.notify({curr:o,total:a,response:e,model:r})}),u.always(function(e){n.push(e),s.length?s.shift()():i.resolve(n)})}}).value();return s.shift()(),i},matches:function(e){return this.filter(function(t){return t.matches(e)})},toString:function(){return["DatasetAssociationCollection(",this.length,")"].join("")}})}}); +//# sourceMappingURL=../../../maps/mvc/dataset/dataset-model.js.map diff --git a/static/scripts/mvc/dataset/states.js b/static/scripts/mvc/dataset/states.js index f61db7aff33..b92bfb0782c 100644 --- a/static/scripts/mvc/dataset/states.js +++ b/static/scripts/mvc/dataset/states.js @@ -1,2 +1,2 @@ -define([],function(){"use strict";var a={UPLOAD:"upload",QUEUED:"queued",RUNNING:"running",SETTING_METADATA:"setting_metadata",NEW:"new",EMPTY:"empty",OK:"ok",PAUSED:"paused",FAILED_METADATA:"failed_metadata",NOT_VIEWABLE:"noPermission",DISCARDED:"discarded",ERROR:"error"};return a.READY_STATES=[a.OK,a.EMPTY,a.PAUSED,a.FAILED_METADATA,a.NOT_VIEWABLE,a.DISCARDED,a.ERROR],a.NOT_READY_STATES=[a.UPLOAD,a.QUEUED,a.RUNNING,a.SETTING_METADATA,a.NEW],a}); -//# sourceMappingURL=../../../maps/mvc/dataset/states.js.map \ No newline at end of file +define([],function(){"use strict";var E={UPLOAD:"upload",QUEUED:"queued",RUNNING:"running",SETTING_METADATA:"setting_metadata",NEW:"new",EMPTY:"empty",OK:"ok",PAUSED:"paused",FAILED_METADATA:"failed_metadata",NOT_VIEWABLE:"noPermission",DISCARDED:"discarded",ERROR:"error"};return E.READY_STATES=[E.OK,E.EMPTY,E.PAUSED,E.FAILED_METADATA,E.NOT_VIEWABLE,E.DISCARDED,E.ERROR],E.NOT_READY_STATES=[E.UPLOAD,E.QUEUED,E.RUNNING,E.SETTING_METADATA,E.NEW],E}); +//# sourceMappingURL=../../../maps/mvc/dataset/states.js.map diff --git a/static/scripts/mvc/form/form-data.js b/static/scripts/mvc/form/form-data.js index 8f0459470e9..1bf607b5e6f 100644 --- a/static/scripts/mvc/form/form-data.js +++ b/static/scripts/mvc/form/form-data.js @@ -1,2 +1,2 @@ -define(["utils/utils"],function(){var a=Backbone.Model.extend({initialize:function(a){this.app=a},checksum:function(){var a="",b=this;return this.app.section.$el.find(".section-row").each(function(){var c=$(this).attr("id"),d=b.app.field_list[c];d&&(a+=c+":"+JSON.stringify(d.value&&d.value())+":"+d.collapsed+";")}),a},create:function(){function a(a,b,c){d.flat_dict[a]=b,f[a]=c,d.app.element_list[b]&&d.app.element_list[b].$el.attr("tour_id",a)}function c(e,f){for(var g in f){var h=f[g];if(h.input){var i=h.input,j=e;switch(""!=e&&(j+="|"),j+=i.name,i.type){case"repeat":var k="section-",l=[],m=null;for(var n in h){var o=n.indexOf(k);-1!=o&&(o+=k.length,l.push(parseInt(n.substr(o))),m||(m=n.substr(0,o)))}l.sort(function(a,b){return a-b});var g=0;for(var p in l)c(j+"_"+g++,h[m+l[p]]);break;case"conditional":var q=d.app.field_list[i.id].value();a(j+"|"+i.test_param.name,i.id,q);var r=b(i,q);-1!=r&&c(j,f[i.id+"-section-"+r]);break;case"section":c(!i.flat&&j||"",h);break;default:var s=d.app.field_list[i.id];if(s&&s.value){var q=s.value();if((void 0===i.ignore||i.ignore!=q)&&(s.collapsed&&i.collapsible_value&&(q=i.collapsible_value),a(j,i.id,q),i.payload))for(var t in i.payload)a(t,i.id,i.payload[t])}}}}}var d=this,e={};this._iterate(this.app.section.$el,e);var f={};return this.flat_dict={},c("",e),f},match:function(a){return this.flat_dict&&this.flat_dict[a]},matchCase:function(a,c){return b(a,c)},matchModel:function(a,b){var d=this;c(a.inputs,function(a,c){d.flat_dict[c]&&b(a,d.flat_dict[c])})},matchResponse:function(a){function b(a,e){if("string"==typeof e){var f=d.flat_dict[a];f&&(c[f]=e)}else for(var g in e){var h=g;if(""!==a){var i="|";e instanceof Array&&(i="_"),h=a+i+h}b(h,e[g])}}var c={},d=this;return b("",a),c},_iterate:function(a,b){var c=this,d=$(a).children();d.each(function(){var a=this,d=$(a).attr("id");if($(a).hasClass("section-row")){var e=c.app.input_list[d];b[d]=e&&{input:e}||{},c._iterate(a,b[d])}else c._iterate(a,b)})}}),b=function(a,b){"boolean"==a.test_param.type&&(b="true"==b?a.test_param.truevalue||"true":a.test_param.falsevalue||"false");for(var c in a.cases)if(a.cases[c].value==b)return c;return-1},c=function(a,d,e,f){f=$.extend(!0,{},f),_.each(a,function(a){a&&a.type&&a.name&&(f[a.name]=a)});for(var g in a){var h=a[g];h.name=h.name||g;var i=e?e+"|"+h.name:h.name;switch(h.type){case"repeat":_.each(h.cache,function(a,b){c(a,d,i+"_"+b,f)});break;case"conditional":if(h.test_param){d(h.test_param,i+"|"+h.test_param.name,f);var j=b(h,h.test_param.value);-1!=j?c(h.cases[j].inputs,d,i,f):Galaxy.emit.debug("form-data::visitInputs() - Invalid case for "+i+".")}else Galaxy.emit.debug("form-data::visitInputs() - Conditional test parameter missing for "+i+".");break;case"section":c(h.inputs,d,i,f);break;default:d(h,i,f)}}};return{Manager:a,visitInputs:c}}); -//# sourceMappingURL=../../../maps/mvc/form/form-data.js.map \ No newline at end of file +define(["utils/utils"],function(t){var a=Backbone.Model.extend({initialize:function(t){this.app=t},checksum:function(){var t="",a=this;return this.app.section.$el.find(".section-row").each(function(){var e=$(this).attr("id"),i=a.app.field_list[e];i&&(t+=e+":"+JSON.stringify(i.value&&i.value())+":"+i.collapsed+";")}),t},create:function(){function t(t,a,e){i.flat_dict[t]=a,r[t]=e,i.app.element_list[a]&&i.app.element_list[a].$el.attr("tour_id",t)}function a(n,r){for(var s in r){var c=r[s];if(c.input){var l=c.input,o=n;switch(""!=n&&(o+="|"),o+=l.name,l.type){case"repeat":var u=[],f=null;for(var p in c){var v=p.indexOf("section-");-1!=v&&(v+="section-".length,u.push(parseInt(p.substr(v))),f||(f=p.substr(0,v)))}u.sort(function(t,a){return t-a});var s=0;for(var d in u)a(o+"_"+s++,c[f+u[d]]);break;case"conditional":var _=i.app.field_list[l.id].value();t(o+"|"+l.test_param.name,l.id,_);var h=e(l,_);-1!=h&&a(o,r[l.id+"-section-"+h]);break;case"section":a(!l.flat&&o||"",c);break;default:var m=i.app.field_list[l.id];if(m&&m.value){var _=m.value();if((void 0===l.ignore||l.ignore!=_)&&(m.collapsed&&l.collapsible_value&&(_=l.collapsible_value),t(o,l.id,_),l.payload))for(var b in l.payload)t(b,l.id,l.payload[b])}}}}}var i=this,n={};this._iterate(this.app.section.$el,n);var r={};return this.flat_dict={},a("",n),r},match:function(t){return this.flat_dict&&this.flat_dict[t]},matchCase:function(t,a){return e(t,a)},matchModel:function(t,a){var e=this;i(t.inputs,function(t,i){e.flat_dict[i]&&a(t,e.flat_dict[i])})},matchResponse:function(t){function a(t,n){if("string"==typeof n){var r=i.flat_dict[t];r&&(e[r]=n)}else for(var s in n){var c=s;if(""!==t){var l="|";n instanceof Array&&(l="_"),c=t+l+c}a(c,n[s])}}var e={},i=this;return a("",t),e},_iterate:function(t,a){var e=this;$(t).children().each(function(){var t=this,i=$(t).attr("id");if($(t).hasClass("section-row")){var n=e.app.input_list[i];a[i]=n&&{input:n}||{},e._iterate(t,a[i])}else e._iterate(t,a)})}}),e=function(t,a){"boolean"==t.test_param.type&&(a="true"==a?t.test_param.truevalue||"true":t.test_param.falsevalue||"false");for(var e in t.cases)if(t.cases[e].value==a)return e;return-1},i=function(t,a,n,r){r=$.extend(!0,{},r),_.each(t,function(t){t&&t.type&&t.name&&(r[t.name]=t)});for(var s in t){var c=t[s];c.name=c.name||s;var l=n?n+"|"+c.name:c.name;switch(c.type){case"repeat":_.each(c.cache,function(t,e){i(t,a,l+"_"+e,r)});break;case"conditional":if(c.test_param){a(c.test_param,l+"|"+c.test_param.name,r);var o=e(c,c.test_param.value);-1!=o?i(c.cases[o].inputs,a,l,r):Galaxy.emit.debug("form-data::visitInputs() - Invalid case for "+l+".")}else Galaxy.emit.debug("form-data::visitInputs() - Conditional test parameter missing for "+l+".");break;case"section":i(c.inputs,a,l,r);break;default:a(c,l,r)}}};return{Manager:a,visitInputs:i}}); +//# sourceMappingURL=../../../maps/mvc/form/form-data.js.map diff --git a/static/scripts/mvc/form/form-input.js b/static/scripts/mvc/form/form-input.js index d3b29407080..18bc8ef967f 100644 --- a/static/scripts/mvc/form/form-input.js +++ b/static/scripts/mvc/form/form-input.js @@ -1,2 +1,2 @@ -define([],function(){return Backbone.View.extend({initialize:function(a,b){this.app=a,this.app_options=a.model?a.model.attributes:{},this.field=b&&b.field||new Backbone.View,this.model=b&&b.model||new Backbone.Model({text_enable:this.app_options.text_enable||"Enable",text_disable:this.app_options.text_disable||"Disable",cls_enable:this.app_options.cls_enable||"fa fa-caret-square-o-down",cls_disable:this.app_options.cls_disable||"fa fa-caret-square-o-up"}).set(b),this.setElement(this._template()),this.$field=this.$(".ui-form-field"),this.$info=this.$(".ui-form-info"),this.$preview=this.$(".ui-form-preview"),this.$collapsible=this.$(".ui-form-collapsible"),this.$collapsible_text=this.$(".ui-form-collapsible-text"),this.$collapsible_icon=this.$(".ui-form-collapsible-icon"),this.$title=this.$(".ui-form-title"),this.$title_text=this.$(".ui-form-title-text"),this.$error_text=this.$(".ui-form-error-text"),this.$error=this.$(".ui-form-error"),this.$backdrop=this.$(".ui-form-backdrop"),this.$field.prepend(this.field.$el);var c=this.model.get("collapsible_value");this.field.collapsed=void 0!==c&&JSON.stringify(this.model.get("value"))==JSON.stringify(c),this.listenTo(this.model,"change",this.render,this),this.render();var d=this;this.$collapsible.on("click",function(){d.field.collapsed=!d.field.collapsed,a.trigger&&a.trigger("change"),d.render()})},backdrop:function(){this.model.set("backdrop",!0)},error:function(a){this.model.set("error_text",a)},reset:function(){!this.model.get("fixed")&&this.model.set("error_text",null)},render:function(){$(".tooltip").hide();var a=this.model.get("help",""),b=this.model.get("argument");b&&-1==a.indexOf("("+b+")")&&(a+=" ("+b+")"),this.$info.html(a),this.$el[this.model.get("hidden")?"hide":"show"](),this.$preview[this.field.collapsed&&this.model.get("collapsible_preview")||this.model.get("disabled")?"show":"hide"]().html(_.escape(this.model.get("text_value")));var c=this.model.get("error_text");if(this.$error[c?"show":"hide"](),this.$el[c?"addClass":"removeClass"]("ui-error"),this.$error_text.html(c),this.$backdrop[this.model.get("backdrop")?"show":"hide"](),this.field.collapsed||this.model.get("disabled")?this.$field.hide():this.$field.show(),this.field.model&&this.field.model.set({color:this.model.get("color"),style:this.model.get("style")}),this.model.get("disabled")||void 0===this.model.get("collapsible_value"))this.$title_text.show().text(this.model.get("label")),this.$collapsible.hide();else{var d=this.field.collapsed?"enable":"disable";this.$title_text.hide(),this.$collapsible.show(),this.$collapsible_text.text(this.model.get("label")),this.$collapsible_icon.removeClass().addClass("icon").addClass(this.model.get("cls_"+d)).attr("data-original-title",this.model.get("text_"+d)).tooltip({placement:"bottom"})}},_template:function(){return $("
                          ").addClass("ui-form-element").append($("
                          ").addClass("ui-form-error ui-error").append($("").addClass("fa fa-arrow-down")).append($("").addClass("ui-form-error-text"))).append($("
                          ").addClass("ui-form-title").append($("
                          ").addClass("ui-form-collapsible").append($("").addClass("ui-form-collapsible-icon")).append($("").addClass("ui-form-collapsible-text"))).append($("").addClass("ui-form-title-text"))).append($("
                          ").addClass("ui-form-field").append($("").addClass("ui-form-info")).append($("
                          ").addClass("ui-form-backdrop"))).append($("
                          ").addClass("ui-form-preview"))}})}); -//# sourceMappingURL=../../../maps/mvc/form/form-input.js.map \ No newline at end of file +define([],function(){return Backbone.View.extend({initialize:function(e,i){this.app=e,this.app_options=e.model?e.model.attributes:{},this.field=i&&i.field||new Backbone.View,this.model=i&&i.model||new Backbone.Model({text_enable:this.app_options.text_enable||"Enable",text_disable:this.app_options.text_disable||"Disable",cls_enable:this.app_options.cls_enable||"fa fa-caret-square-o-down",cls_disable:this.app_options.cls_disable||"fa fa-caret-square-o-up"}).set(i),this.setElement(this._template()),this.$field=this.$(".ui-form-field"),this.$info=this.$(".ui-form-info"),this.$preview=this.$(".ui-form-preview"),this.$collapsible=this.$(".ui-form-collapsible"),this.$collapsible_text=this.$(".ui-form-collapsible-text"),this.$collapsible_icon=this.$(".ui-form-collapsible-icon"),this.$title=this.$(".ui-form-title"),this.$title_text=this.$(".ui-form-title-text"),this.$error_text=this.$(".ui-form-error-text"),this.$error=this.$(".ui-form-error"),this.$backdrop=this.$(".ui-form-backdrop"),this.$field.prepend(this.field.$el);var t=this.model.get("collapsible_value");this.field.collapsed=void 0!==t&&JSON.stringify(this.model.get("value"))==JSON.stringify(t),this.listenTo(this.model,"change",this.render,this),this.render();var s=this;this.$collapsible.on("click",function(){s.field.collapsed=!s.field.collapsed,e.trigger&&e.trigger("change"),s.render()})},backdrop:function(){this.model.set("backdrop",!0)},error:function(e){this.model.set("error_text",e)},reset:function(){!this.model.get("fixed")&&this.model.set("error_text",null)},render:function(){$(".tooltip").hide();var e=this.model.get("help",""),i=this.model.get("argument");i&&-1==e.indexOf("("+i+")")&&(e+=" ("+i+")"),this.$info.html(e),this.$el[this.model.get("hidden")?"hide":"show"](),this.$preview[this.field.collapsed&&this.model.get("collapsible_preview")||this.model.get("disabled")?"show":"hide"]().html(_.escape(this.model.get("text_value")));var t=this.model.get("error_text");if(this.$error[t?"show":"hide"](),this.$el[t?"addClass":"removeClass"]("ui-error"),this.$error_text.html(t),this.$backdrop[this.model.get("backdrop")?"show":"hide"](),this.field.collapsed||this.model.get("disabled")?this.$field.hide():this.$field.show(),this.field.model&&this.field.model.set({color:this.model.get("color"),style:this.model.get("style")}),this.model.get("disabled")||void 0===this.model.get("collapsible_value"))this.$title_text.show().text(this.model.get("label")),this.$collapsible.hide();else{var s=this.field.collapsed?"enable":"disable";this.$title_text.hide(),this.$collapsible.show(),this.$collapsible_text.text(this.model.get("label")),this.$collapsible_icon.removeClass().addClass("icon").addClass(this.model.get("cls_"+s)).attr("data-original-title",this.model.get("text_"+s)).tooltip({placement:"bottom"})}},_template:function(){return $("
                          ").addClass("ui-form-element").append($("
                          ").addClass("ui-form-error ui-error").append($("").addClass("fa fa-arrow-down")).append($("").addClass("ui-form-error-text"))).append($("
                          ").addClass("ui-form-title").append($("
                          ").addClass("ui-form-collapsible").append($("").addClass("ui-form-collapsible-icon")).append($("").addClass("ui-form-collapsible-text"))).append($("").addClass("ui-form-title-text"))).append($("
                          ").addClass("ui-form-field").append($("").addClass("ui-form-info")).append($("
                          ").addClass("ui-form-backdrop"))).append($("
                          ").addClass("ui-form-preview"))}})}); +//# sourceMappingURL=../../../maps/mvc/form/form-input.js.map diff --git a/static/scripts/mvc/form/form-parameters.js b/static/scripts/mvc/form/form-parameters.js index 93c1f545fcf..60c04a6c411 100644 --- a/static/scripts/mvc/form/form-parameters.js +++ b/static/scripts/mvc/form/form-parameters.js @@ -1,2 +1,2 @@ -define(["utils/utils","mvc/ui/ui-misc","mvc/ui/ui-select-content","mvc/ui/ui-select-library","mvc/ui/ui-select-ftp","mvc/ui/ui-color-picker"],function(a,b,c,d,e,f){return Backbone.Model.extend({types:{text:"_fieldText",password:"_fieldText",select:"_fieldSelect",data_column:"_fieldSelect",genomebuild:"_fieldSelect",data:"_fieldData",data_collection:"_fieldData",integer:"_fieldSlider","float":"_fieldSlider","boolean":"_fieldBoolean",drill_down:"_fieldDrilldown",color:"_fieldColor",hidden:"_fieldHidden",hidden_data:"_fieldHidden",baseurl:"_fieldHidden",library_data:"_fieldLibrary",ftpfile:"_fieldFtp"},create:function(a){var b=this.types[a.type],c="function"==typeof this[b]?this[b].call(this,a):null;return c||(c=a.options?this._fieldSelect(a):this._fieldText(a),Galaxy.emit.debug("form-parameters::_addRow()","Auto matched field type ("+a.type+").")),void 0===a.value&&(a.value=null),c.value(a.value),c},_fieldData:function(a){return new c.View({id:"field-"+a.id,extensions:a.extensions,optional:a.optional,multiple:a.multiple,type:a.type,flavor:a.flavor,data:a.options,onchange:a.onchange})},_fieldSelect:function(a){if(a.is_workflow)return this._fieldText(a);"data_column"==a.type&&(a.error_text="Missing columns in referenced dataset.");var c=a.data;c||(c=[],_.each(a.options,function(a){c.push({label:a[0],value:a[1]})}));var d=b.Select;switch(a.display){case"checkboxes":d=b.Checkbox;break;case"radio":d=b.Radio;break;case"radiobutton":d=b.RadioButton}return new d.View({id:"field-"+a.id,data:c,error_text:a.error_text||"No options available",multiple:a.multiple,optional:a.optional,onchange:a.onchange,searchable:"workflow"!==a.flavor})},_fieldDrilldown:function(a){return a.is_workflow?this._fieldText(a):new b.Drilldown.View({id:"field-"+a.id,data:a.options,display:a.display,optional:a.optional,onchange:a.onchange})},_fieldText:function(c){if(c.options&&c.data)if(c.area=c.multiple,a.isEmpty(c.value))c.value=null;else if($.isArray(c.value)){var d="";for(var e in c.value){if(d+=String(c.value[e]),!c.multiple)break;d+="\n"}c.value=d}return new b.Input({id:"field-"+c.id,type:c.type,area:c.area,readonly:c.readonly,placeholder:c.placeholder,datalist:c.datalist,onchange:c.onchange})},_fieldSlider:function(a){return new b.Slider.View({id:"field-"+a.id,precise:"float"==a.type,is_workflow:a.is_workflow,min:a.min,max:a.max,onchange:a.onchange})},_fieldHidden:function(a){return new b.Hidden({id:"field-"+a.id,info:a.info})},_fieldBoolean:function(a){return new b.RadioButton.View({id:"field-"+a.id,data:[{label:"Yes",value:"true"},{label:"No",value:"false"}],onchange:a.onchange})},_fieldColor:function(a){return new f({id:"field-"+a.id,onchange:a.onchange})},_fieldLibrary:function(a){return new d.View({id:"field-"+a.id,optional:a.optional,multiple:a.multiple,onchange:a.onchange})},_fieldFtp:function(a){return new e.View({id:"field-"+a.id,optional:a.optional,multiple:a.multiple,onchange:a.onchange})}})}); -//# sourceMappingURL=../../../maps/mvc/form/form-parameters.js.map \ No newline at end of file +define(["utils/utils","mvc/ui/ui-misc","mvc/ui/ui-select-content","mvc/ui/ui-select-library","mvc/ui/ui-select-ftp","mvc/ui/ui-color-picker"],function(e,i,l,n,t,a){return Backbone.Model.extend({types:{text:"_fieldText",password:"_fieldText",select:"_fieldSelect",data_column:"_fieldSelect",genomebuild:"_fieldSelect",data:"_fieldData",data_collection:"_fieldData",integer:"_fieldSlider",float:"_fieldSlider",boolean:"_fieldBoolean",drill_down:"_fieldDrilldown",color:"_fieldColor",hidden:"_fieldHidden",hidden_data:"_fieldHidden",baseurl:"_fieldHidden",library_data:"_fieldLibrary",ftpfile:"_fieldFtp"},create:function(e){var i=this.types[e.type],l="function"==typeof this[i]?this[i].call(this,e):null;return l||(l=e.options?this._fieldSelect(e):this._fieldText(e),Galaxy.emit.debug("form-parameters::_addRow()","Auto matched field type ("+e.type+").")),void 0===e.value&&(e.value=null),l.value(e.value),l},_fieldData:function(e){return new l.View({id:"field-"+e.id,extensions:e.extensions,optional:e.optional,multiple:e.multiple,type:e.type,flavor:e.flavor,data:e.options,onchange:e.onchange})},_fieldSelect:function(e){if(e.is_workflow)return this._fieldText(e);"data_column"==e.type&&(e.error_text="Missing columns in referenced dataset.");var l=e.data;l||(l=[],_.each(e.options,function(e){l.push({label:e[0],value:e[1]})}));var n=i.Select;switch(e.display){case"checkboxes":n=i.Checkbox;break;case"radio":n=i.Radio;break;case"radiobutton":n=i.RadioButton}return new n.View({id:"field-"+e.id,data:l,error_text:e.error_text||"No options available",multiple:e.multiple,optional:e.optional,onchange:e.onchange,searchable:"workflow"!==e.flavor})},_fieldDrilldown:function(e){return e.is_workflow?this._fieldText(e):new i.Drilldown.View({id:"field-"+e.id,data:e.options,display:e.display,optional:e.optional,onchange:e.onchange})},_fieldText:function(l){if(l.options&&l.data)if(l.area=l.multiple,e.isEmpty(l.value))l.value=null;else if($.isArray(l.value)){var n="";for(var t in l.value){if(n+=String(l.value[t]),!l.multiple)break;n+="\n"}l.value=n}return new i.Input({id:"field-"+l.id,type:l.type,area:l.area,readonly:l.readonly,placeholder:l.placeholder,datalist:l.datalist,onchange:l.onchange})},_fieldSlider:function(e){return new i.Slider.View({id:"field-"+e.id,precise:"float"==e.type,is_workflow:e.is_workflow,min:e.min,max:e.max,onchange:e.onchange})},_fieldHidden:function(e){return new i.Hidden({id:"field-"+e.id,info:e.info})},_fieldBoolean:function(e){return new i.RadioButton.View({id:"field-"+e.id,data:[{label:"Yes",value:"true"},{label:"No",value:"false"}],onchange:e.onchange})},_fieldColor:function(e){return new a({id:"field-"+e.id,onchange:e.onchange})},_fieldLibrary:function(e){return new n.View({id:"field-"+e.id,optional:e.optional,multiple:e.multiple,onchange:e.onchange})},_fieldFtp:function(e){return new t.View({id:"field-"+e.id,optional:e.optional,multiple:e.multiple,onchange:e.onchange})}})}); +//# sourceMappingURL=../../../maps/mvc/form/form-parameters.js.map diff --git a/static/scripts/mvc/form/form-repeat.js b/static/scripts/mvc/form/form-repeat.js index 4d5ab2708b3..dd090d10566 100644 --- a/static/scripts/mvc/form/form-repeat.js +++ b/static/scripts/mvc/form/form-repeat.js @@ -1,2 +1,2 @@ -define(["utils/utils","mvc/ui/ui-portlet","mvc/ui/ui-misc"],function(a,b,c){var d=Backbone.View.extend({initialize:function(b){this.list={},this.options=a.merge(b,{title:"Repeat",empty_text:"Not available.",max:null,min:null}),this.button_new=new c.ButtonIcon({icon:"fa-plus",title:"Insert "+this.options.title,tooltip:"Add new "+this.options.title+" block",floating:"clear",cls:"ui-button-icon form-repeat-add",onclick:function(){b.onnew&&b.onnew()}}),this.setElement($("
                          ").append(this.$list=$("
                          ")).append($("
                          ").append(this.button_new.$el)))},size:function(){return _.size(this.list)},add:function(a){if(!a.id||this.list[a.id])return void Galaxy.emit.debug("form-repeat::add()","Duplicate or invalid repeat block id.");var d=new c.ButtonIcon({icon:"fa-trash-o",tooltip:"Delete this repeat block",cls:"ui-button-icon-plain form-repeat-delete",onclick:function(){a.ondel&&a.ondel()}}),e=new b.View({id:a.id,title:"placeholder",cls:a.cls||"ui-portlet-repeat",operations:{button_delete:d}});e.append(a.$el),e.$el.addClass("section-row").hide(),this.list[a.id]=e,this.$list.append(e.$el.fadeIn("fast")),this.options.max>0&&this.size()>=this.options.max&&this.button_new.disable(),this._refresh()},del:function(a){return this.list[a]?(this.$list.find("#"+a).remove(),delete this.list[a],this.button_new.enable(),void this._refresh()):void Galaxy.emit.debug("form-repeat::del()","Invalid repeat block id.")},delAll:function(){for(var a in this.list)this.del(a)},hideOptions:function(){this.button_new.$el.hide(),_.each(this.list,function(a){a.hideOperation("button_delete")}),_.isEmpty(this.list)&&this.$el.append($("
                          ").addClass("ui-form-info").html(this.options.empty_text))},_refresh:function(){var a=0;for(var b in this.list){var c=this.list[b];c.title(++a+": "+this.options.title),c[this.size()>this.options.min?"showOperation":"hideOperation"]("button_delete")}}});return{View:d}}); -//# sourceMappingURL=../../../maps/mvc/form/form-repeat.js.map \ No newline at end of file +define(["utils/utils","mvc/ui/ui-portlet","mvc/ui/ui-misc"],function(t,i,e){return{View:Backbone.View.extend({initialize:function(i){this.list={},this.options=t.merge(i,{title:"Repeat",empty_text:"Not available.",max:null,min:null}),this.button_new=new e.ButtonIcon({icon:"fa-plus",title:"Insert "+this.options.title,tooltip:"Add new "+this.options.title+" block",floating:"clear",cls:"ui-button-icon form-repeat-add",onclick:function(){i.onnew&&i.onnew()}}),this.setElement($("
                          ").append(this.$list=$("
                          ")).append($("
                          ").append(this.button_new.$el)))},size:function(){return _.size(this.list)},add:function(t){if(!t.id||this.list[t.id])return void Galaxy.emit.debug("form-repeat::add()","Duplicate or invalid repeat block id.");var n=new e.ButtonIcon({icon:"fa-trash-o",tooltip:"Delete this repeat block",cls:"ui-button-icon-plain form-repeat-delete",onclick:function(){t.ondel&&t.ondel()}}),o=new i.View({id:t.id,title:"placeholder",cls:t.cls||"ui-portlet-repeat",operations:{button_delete:n}});o.append(t.$el),o.$el.addClass("section-row").hide(),this.list[t.id]=o,this.$list.append(o.$el.fadeIn("fast")),this.options.max>0&&this.size()>=this.options.max&&this.button_new.disable(),this._refresh()},del:function(t){if(!this.list[t])return void Galaxy.emit.debug("form-repeat::del()","Invalid repeat block id.");this.$list.find("#"+t).remove(),delete this.list[t],this.button_new.enable(),this._refresh()},delAll:function(){for(var t in this.list)this.del(t)},hideOptions:function(){this.button_new.$el.hide(),_.each(this.list,function(t){t.hideOperation("button_delete")}),_.isEmpty(this.list)&&this.$el.append($("
                          ").addClass("ui-form-info").html(this.options.empty_text))},_refresh:function(){var t=0;for(var i in this.list){var e=this.list[i];e.title(++t+": "+this.options.title),e[this.size()>this.options.min?"showOperation":"hideOperation"]("button_delete")}}})}}); +//# sourceMappingURL=../../../maps/mvc/form/form-repeat.js.map diff --git a/static/scripts/mvc/form/form-section.js b/static/scripts/mvc/form/form-section.js index 876fc211ba6..d6010a95f53 100644 --- a/static/scripts/mvc/form/form-section.js +++ b/static/scripts/mvc/form/form-section.js @@ -1,2 +1,2 @@ -define(["utils/utils","mvc/ui/ui-misc","mvc/ui/ui-portlet","mvc/form/form-repeat","mvc/form/form-input","mvc/form/form-parameters"],function(a,b,c,d,e,f){var g=Backbone.View.extend({initialize:function(a,b){this.app=a,this.inputs=b.inputs,this.parameters=new f,this.setElement($("
                          ")),this.render()},render:function(){var a=this;this.$el.empty(),_.each(this.inputs,function(b){a.add(b)})},add:function(b){var c=jQuery.extend(!0,{},b);switch(c.id=b.id=a.uid(),this.app.input_list[c.id]=c,c.type){case"conditional":this._addConditional(c);break;case"repeat":this._addRepeat(c);break;case"section":this._addSection(c);break;default:this._addRow(c)}},_addConditional:function(a){var b=this;a.test_param.id=a.id,this.app.model.get("sustain_conditionals")&&(a.test_param.disabled=!0);var c=this._addRow(a.test_param);c.model&&c.model.set("onchange",function(c){var d=b.app.data.matchCase(a,c);for(var e in a.cases){var f=a.cases[e],g=b.$("#"+a.id+"-section-"+e),h=!1;for(var i in f.inputs)if(!f.inputs[i].hidden){h=!0;break}e==d&&h?g.fadeIn("fast"):g.hide()}b.app.trigger("change")});for(var d in a.cases){var e=new g(this.app,{inputs:a.cases[d].inputs});this._append(e.$el.addClass("ui-form-section"),a.id+"-section-"+d)}c.trigger("change")},_addRepeat:function(a){function b(b){var d=a.id+"-section-"+f++,e=new g(c.app,{inputs:b});h.add({id:d,$el:e.$el,ondel:function(){h.del(d),c.app.trigger("change")}})}for(var c=this,f=0,h=new d.View({title:a.title||"Repeat",min:a.min,max:a.max,onnew:function(){b(a.inputs),c.app.trigger("change")}}),i=_.size(a.cache),j=0;jj?a.cache[j]:a.inputs);this.app.model.get("sustain_repeats")&&h.hideOptions();var k=new e(this.app,{label:a.title||a.name,help:a.help,field:h});this._append(k.$el,a.id)},_addSection:function(a){var b=new c.View({title:a.title||a.name,cls:"ui-portlet-section",collapsible:!0,collapsible_button:!0,collapsed:!a.expanded});b.append(new g(this.app,{inputs:a.inputs}).$el),b.append($("
                          ").addClass("ui-form-info").html(a.help)),this.app.on("expand",function(a){b.$("#"+a).length>0&&b.expand()}),this._append(b.$el,a.id)},_addRow:function(a){var b=this,c=a.id;a.onchange=a.onchange||function(){b.app.trigger("change",c)};var d=this.parameters.create(a);this.app.field_list[c]=d;var f=new e(this.app,{name:a.name,label:a.hide_label?"":a.label||a.name,value:a.value,text_value:a.text_value,collapsible_value:a.collapsible_value,collapsible_preview:a.collapsible_preview,help:a.help,argument:a.argument,disabled:a.disabled,color:a.color,style:a.style,backdrop:a.backdrop,hidden:a.hidden,fixed:a.fixed,field:d});return this.app.element_list[c]=f,this._append(f.$el,a.id),d},_append:function(a,b){this.$el.append(a.addClass("section-row").attr("id",b))}});return{View:g}}); -//# sourceMappingURL=../../../maps/mvc/form/form-section.js.map \ No newline at end of file +define(["utils/utils","mvc/ui/ui-misc","mvc/ui/ui-portlet","mvc/form/form-repeat","mvc/form/form-input","mvc/form/form-parameters"],function(e,i,a,t,n,s){var d=Backbone.View.extend({initialize:function(e,i){this.app=e,this.inputs=i.inputs,this.parameters=new s,this.setElement($("
                          ")),this.render()},render:function(){var e=this;this.$el.empty(),_.each(this.inputs,function(i){e.add(i)})},add:function(i){var a=jQuery.extend(!0,{},i);switch(a.id=i.id=e.uid(),this.app.input_list[a.id]=a,a.type){case"conditional":this._addConditional(a);break;case"repeat":this._addRepeat(a);break;case"section":this._addSection(a);break;default:this._addRow(a)}},_addConditional:function(e){var i=this;e.test_param.id=e.id,this.app.model.get("sustain_conditionals")&&(e.test_param.disabled=!0);var a=this._addRow(e.test_param);a.model&&a.model.set("onchange",function(a){var t=i.app.data.matchCase(e,a);for(var n in e.cases){var s=e.cases[n],d=i.$("#"+e.id+"-section-"+n),p=!1;for(var l in s.inputs)if(!s.inputs[l].hidden){p=!0;break}n==t&&p?d.fadeIn("fast"):d.hide()}i.app.trigger("change")});for(var t in e.cases){var n=new d(this.app,{inputs:e.cases[t].inputs});this._append(n.$el.addClass("ui-form-section"),e.id+"-section-"+t)}a.trigger("change")},_addRepeat:function(e){function i(i){var t=e.id+"-section-"+s++,n=new d(a.app,{inputs:i});p.add({id:t,$el:n.$el,ondel:function(){p.del(t),a.app.trigger("change")}})}for(var a=this,s=0,p=new t.View({title:e.title||"Repeat",min:e.min,max:e.max,onnew:function(){i(e.inputs),a.app.trigger("change")}}),l=_.size(e.cache),o=0;o").addClass("ui-form-info").html(e.help)),this.app.on("expand",function(e){i.$("#"+e).length>0&&i.expand()}),this._append(i.$el,e.id)},_addRow:function(e){var i=this,a=e.id;e.onchange=e.onchange||function(){i.app.trigger("change",a)};var t=this.parameters.create(e);this.app.field_list[a]=t;var s=new n(this.app,{name:e.name,label:e.hide_label?"":e.label||e.name,value:e.value,text_value:e.text_value,collapsible_value:e.collapsible_value,collapsible_preview:e.collapsible_preview,help:e.help,argument:e.argument,disabled:e.disabled,color:e.color,style:e.style,backdrop:e.backdrop,hidden:e.hidden,fixed:e.fixed,field:t});return this.app.element_list[a]=s,this._append(s.$el,e.id),t},_append:function(e,i){this.$el.append(e.addClass("section-row").attr("id",i))}});return{View:d}}); +//# sourceMappingURL=../../../maps/mvc/form/form-section.js.map diff --git a/static/scripts/mvc/form/form-view.js b/static/scripts/mvc/form/form-view.js index 4c2f5816aa3..9b95d0ee690 100644 --- a/static/scripts/mvc/form/form-view.js +++ b/static/scripts/mvc/form/form-view.js @@ -1,2 +1,2 @@ -define(["utils/utils","mvc/ui/ui-portlet","mvc/ui/ui-misc","mvc/form/form-section","mvc/form/form-data"],function(a,b,c,d,e){return Backbone.View.extend({initialize:function(a){this.model=new Backbone.Model({initial_errors:!1,cls:"ui-portlet-limited",icon:null,always_refresh:!0,message_status:"warning"}).set(a),this.setElement("
                          "),this.render()},update:function(a){var b=this;this.data.matchModel(a,function(a,c){var d=b.input_list[c];if(d&&d.options&&!_.isEqual(d.options,a.options)){d.options=a.options;var e=b.field_list[c];if(e.update){var f=[];if(-1!=["data","data_collection","drill_down"].indexOf(d.type))f=d.options;else for(var g in a.options){var h=a.options[g];h.length>2&&f.push({label:h[0],value:h[1]})}e.update(f),e.trigger("change"),Galaxy.emit.debug("form-view::update()","Updating options for "+c)}}})},wait:function(a){for(var b in this.input_list){var c=this.field_list[b],d=this.input_list[b];d.is_dynamic&&c.wait&&c.unwait&&c[a?"wait":"unwait"]()}},highlight:function(a,b,c){var d=this.element_list[a];if(d&&(d.error(b||"Please verify this parameter."),this.portlet.expand(),this.trigger("expand",a),!c)){var e=this.$el.parents().filter(function(){return-1!=["auto","scroll"].indexOf($(this).css("overflow"))}).first();e.animate({scrollTop:e.scrollTop()+d.$el.offset().top-120},500)}},errors:function(a){if(this.trigger("reset"),a&&a.errors){var b=this.data.matchResponse(a.errors);for(var c in this.element_list){{this.element_list[c]}b[c]&&this.highlight(c,b[c],!0)}}},render:function(){var a=this;this.off("change"),this.off("reset"),this.field_list={},this.input_list={},this.element_list={},this.data=new e.Manager(this),this._renderForm(),this.data.create(),this.model.get("initial_errors")&&this.errors(this.model.attributes);var b=this.data.checksum();return this.on("change",function(c){var d=a.input_list[c];if(!d||d.refresh_on_change||a.model.get("always_refresh")){var e=a.data.checksum();e!=b&&(b=e,a.model.get("onchange")&&a.model.get("onchange")())}}),this.on("reset",function(){_.each(a.element_list,function(a){a.reset()})}),this},_renderForm:function(){$(".tooltip").remove();var a=this.model.attributes;this.message=new c.UnescapedMessage,this.section=new d.View(this,{inputs:a.inputs}),this.portlet=new b.View({icon:a.icon,title:a.title,cls:a.cls,operations:a.operations,buttons:a.buttons,collapsible:a.collapsible,collapsed:a.collapsed,onchange_title:a.onchange_title}),this.portlet.append(this.message.$el),this.portlet.append(this.section.$el),this.$el.empty(),a.inputs&&this.$el.append(this.portlet.$el),a.message&&this.message.update({persistent:!0,status:a.message_status,message:a.message}),Galaxy.emit.debug("form-view::initialize()","Completed")}})}); -//# sourceMappingURL=../../../maps/mvc/form/form-view.js.map \ No newline at end of file +define(["utils/utils","mvc/ui/ui-portlet","mvc/ui/ui-misc","mvc/form/form-section","mvc/form/form-data"],function(t,e,i,s,n){return Backbone.View.extend({initialize:function(t){this.model=new Backbone.Model({initial_errors:!1,cls:"ui-portlet-limited",icon:null,always_refresh:!0,message_status:"warning"}).set(t),this.setElement("
                          "),this.render()},update:function(t){var e=this;this.data.matchModel(t,function(t,i){var s=e.input_list[i];if(s&&s.options&&!_.isEqual(s.options,t.options)){s.options=t.options;var n=e.field_list[i];if(n.update){var a=[];if(-1!=["data","data_collection","drill_down"].indexOf(s.type))a=s.options;else for(var o in t.options){var r=t.options[o];r.length>2&&a.push({label:r[0],value:r[1]})}n.update(a),n.trigger("change"),Galaxy.emit.debug("form-view::update()","Updating options for "+i)}}})},wait:function(t){for(var e in this.input_list){var i=this.field_list[e];this.input_list[e].is_dynamic&&i.wait&&i.unwait&&i[t?"wait":"unwait"]()}},highlight:function(t,e,i){var s=this.element_list[t];if(s&&(s.error(e||"Please verify this parameter."),this.portlet.expand(),this.trigger("expand",t),!i)){var n=this.$el.parents().filter(function(){return-1!=["auto","scroll"].indexOf($(this).css("overflow"))}).first();n.animate({scrollTop:n.scrollTop()+s.$el.offset().top-120},500)}},errors:function(t){if(this.trigger("reset"),t&&t.errors){var e=this.data.matchResponse(t.errors);for(var i in this.element_list){this.element_list[i];e[i]&&this.highlight(i,e[i],!0)}}},render:function(){var t=this;this.off("change"),this.off("reset"),this.field_list={},this.input_list={},this.element_list={},this.data=new n.Manager(this),this._renderForm(),this.data.create(),this.model.get("initial_errors")&&this.errors(this.model.attributes);var e=this.data.checksum();return this.on("change",function(i){var s=t.input_list[i];if(!s||s.refresh_on_change||t.model.get("always_refresh")){var n=t.data.checksum();n!=e&&(e=n,t.model.get("onchange")&&t.model.get("onchange")())}}),this.on("reset",function(){_.each(t.element_list,function(t){t.reset()})}),this},_renderForm:function(){$(".tooltip").remove();var t=this.model.attributes;this.message=new i.UnescapedMessage,this.section=new s.View(this,{inputs:t.inputs}),this.portlet=new e.View({icon:t.icon,title:t.title,cls:t.cls,operations:t.operations,buttons:t.buttons,collapsible:t.collapsible,collapsed:t.collapsed,onchange_title:t.onchange_title}),this.portlet.append(this.message.$el),this.portlet.append(this.section.$el),this.$el.empty(),t.inputs&&this.$el.append(this.portlet.$el),t.message&&this.message.update({persistent:!0,status:t.message_status,message:t.message}),Galaxy.emit.debug("form-view::initialize()","Completed")}})}); +//# sourceMappingURL=../../../maps/mvc/form/form-view.js.map diff --git a/static/scripts/mvc/grid/grid-model.js b/static/scripts/mvc/grid/grid-model.js index 6cdce123fed..a9453a9f4ed 100644 --- a/static/scripts/mvc/grid/grid-model.js +++ b/static/scripts/mvc/grid/grid-model.js @@ -1,2 +1,2 @@ -define([],function(){return Backbone.Model.extend({defaults:{url_base:"",async:!1,async_ops:[],categorical_filters:[],filters:{},sort_key:null,show_item_checkboxes:!1,advanced_search:!1,cur_page:1,num_pages:1,operation:void 0,item_ids:void 0},can_async_op:function(a){return-1!==_.indexOf(this.attributes.async_ops,a)},add_filter:function(a,b,c){if(c){var d,e=this.attributes.filters[a];if(null===e||void 0===e)d=b;else if("string"==typeof e)if("All"==e)d=b;else{var f=[];f[0]=e,f[1]=b,d=f}else d=e,d.push(b);this.attributes.filters[a]=d}else this.attributes.filters[a]=b},remove_filter:function(a,b){var c=this.attributes.filters[a];if(null===c||void 0===c)return!1;if("string"==typeof c)this.attributes.filters[a]="";else{var d=_.indexOf(c,b);-1!==d&&(c[d]="")}},get_url_data:function(){var a={async:this.attributes.async,sort:this.attributes.sort_key,page:this.attributes.cur_page,show_item_checkboxes:this.attributes.show_item_checkboxes,advanced_search:this.attributes.advanced_search};this.attributes.operation&&(a.operation=this.attributes.operation),this.attributes.item_ids&&(a.id=this.attributes.item_ids);var b=this;return _.each(_.pairs(b.attributes.filters),function(b){a["f-"+b[0]]=b[1]}),a},get_url:function(a){return this.get("url_base")+"?"+$.param(this.get_url_data())+"&"+$.param(a)}})}); -//# sourceMappingURL=../../../maps/mvc/grid/grid-model.js.map \ No newline at end of file +define([],function(){return Backbone.Model.extend({defaults:{url_base:"",async:!1,async_ops:[],categorical_filters:[],filters:{},sort_key:null,show_item_checkboxes:!1,advanced_search:!1,cur_page:1,num_pages:1,operation:void 0,item_ids:void 0},can_async_op:function(t){return-1!==_.indexOf(this.attributes.async_ops,t)},add_filter:function(t,e,i){if(i){var s,r=this.attributes.filters[t];if(null===r||void 0===r)s=e;else if("string"==typeof r)if("All"==r)s=e;else{var a=[];a[0]=r,a[1]=e,s=a}else s=r,s.push(e);this.attributes.filters[t]=s}else this.attributes.filters[t]=e},remove_filter:function(t,e){var i=this.attributes.filters[t];if(null===i||void 0===i)return!1;if("string"==typeof i)this.attributes.filters[t]="";else{var s=_.indexOf(i,e);-1!==s&&(i[s]="")}},get_url_data:function(){var t={async:this.attributes.async,sort:this.attributes.sort_key,page:this.attributes.cur_page,show_item_checkboxes:this.attributes.show_item_checkboxes,advanced_search:this.attributes.advanced_search};this.attributes.operation&&(t.operation=this.attributes.operation),this.attributes.item_ids&&(t.id=this.attributes.item_ids);var e=this;return _.each(_.pairs(e.attributes.filters),function(e){t["f-"+e[0]]=e[1]}),t},get_url:function(t){return this.get("url_base")+"?"+$.param(this.get_url_data())+"&"+$.param(t)}})}); +//# sourceMappingURL=../../../maps/mvc/grid/grid-model.js.map diff --git a/static/scripts/mvc/grid/grid-template.js b/static/scripts/mvc/grid/grid-template.js index e8b4e143495..75435708c1a 100644 --- a/static/scripts/mvc/grid/grid-template.js +++ b/static/scripts/mvc/grid/grid-template.js @@ -1,2 +1,2 @@ -define(["utils/utils"],function(a){return{grid:function(a){var b="";return b=a.embedded?this.grid_header(a)+this.grid_table(a):'
                          '+this.grid_header(a)+'
                          '+this.grid_table(a),a.info_text&&(b+='
                          '+a.info_text+"
                          "),b},grid_table:function(){return'
                          '},grid_header:function(a){var b='
                          ';if(a.embedded||(b+="

                          "+a.title+"

                          "),a.global_actions){b+='
                            ';var c=a.global_actions.length>=3;c&&(b+='
                          • Actions
                          • ');for(i in a.global_actions){var d=a.global_actions[i],e="";e="inbound"==d.target?"use-inbound":"use-outbound",b+='
                          • '+d.label+"
                          • "}c&&(b+="
                            "),b+="
                          "}return a.insert&&(b+=a.insert),b+=this.grid_filters(a),b+="
                          "},header:function(a){var b="
                          ",a.items.length>0&&(b+=''),b+="',b+=d.href?''+d.label+"":d.label,b+=''+d.extra+"
                          No Items
                          ",l?(0!=a.operations.length&&(b+='
                          '),b+=''+m+"",0!=a.operations.length&&(b+="
                          ")):b+='
                          ",b+="
                          For selected '+a.get_class_plural+": ";for(i in a.operations){var m=a.operations[i];m.allow_multiple&&(b+=' ')}b+="
                          ';for(i in a.operations){var m=a.operations[i];m.global_operation&&(b+=''+m.label+"")}b+="
                          '+a.legend+"
                          ';for(var f in a.columns){var g=a.columns[f];"standard"==g.filterable&&(l+=this.grid_column_filter(a,g))}l+="
                          ",e&&(l+='Advanced Search'),l+="
                          ",l+='"},grid_column_filter:function(a,b){var c=(a.default_filter_dict,a.filters),d=b.label,e=b.key;"advanced"==b.filterable&&(d=d.toLowerCase());var f="
                          '+d+":',b.is_text){f+='
                          ';for(k in a.columns){var g=a.columns[k],h=c[g.key];h&&"All"!=h&&(g.is_text&&(h=JSON.stringify(h)),f+='')}f+='';var i=c[e];if(i){var j=jQuery.type(i);if("string"==j&&"All"!=i&&(f+=this.filter_element(e,i)),"array"==j)for(var k in i){var l=i[k],m=i;m=m.slice(k),f+=this.filter_element(e,l)}}f+="";var n="";if("standard"==b.filterable){n=b.label.toLowerCase();var o=n.length;20>o&&(o=20),o+=4}f+='
                          '}else{f+='';var p=!1;for(cf_label in a.categorical_filters[e]){var q=a.categorical_filters[e][cf_label],r="",s="";for(key in q)r=key,s=q[key];p&&(f+=" | "),p=!0;var l=c[e];f+=l&&q[e]&&l==s?''+cf_label+"":''+cf_label+""}f+=""}return f+="
                          '+this.grid_header(e)+'
                          '+this.grid_table(e),e.info_text&&(a+='
                          '+e.info_text+"
                          "),a},grid_table:function(e){return'
                          '},grid_header:function(e){var a='
                          ';if(e.embedded||(a+="

                          "+e.title+"

                          "),e.global_actions){a+='
                            ';var t=e.global_actions.length>=3;t&&(a+='
                          • Actions
                          • ');for(i in e.global_actions){var l=e.global_actions[i],r="";r="inbound"==l.target?"use-inbound":"use-outbound",a+='
                          • '+l.label+"
                          • "}t&&(a+="
                            "),a+="
                          "}return e.insert&&(a+=e.insert),a+=this.grid_filters(e),a+="
                          "},header:function(e){var a="";e.show_item_checkboxes&&(a+="",e.items.length>0&&(a+=''),a+="");for(var t in e.columns){var i=e.columns[t];i.visible&&(a+='',i.href?a+=''+i.label+"":a+=i.label,a+=''+i.extra+"")}return a+=""},body:function(e){var a="",t=0;0==e.items.length&&(a+='No Items',t=1);for(var i in e.items){var l=e.items[i],r=l.encode_id;a+="",e.show_item_checkboxes&&(a+='');for(j in e.columns){var n=e.columns[j];if(n.visible){var s="";n.nowrap&&(s='style="white-space:nowrap;"');var o=l.column_config[n.label],d=o.link,c=o.value,p=o.target;"string"===jQuery.type(c)&&(c=c.replace(/\/\//g,"/"));var f="",u="";n.attach_popup&&(f="grid-"+i+"-popup",u="menubutton",""!=d&&(u+=" split"),u+=" popup"),a+="",d?(0!=e.operations.length&&(a+='
                          '),a+=''+c+"",0!=e.operations.length&&(a+="
                          ")):a+='
                          ",a+=""}}a+="",t++}return a},footer:function(e){var a="";if(e.use_paging&&e.num_pages>1){var t=e.num_page_links,l=e.cur_page_num,r=e.num_pages,n=t/2,s=l-n,o=0;s<=0&&(s=1,o=n-(l-s));var d=n+o,c=l+d;c<=r?max_offset=0:(c=r,max_offset=d-(c+1-l)),0!=max_offset&&(s-=max_offset)<1&&(s=1),a+='',e.show_item_checkboxes&&(a+=""),a+='Page:',s>1&&(a+='1 ...');for(var p=s;p'+p+"":a+=''+p+"";c'+r+""),a+="",a+=' | Show All'}if(e.show_item_checkboxes){a+='For selected '+e.get_class_plural+": ";for(i in e.operations){var f=e.operations[i];f.allow_multiple&&(a+=' ')}a+=""}var u=!1;for(i in e.operations)if(e.operations[i].global_operation){u=!0;break}if(u){a+='';for(i in e.operations){var f=e.operations[i];f.global_operation&&(a+=''+f.label+"")}a+=""}return e.legend&&(a+=''+e.legend+""),a},message:function(e){return'

                          '+e.message+'

                          '},grid_filters:function(e){var a=e.default_filter_dict,t=e.filters,i="none";e.advanced_search&&(i="block");var l=!1;for(var r in e.columns){var n=e.columns[r];if("advanced"==n.filterable){var s=n.key,o=t[s],d=a[s];o&&d&&o!=d&&(i="block"),l=!0}}var c="block";"block"==i&&(c="none");var p='",p+='"},grid_column_filter:function(e,a){var t=(e.default_filter_dict,e.filters),i=a.label,l=a.key;"advanced"==a.filterable&&(i=i.toLowerCase());var r="";if("advanced"==a.filterable&&(r+=''+i+":"),r+='',a.is_text){r+='
                          ';for(c in e.columns){var n=e.columns[c],s=t[n.key];s&&"All"!=s&&(n.is_text&&(s=JSON.stringify(s)),r+='')}r+='';var o=t[l];if(o){var d=jQuery.type(o);if("string"==d&&"All"!=o&&(r+=this.filter_element(l,o)),"array"==d)for(var c in o){var p=o[c],f=o;f=f.slice(c),r+=this.filter_element(l,p)}}r+="";var u="";if("standard"==a.filterable){u=a.label.toLowerCase();var g=u.length;g<20&&(g=20),g+=4}r+='
                          '}else{r+='';var v=!1;for(cf_label in e.categorical_filters[l]){var b=e.categorical_filters[l][cf_label],_="",h="";for(key in b)_=key,h=b[key];v&&(r+=" | "),v=!0;var p=t[l];p&&b[l]&&p==h?r+=''+cf_label+"":r+=''+cf_label+""}r+=""}return r+=""},filter_element:function(a,t){return''+(t=e.sanitize(t))+''}}}); +//# sourceMappingURL=../../../maps/mvc/grid/grid-template.js.map diff --git a/static/scripts/mvc/grid/grid-view.js b/static/scripts/mvc/grid/grid-view.js index 82dc5b56d2f..bd188662878 100644 --- a/static/scripts/mvc/grid/grid-view.js +++ b/static/scripts/mvc/grid/grid-view.js @@ -1,2 +1,2 @@ -jQuery.ajaxSettings.traditional=!0,define(["mvc/grid/grid-model","mvc/grid/grid-template","mvc/ui/popup-menu"],function(a,b,c){return Backbone.View.extend({grid:null,initialize:function(a){this.setElement("#grid-container"),a.use_panels&&$("#center").css({padding:"10px",overflow:"auto"}),this.init_grid(a)},handle_refresh:function(a){a&&$.inArray("history",a)>-1&&top.Galaxy&&top.Galaxy.currHistoryPanel&&top.Galaxy.currHistoryPanel.loadCurrentHistory()},init_grid:function(c){this.grid=new a(c);var d=this.grid.attributes;this.handle_refresh(d.refresh_frames);var e=this.grid.get("url_base");if(e=e.replace(/^.*\/\/[^\/]+/,""),this.grid.set("url_base",e),this.$el.html(b.grid(d)),this.$el.find("#grid-table-header").html(b.header(d)),this.$el.find("#grid-table-body").html(b.body(d)),this.$el.find("#grid-table-footer").html(b.footer(d)),d.message){this.$el.find("#grid-message").html(b.message(d));var f=this;d.use_hide_message&&setTimeout(function(){f.$el.find("#grid-message").html("")},5e3)}this.init_grid_elements(),this.init_grid_controls(),init_refresh_on_change()},init_grid_controls:function(){var a=this;this.$el.find(".operation-button").each(function(){$(this).off(),$(this).click(function(){return a.submit_operation(this),!1})}),this.$el.find("input[type=text]").each(function(){$(this).off(),$(this).click(function(){$(this).select()}).keyup(function(){$(this).css("font-style","normal")})}),this.$el.find(".sort-link").each(function(){$(this).off(),$(this).click(function(){return a.set_sort_condition($(this).attr("sort_key")),!1})}),this.$el.find(".text-filter-form").each(function(){$(this).off(),$(this).submit(function(){var b=$(this).attr("column_key"),c=$("#input-"+b+"-filter"),d=c.val();return c.val(""),a.add_filter_condition(b,d),!1})}),this.$el.find(".text-filter-val > a").each(function(){$(this).off(),$(this).click(function(){return $(this).parent().remove(),a.remove_filter_condition($(this).attr("filter_key"),$(this).attr("filter_val")),!1})}),this.$el.find(".categorical-filter > a").each(function(){$(this).off(),$(this).click(function(){return a.set_categorical_filter($(this).attr("filter_key"),$(this).attr("filter_val")),!1})}),this.$el.find(".advanced-search-toggle").each(function(){$(this).off(),$(this).click(function(){return a.$el.find("#standard-search").slideToggle("fast"),a.$el.find("#advanced-search").slideToggle("fast"),!1})}),this.$el.find("#check_all").off(),this.$el.find("#check_all").on("click",function(){a.check_all_items()})},init_grid_elements:function(){this.$el.find(".grid").each(function(){var a=$(this).find("input.grid-row-select-checkbox"),b=$(this).find("span.grid-selected-count"),c=function(){b.text($(a).filter(":checked").length)};$(a).each(function(){$(this).change(c)}),c()}),0!==this.$el.find(".community_rating_star").length&&this.$el.find(".community_rating_star").rating({});var a=this.grid.attributes,b=this;this.$el.find(".page-link > a").each(function(){$(this).click(function(){return b.set_page($(this).attr("page_num")),!1})}),this.$el.find(".use-target").each(function(){$(this).click(function(){return b.execute({href:$(this).attr("href"),target:$(this).attr("target")}),!1})});var d=a.items.length;if(0!=d)for(var e in a.items){var f=a.items[e],g=this.$el.find("#grid-"+e+"-popup");g.off();var h=new c(g);for(var i in a.operations){{var j=a.operations[i],k=j.label,l=f.operation_config[k];f.encode_id}if(l.allowed&&j.allow_popup){var m={html:j.label,href:l.url_args,target:l.target,confirmation_text:j.confirm};m.func=function(a){a.preventDefault();var c=$(a.target).html(),d=this.findItemByHtml(c);b.execute(d)},h.addItem(m)}}}},add_filter_condition:function(a,c){if(""===c)return!1;this.grid.add_filter(a,c,!0);var d=$(b.filter_element(a,c)),e=this;d.click(function(){$(this).remove(),e.remove_filter_condition(a,c)});var f=this.$el.find("#"+a+"-filtering-criteria");f.append(d),this.go_page_one(),this.execute()},remove_filter_condition:function(a,b){this.grid.remove_filter(a,b),this.go_page_one(),this.execute()},set_sort_condition:function(a){var b=this.grid.get("sort_key"),c=a;-1!==b.indexOf(a)&&"-"!==b.substring(0,1)&&(c="-"+a),this.$el.find(".sort-arrow").remove();var d="-"==c.substring(0,1)?"↑":"↓",e=$(""+d+"").addClass("sort-arrow");this.$el.find("#"+a+"-header").append(e),this.grid.set("sort_key",c),this.go_page_one(),this.execute()},set_categorical_filter:function(a,b){var c=this.grid.get("categorical_filters")[a],d=this.grid.get("filters")[a],e=this;this.$el.find("."+a+"-filter").each(function(){var f=$.trim($(this).text()),g=c[f],h=g[a];if(h==b)$(this).empty(),$(this).addClass("current-filter"),$(this).append(f);else if(h==d){$(this).empty();var i=$(''+f+"");i.click(function(){e.set_categorical_filter(a,h)}),$(this).removeClass("current-filter"),$(this).append(i)}}),this.grid.add_filter(a,b),this.go_page_one(),this.execute()},set_page:function(a){var b=this;this.$el.find(".page-link").each(function(){var c,d=$(this).attr("id"),e=parseInt(d.split("-")[2],10),f=b.grid.get("cur_page");if(e===a)c=$(this).children().text(),$(this).empty(),$(this).addClass("inactive-link"),$(this).text(c);else if(e===f){c=$(this).text(),$(this).empty(),$(this).removeClass("inactive-link");var g=$(''+c+"");g.click(function(){b.set_page(e)}),$(this).append(g)}}),"all"===a?this.grid.set("cur_page",a):this.grid.set("cur_page",parseInt(a,10)),this.execute()},submit_operation:function(a,b){var c=$(a).val(),d=this.$el.find('input[name="id"]:checked').length;if(!d>0)return!1;var e=_.findWhere(this.grid.attributes.operations,{label:c});e&&!b&&(b=e.confirm||"");var f=[];return this.$el.find("input[name=id]:checked").each(function(){f.push($(this).val())}),this.execute({operation:c,id:f,confirmation_text:b}),!0},check_all_items:function(){var a,b=document.getElementById("check_all"),c=document.getElementsByTagName("input"),d=0;if(b.checked===!0)for(a=0;a1)for(var h=g[1],i=h.split("&"),j=0;j-1&&top.Galaxy&&top.Galaxy.currHistoryPanel&&top.Galaxy.currHistoryPanel.loadCurrentHistory()},init_grid:function(e){this.grid=new t(e);var n=this.grid.attributes;this.handle_refresh(n.refresh_frames);var r=this.grid.get("url_base");if(r=r.replace(/^.*\/\/[^\/]+/,""),this.grid.set("url_base",r),this.$el.html(i.grid(n)),this.$el.find("#grid-table-header").html(i.header(n)),this.$el.find("#grid-table-body").html(i.body(n)),this.$el.find("#grid-table-footer").html(i.footer(n)),n.message){this.$el.find("#grid-message").html(i.message(n));var s=this;n.use_hide_message&&setTimeout(function(){s.$el.find("#grid-message").html("")},5e3)}this.init_grid_elements(),this.init_grid_controls(),init_refresh_on_change()},init_grid_controls:function(){var t=this;this.$el.find(".operation-button").each(function(){$(this).off(),$(this).click(function(){return t.submit_operation(this),!1})}),this.$el.find("input[type=text]").each(function(){$(this).off(),$(this).click(function(){$(this).select()}).keyup(function(){$(this).css("font-style","normal")})}),this.$el.find(".sort-link").each(function(){$(this).off(),$(this).click(function(){return t.set_sort_condition($(this).attr("sort_key")),!1})}),this.$el.find(".text-filter-form").each(function(){$(this).off(),$(this).submit(function(){var i=$(this).attr("column_key"),e=$("#input-"+i+"-filter"),n=e.val();return e.val(""),t.add_filter_condition(i,n),!1})}),this.$el.find(".text-filter-val > a").each(function(){$(this).off(),$(this).click(function(){return $(this).parent().remove(),t.remove_filter_condition($(this).attr("filter_key"),$(this).attr("filter_val")),!1})}),this.$el.find(".categorical-filter > a").each(function(){$(this).off(),$(this).click(function(){return t.set_categorical_filter($(this).attr("filter_key"),$(this).attr("filter_val")),!1})}),this.$el.find(".advanced-search-toggle").each(function(){$(this).off(),$(this).click(function(){return t.$el.find("#standard-search").slideToggle("fast"),t.$el.find("#advanced-search").slideToggle("fast"),!1})}),this.$el.find("#check_all").off(),this.$el.find("#check_all").on("click",function(){t.check_all_items()})},init_grid_elements:function(){this.$el.find(".grid").each(function(){var t=$(this).find("input.grid-row-select-checkbox"),i=$(this).find("span.grid-selected-count"),e=function(){i.text($(t).filter(":checked").length)};$(t).each(function(){$(this).change(e)}),e()}),0!==this.$el.find(".community_rating_star").length&&this.$el.find(".community_rating_star").rating({});var t=this.grid.attributes,i=this;if(this.$el.find(".page-link > a").each(function(){$(this).click(function(){return i.set_page($(this).attr("page_num")),!1})}),this.$el.find(".use-target").each(function(){$(this).click(function(t){return i.execute({href:$(this).attr("href"),target:$(this).attr("target")}),!1})}),0!=t.items.length)for(var n in t.items){var r=t.items[n],s=this.$el.find("#grid-"+n+"-popup");s.off();var a=new e(s);for(var o in t.operations){var l=t.operations[o],d=l.label,c=r.operation_config[d];if(r.encode_id,c.allowed&&l.allow_popup){var h={html:l.label,href:c.url_args,target:c.target,confirmation_text:l.confirm};h.func=function(t){t.preventDefault();var e=$(t.target).html(),n=this.findItemByHtml(e);i.execute(n)},a.addItem(h)}}}},add_filter_condition:function(t,e){if(""===e)return!1;this.grid.add_filter(t,e,!0);var n=$(i.filter_element(t,e)),r=this;n.click(function(){$(this).remove(),r.remove_filter_condition(t,e)}),this.$el.find("#"+t+"-filtering-criteria").append(n),this.go_page_one(),this.execute()},remove_filter_condition:function(t,i){this.grid.remove_filter(t,i),this.go_page_one(),this.execute()},set_sort_condition:function(t){var i=this.grid.get("sort_key"),e=t;-1!==i.indexOf(t)&&"-"!==i.substring(0,1)&&(e="-"+t),this.$el.find(".sort-arrow").remove();var n="-"==e.substring(0,1)?"↑":"↓",r=$(""+n+"").addClass("sort-arrow");this.$el.find("#"+t+"-header").append(r),this.grid.set("sort_key",e),this.go_page_one(),this.execute()},set_categorical_filter:function(t,i){var e=this.grid.get("categorical_filters")[t],n=this.grid.get("filters")[t],r=this;this.$el.find("."+t+"-filter").each(function(){var s=$.trim($(this).text()),a=e[s],o=a[t];if(o==i)$(this).empty(),$(this).addClass("current-filter"),$(this).append(s);else if(o==n){$(this).empty();var l=$(''+s+"");l.click(function(){r.set_categorical_filter(t,o)}),$(this).removeClass("current-filter"),$(this).append(l)}}),this.grid.add_filter(t,i),this.go_page_one(),this.execute()},set_page:function(t){var i=this;this.$el.find(".page-link").each(function(){var e,n=$(this).attr("id"),r=parseInt(n.split("-")[2],10),s=i.grid.get("cur_page");if(r===t)e=$(this).children().text(),$(this).empty(),$(this).addClass("inactive-link"),$(this).text(e);else if(r===s){e=$(this).text(),$(this).empty(),$(this).removeClass("inactive-link");var a=$(''+e+"");a.click(function(){i.set_page(r)}),$(this).append(a)}}),"all"===t?this.grid.set("cur_page",t):this.grid.set("cur_page",parseInt(t,10)),this.execute()},submit_operation:function(t,i){var e=$(t).val();if(!this.$el.find('input[name="id"]:checked').length>0)return!1;var n=_.findWhere(this.grid.attributes.operations,{label:e});n&&!i&&(i=n.confirm||"");var r=[];return this.$el.find("input[name=id]:checked").each(function(){r.push($(this).val())}),this.execute({operation:e,id:r,confirmation_text:i}),!0},check_all_items:function(){var t,i=document.getElementById("check_all"),e=document.getElementsByTagName("input"),n=0;if(!0===i.checked)for(t=0;t1)for(var o=a[1],l=o.split("&"),d=0;d'"),title:_.template(c("Copying history")+' "<%- name %>"'),submitLabel:c("Copy"),errorMessage:c("History could not be copied."),progressive:c("Copying history"),activeLabel:c("Copy only the active, non-deleted datasets"),allLabel:c("Copy all datasets including deleted ones"),anonWarning:c("As an anonymous user, unless you login or register, you will lose your current history ")+c("after copying this history. "),_template:_.template(["<% if( isAnon ){ %>",'
                          ',"<%- anonWarning %>",c("You can"),' ',c("login here")," ",c("or")," ",' ',c("register here"),".","
                          ","<% } %>","
                          ",'
                          ",'','","<% if( allowAll ){ %>","
                          ","

                          ",c("Choose which datasets from the original history to include:"),"

                          ",'/>','',"
                          ",'/>','',"<% } %>","
                          "].join("")),_showAjaxIndicator:function(){var a='

                          '+this.progressive+"...

                          ";this.modal.$(".modal-body").empty().append(a).css({"margin-top":"8px"})},dialog:function(a,d,e){function f(){var c=a.$("#copy-modal-title").val();if(!c)return void a.$(".invalid-title").show();var e="copy-all"===a.$('input[name="copy-what"]:checked').val();a.$("button").prop("disabled",!0),g._showAjaxIndicator(),d.copy(!0,c,e).done(function(a){h.resolve(a)}).fail(function(a){var f={name:c,copyAllDatasets:e};b.ajaxErrorModal(d,a,f,g.errorMessage),h.rejectWith(h,arguments)}).done(function(){m&&a.hide()})}e=e||{};var g=this,h=jQuery.Deferred(),i=e.nameFn||this.defaultName,j=i({name:d.get("name")}),k=e.allDatasets?"copy-all":"copy-non-deleted",l=_.isUndefined(e.allowAll)?!0:e.allowAll,m=_.isUndefined(e.autoClose)?!0:e.autoClose;this.modal=a;var n=e.closing_callback;return a.show(_.extend(e,{title:this.title({name:d.get("name")}),body:$(g._template({name:j,isAnon:Galaxy.user.isAnonymous(),allowAll:l,copyWhat:k,activeLabel:this.activeLabel,allLabel:this.allLabel,anonWarning:this.anonWarning})),buttons:_.object([[c("Cancel"),function(){a.hide()}],[this.submitLabel,f]]),height:"auto",closing_events:!0,closing_callback:function(a){a&&h.reject({cancelled:!0}),n&&n(a)}})),a.$("#copy-modal-title").focus().select(),a.$("#copy-modal-title").on("keydown",function(a){13===a.keyCode&&(a.preventDefault(),f())}),h}},e=_.extend({},d,{defaultName:_.template("imported: <%- name %>"),title:_.template(c("Importing history")+' "<%- name %>"'),submitLabel:c("Import"),errorMessage:c("History could not be imported."),progressive:c("Importing history"),activeLabel:c("Import only the active, non-deleted datasets"),allLabel:c("Import all datasets including deleted ones"),anonWarning:c("As an anonymous user, unless you login or register, you will lose your current history ")+c("after importing this history. ")}),f=function(b,c){c=c||{};var f=window.parent.Galaxy.modal||new a.View({});return c.useImport?e.dialog(f,b,c):d.dialog(f,b,c)};return f}); -//# sourceMappingURL=../../../maps/mvc/history/copy-dialog.js.map \ No newline at end of file +define(["mvc/ui/ui-modal","mvc/ui/error-modal","utils/localization"],function(e,a,o){"use strict";var t={defaultName:_.template("Copy of '<%- name %>'"),title:_.template(o("Copying history")+' "<%- name %>"'),submitLabel:o("Copy"),errorMessage:o("History could not be copied."),progressive:o("Copying history"),activeLabel:o("Copy only the active, non-deleted datasets"),allLabel:o("Copy all datasets including deleted ones"),anonWarning:o("As an anonymous user, unless you login or register, you will lose your current history ")+o("after copying this history. "),_template:_.template(["<% if( isAnon ){ %>",'
                          ',"<%- anonWarning %>",o("You can"),' ',o("login here")," ",o("or")," ",' ',o("register here"),".","
                          ","<% } %>","
                          ",'
                          ",'','","<% if( allowAll ){ %>","
                          ","

                          ",o("Choose which datasets from the original history to include:"),"

                          ",'/>','',"
                          ",'/>','',"<% } %>","
                          "].join("")),_showAjaxIndicator:function(){var e='

                          '+this.progressive+"...

                          ";this.modal.$(".modal-body").empty().append(e).css({"margin-top":"8px"})},dialog:function(e,t,l){function n(){var o=e.$("#copy-modal-title").val();if(!o)return void e.$(".invalid-title").show();var l="copy-all"===e.$('input[name="copy-what"]:checked').val();e.$("button").prop("disabled",!0),i._showAjaxIndicator(),t.copy(!0,o,l).done(function(e){r.resolve(e)}).fail(function(e,n,s){var d={name:o,copyAllDatasets:l};a.ajaxErrorModal(t,e,d,i.errorMessage),r.rejectWith(r,arguments)}).done(function(){y&&e.hide()})}l=l||{};var i=this,r=jQuery.Deferred(),s=l.nameFn||this.defaultName,d=s({name:t.get("name")}),c=l.allDatasets?"copy-all":"copy-non-deleted",p=!!_.isUndefined(l.allowAll)||l.allowAll,y=!!_.isUndefined(l.autoClose)||l.autoClose;this.modal=e;var u=l.closing_callback;return e.show(_.extend(l,{title:this.title({name:t.get("name")}),body:$(i._template({name:d,isAnon:Galaxy.user.isAnonymous(),allowAll:p,copyWhat:c,activeLabel:this.activeLabel,allLabel:this.allLabel,anonWarning:this.anonWarning})),buttons:_.object([[o("Cancel"),function(){e.hide()}],[this.submitLabel,n]]),height:"auto",closing_events:!0,closing_callback:function(e){e&&r.reject({cancelled:!0}),u&&u(e)}})),e.$("#copy-modal-title").focus().select(),e.$("#copy-modal-title").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),n())}),r}},l=_.extend({},t,{defaultName:_.template("imported: <%- name %>"),title:_.template(o("Importing history")+' "<%- name %>"'),submitLabel:o("Import"),errorMessage:o("History could not be imported."),progressive:o("Importing history"),activeLabel:o("Import only the active, non-deleted datasets"),allLabel:o("Import all datasets including deleted ones"),anonWarning:o("As an anonymous user, unless you login or register, you will lose your current history ")+o("after importing this history. ")});return function(a,o){o=o||{};var n=window.parent.Galaxy.modal||new e.View({});return o.useImport?l.dialog(n,a,o):t.dialog(n,a,o)}}); +//# sourceMappingURL=../../../maps/mvc/history/copy-dialog.js.map diff --git a/static/scripts/mvc/history/hda-li-edit.js b/static/scripts/mvc/history/hda-li-edit.js index 0cc4c0cfa63..421a0783b47 100644 --- a/static/scripts/mvc/history/hda-li-edit.js +++ b/static/scripts/mvc/history/hda-li-edit.js @@ -1,2 +1,2 @@ -define(["mvc/dataset/dataset-li-edit","mvc/history/hda-li","mvc/base-mvc","utils/localization"],function(a,b,c,d){"use strict";var e=a.DatasetListItemEdit,f=e.extend({className:e.prototype.className+" history-content",_fetchModelDetails:function(){var a=this;return a.model.inReadyState()&&!a.model.hasDetails()?a.model.fetch({silent:!0}):a.model.has("rerunnable")?jQuery.when():a.model.fetch({silent:!0,data:{keys:["rerunnable","creating_job"].join(",")}})},events:_.extend(_.clone(e.prototype.events),{"click .unhide-link":function(){return this.model.unhide(),!1}}),toString:function(){var a=this.model?this.model+"":"(no model)";return"HDAListItemEdit("+a+")"}});return f.prototype.templates=function(){var a=_.extend({},e.prototype.templates.warnings,{hidden:c.wrapTemplate(["<% if( !dataset.visible ){ %>",'
                          ',d("This dataset has been hidden"),'
                          ',d("Unhide it"),"","
                          ","<% } %>"],"dataset")});return _.extend({},e.prototype.templates,{titleBar:b.HDAListItemView.prototype.templates.titleBar,warnings:a})}(),{HDAListItemEdit:f}}); -//# sourceMappingURL=../../../maps/mvc/history/hda-li-edit.js.map \ No newline at end of file +define(["mvc/dataset/dataset-li-edit","mvc/history/hda-li","mvc/base-mvc","utils/localization"],function(e,t,i,a){"use strict";var n=e.DatasetListItemEdit,s=n.extend({className:n.prototype.className+" history-content",_fetchModelDetails:function(){var e=this;return e.model.inReadyState()&&!e.model.hasDetails()?e.model.fetch({silent:!0}):e.model.has("rerunnable")?jQuery.when():e.model.fetch({silent:!0,data:{keys:["rerunnable","creating_job"].join(",")}})},events:_.extend(_.clone(n.prototype.events),{"click .unhide-link":function(e){return this.model.unhide(),!1}}),toString:function(){return"HDAListItemEdit("+(this.model?this.model+"":"(no model)")+")"}});return s.prototype.templates=function(){var e=_.extend({},n.prototype.templates.warnings,{hidden:i.wrapTemplate(["<% if( !dataset.visible ){ %>",'
                          ',a("This dataset has been hidden"),'
                          ',a("Unhide it"),"","
                          ","<% } %>"],"dataset")});return _.extend({},n.prototype.templates,{titleBar:t.HDAListItemView.prototype.templates.titleBar,warnings:e})}(),{HDAListItemEdit:s}}); +//# sourceMappingURL=../../../maps/mvc/history/hda-li-edit.js.map diff --git a/static/scripts/mvc/history/hda-li.js b/static/scripts/mvc/history/hda-li.js index ee60cc7b9d9..5c60f70028b 100644 --- a/static/scripts/mvc/history/hda-li.js +++ b/static/scripts/mvc/history/hda-li.js @@ -1,2 +1,2 @@ -define(["mvc/dataset/dataset-li","mvc/base-mvc","utils/localization"],function(a,b,c){"use strict";var d=a.DatasetListItemView,e=d.extend({className:d.prototype.className+" history-content",initialize:function(a,b){d.prototype.initialize.call(this,a,b)},toString:function(){var a=this.model?this.model+"":"(no model)";return"HDAListItemView("+a+")"}});return e.prototype.templates=function(){var a=b.wrapTemplate(['
                          ','','
                          ','<%- dataset.hid %> ','<%- dataset.name %>',"
                          ","
                          ",'',"<% _.each(dataset.nametags, function(tag){ %>",'<%- tag %>',"<% }); %>","","
                          "],"dataset"),e=_.extend({},d.prototype.templates.warnings,{hidden:b.wrapTemplate(["<% if( !dataset.visible ){ %>",'
                          ',c("This dataset has been hidden"),"
                          ","<% } %>"],"dataset")});return _.extend({},d.prototype.templates,{titleBar:a,warnings:e})}(),{HDAListItemView:e}}); -//# sourceMappingURL=../../../maps/mvc/history/hda-li.js.map \ No newline at end of file +define(["mvc/dataset/dataset-li","mvc/base-mvc","utils/localization"],function(t,a,e){"use strict";var s=t.DatasetListItemView,i=s.extend({className:s.prototype.className+" history-content",initialize:function(t,a){s.prototype.initialize.call(this,t,a)},toString:function(){return"HDAListItemView("+(this.model?this.model+"":"(no model)")+")"}});return i.prototype.templates=function(){var t=a.wrapTemplate(['
                          ','','
                          ','<%- dataset.hid %> ','<%- dataset.name %>',"
                          ","
                          ",'',"<% _.each(dataset.nametags, function(tag){ %>",'<%- tag %>',"<% }); %>","","
                          "],"dataset"),i=_.extend({},s.prototype.templates.warnings,{hidden:a.wrapTemplate(["<% if( !dataset.visible ){ %>",'
                          ',e("This dataset has been hidden"),"
                          ","<% } %>"],"dataset")});return _.extend({},s.prototype.templates,{titleBar:t,warnings:i})}(),{HDAListItemView:i}}); +//# sourceMappingURL=../../../maps/mvc/history/hda-li.js.map diff --git a/static/scripts/mvc/history/hda-model.js b/static/scripts/mvc/history/hda-model.js index 279b67de383..e3b06299331 100644 --- a/static/scripts/mvc/history/hda-model.js +++ b/static/scripts/mvc/history/hda-model.js @@ -1,2 +1,2 @@ -define(["mvc/dataset/dataset-model","mvc/history/history-content-model","mvc/base-mvc","utils/localization"],function(a,b,c){"use strict";var d=a.DatasetAssociation,e=b.HistoryContentMixin,f=d.extend(c.mixin(e,{defaults:_.extend({},d.prototype.defaults,e.defaults,{history_content_type:"dataset",model_class:"HistoryDatasetAssociation"})}));return{HistoryDatasetAssociation:f}}); -//# sourceMappingURL=../../../maps/mvc/history/hda-model.js.map \ No newline at end of file +define(["mvc/dataset/dataset-model","mvc/history/history-content-model","mvc/base-mvc","utils/localization"],function(t,s,e,a){"use strict";var o=t.DatasetAssociation,i=s.HistoryContentMixin;return{HistoryDatasetAssociation:o.extend(e.mixin(i,{defaults:_.extend({},o.prototype.defaults,i.defaults,{history_content_type:"dataset",model_class:"HistoryDatasetAssociation"})}))}}); +//# sourceMappingURL=../../../maps/mvc/history/hda-model.js.map diff --git a/static/scripts/mvc/history/hdca-li-edit.js b/static/scripts/mvc/history/hdca-li-edit.js index dc7c60e5fda..c9fe42fc585 100644 --- a/static/scripts/mvc/history/hdca-li-edit.js +++ b/static/scripts/mvc/history/hdca-li-edit.js @@ -1,2 +1,2 @@ -define(["mvc/history/hdca-li","mvc/collection/collection-view-edit","ui/fa-icon-button","utils/localization"],function(a,b,c,d){"use strict";var e=a.HDCAListItemView,f=e.extend({_getFoldoutPanelClass:function(){switch(this.model.get("collection_type")){case"list":return b.ListCollectionViewEdit;case"paired":return b.PairCollectionViewEdit;case"list:paired":return b.ListOfPairsCollectionViewEdit;case"list:list":return b.ListOfListsCollectionViewEdit}throw new TypeError("Uknown collection_type: "+this.model.get("collection_type"))},_renderPrimaryActions:function(){return this.log(this+"._renderPrimaryActions"),e.prototype._renderPrimaryActions.call(this).concat([this._renderDeleteButton()])},_renderDeleteButton:function(){var a=this,b=this.model.get("deleted");return c({title:d(b?"Dataset collection is already deleted":"Delete"),classes:"delete-btn",faIcon:"fa-times",disabled:b,onclick:function(){a.$el.find(".icon-btn.delete-btn").trigger("mouseout"),a.model.delete()}})},toString:function(){var a=this.model?this.model+"":"(no model)";return"HDCAListItemEdit("+a+")"}});return{HDCAListItemEdit:f}}); -//# sourceMappingURL=../../../maps/mvc/history/hdca-li-edit.js.map \ No newline at end of file +define(["mvc/history/hdca-li","mvc/collection/collection-view-edit","ui/fa-icon-button","utils/localization"],function(t,e,i,n){"use strict";var o=t.HDCAListItemView;return{HDCAListItemEdit:o.extend({_getFoldoutPanelClass:function(){switch(this.model.get("collection_type")){case"list":return e.ListCollectionViewEdit;case"paired":return e.PairCollectionViewEdit;case"list:paired":return e.ListOfPairsCollectionViewEdit;case"list:list":return e.ListOfListsCollectionViewEdit}throw new TypeError("Uknown collection_type: "+this.model.get("collection_type"))},_renderPrimaryActions:function(){return this.log(this+"._renderPrimaryActions"),o.prototype._renderPrimaryActions.call(this).concat([this._renderDeleteButton()])},_renderDeleteButton:function(){var t=this,e=this.model.get("deleted");return i({title:n(e?"Dataset collection is already deleted":"Delete"),classes:"delete-btn",faIcon:"fa-times",disabled:e,onclick:function(){t.$el.find(".icon-btn.delete-btn").trigger("mouseout"),t.model.delete()}})},toString:function(){return"HDCAListItemEdit("+(this.model?this.model+"":"(no model)")+")"}})}}); +//# sourceMappingURL=../../../maps/mvc/history/hdca-li-edit.js.map diff --git a/static/scripts/mvc/history/hdca-li.js b/static/scripts/mvc/history/hdca-li.js index 2023c4e8899..af89a3efed5 100644 --- a/static/scripts/mvc/history/hdca-li.js +++ b/static/scripts/mvc/history/hdca-li.js @@ -1,2 +1,2 @@ -define(["mvc/dataset/states","mvc/collection/collection-li","mvc/collection/collection-view","mvc/base-mvc","utils/localization"],function(a,b,c,d,e){"use strict";var f=b.DCListItemView,g=f.extend({className:f.prototype.className+" history-content",_setUpListeners:function(){f.prototype._setUpListeners.call(this),this.listenTo(this.model,{"change:populated change:visible":function(){this.render()}})},_getFoldoutPanelClass:function(){switch(this.model.get("collection_type")){case"list":return c.ListCollectionView;case"paired":return c.PairCollectionView;case"list:paired":return c.ListOfPairsCollectionView;case"list:list":return c.ListOfListsCollectionView}throw new TypeError("Uknown collection_type: "+this.model.get("collection_type"))},_swapNewRender:function(b){f.prototype._swapNewRender.call(this,b);var c=this.model.get("populated")?a.OK:a.RUNNING;return this.$el.addClass("state-"+c),this.$el},toString:function(){var a=this.model?this.model+"":"(no model)";return"HDCAListItemView("+a+")"}});return g.prototype.templates=function(){var a=_.extend({},f.prototype.templates.warnings,{hidden:d.wrapTemplate(["<% if( !collection.visible ){ %>",'
                          ',e("This collection has been hidden"),"
                          ","<% } %>"],"collection")}),b=d.wrapTemplate(['
                          ','','
                          ','<%- collection.hid %> ','<%- collection.name %>',"
                          ",'
                          ',"
                          "],"collection");return _.extend({},f.prototype.templates,{warnings:a,titleBar:b})}(),{HDCAListItemView:g}}); -//# sourceMappingURL=../../../maps/mvc/history/hdca-li.js.map \ No newline at end of file +define(["mvc/dataset/states","mvc/collection/collection-li","mvc/collection/collection-view","mvc/base-mvc","utils/localization"],function(e,t,i,s,l){"use strict";var n=t.DCListItemView,o=n.extend({className:n.prototype.className+" history-content",_setUpListeners:function(){n.prototype._setUpListeners.call(this),this.listenTo(this.model,{"change:populated change:visible":function(e,t){this.render()}})},_getFoldoutPanelClass:function(){switch(this.model.get("collection_type")){case"list":return i.ListCollectionView;case"paired":return i.PairCollectionView;case"list:paired":return i.ListOfPairsCollectionView;case"list:list":return i.ListOfListsCollectionView}throw new TypeError("Uknown collection_type: "+this.model.get("collection_type"))},_swapNewRender:function(t){n.prototype._swapNewRender.call(this,t);var i=this.model.get("populated")?e.OK:e.RUNNING;return this.$el.addClass("state-"+i),this.$el},toString:function(){return"HDCAListItemView("+(this.model?this.model+"":"(no model)")+")"}});return o.prototype.templates=function(){var e=_.extend({},n.prototype.templates.warnings,{hidden:s.wrapTemplate(["<% if( !collection.visible ){ %>",'
                          ',l("This collection has been hidden"),"
                          ","<% } %>"],"collection")}),t=s.wrapTemplate(['
                          ','','
                          ','<%- collection.hid %> ','<%- collection.name %>',"
                          ",'
                          ',"
                          "],"collection");return _.extend({},n.prototype.templates,{warnings:e,titleBar:t})}(),{HDCAListItemView:o}}); +//# sourceMappingURL=../../../maps/mvc/history/hdca-li.js.map diff --git a/static/scripts/mvc/history/hdca-model.js b/static/scripts/mvc/history/hdca-model.js index 1ba05778e66..3ee43004927 100644 --- a/static/scripts/mvc/history/hdca-model.js +++ b/static/scripts/mvc/history/hdca-model.js @@ -1,2 +1,2 @@ -define(["mvc/collection/collection-model","mvc/history/history-content-model","utils/localization"],function(a,b){"use strict";function c(a){return function(b,c){return this.isNew()&&(c=c||{},c.url=this.urlRoot+this.get("history_id")+"/contents",b=b||{},b.type="dataset_collection"),a.call(this,b,c)}}var d=b.HistoryContentMixin,e=a.ListDatasetCollection,f=a.PairDatasetCollection,g=a.ListPairedDatasetCollection,h=a.ListOfListsDatasetCollection,i=e.extend(d).extend({defaults:_.extend(_.clone(e.prototype.defaults),{history_content_type:"dataset_collection",collection_type:"list",model_class:"HistoryDatasetCollectionAssociation"}),save:c(e.prototype.save),toString:function(){return"History"+e.prototype.toString.call(this)}}),j=f.extend(d).extend({defaults:_.extend(_.clone(f.prototype.defaults),{history_content_type:"dataset_collection",collection_type:"paired",model_class:"HistoryDatasetCollectionAssociation"}),save:c(f.prototype.save),toString:function(){return"History"+f.prototype.toString.call(this)}}),k=g.extend(d).extend({defaults:_.extend(_.clone(g.prototype.defaults),{history_content_type:"dataset_collection",collection_type:"list:paired",model_class:"HistoryDatasetCollectionAssociation"}),save:c(g.prototype.save),toString:function(){return"History"+g.prototype.toString.call(this)}}),l=h.extend(d).extend({defaults:_.extend(_.clone(h.prototype.defaults),{history_content_type:"dataset_collection",collection_type:"list:list",model_class:"HistoryDatasetCollectionAssociation"}),save:c(h.prototype.save),toString:function(){return["HistoryListOfListsDatasetCollection(",this.get("name"),")"].join("")}});return{HistoryListDatasetCollection:i,HistoryPairDatasetCollection:j,HistoryListPairedDatasetCollection:k,HistoryListOfListsDatasetCollection:l}}); -//# sourceMappingURL=../../../maps/mvc/history/hdca-model.js.map \ No newline at end of file +define(["mvc/collection/collection-model","mvc/history/history-content-model","utils/localization"],function(t,e,o){"use strict";function i(t){return function(e,o){return this.isNew()&&(o=o||{},o.url=this.urlRoot+this.get("history_id")+"/contents",e=e||{},e.type="dataset_collection"),t.call(this,e,o)}}var s=e.HistoryContentMixin,n=t.ListDatasetCollection,l=t.PairDatasetCollection,a=t.ListPairedDatasetCollection,c=t.ListOfListsDatasetCollection;return{HistoryListDatasetCollection:n.extend(s).extend({defaults:_.extend(_.clone(n.prototype.defaults),{history_content_type:"dataset_collection",collection_type:"list",model_class:"HistoryDatasetCollectionAssociation"}),save:i(n.prototype.save),toString:function(){return"History"+n.prototype.toString.call(this)}}),HistoryPairDatasetCollection:l.extend(s).extend({defaults:_.extend(_.clone(l.prototype.defaults),{history_content_type:"dataset_collection",collection_type:"paired",model_class:"HistoryDatasetCollectionAssociation"}),save:i(l.prototype.save),toString:function(){return"History"+l.prototype.toString.call(this)}}),HistoryListPairedDatasetCollection:a.extend(s).extend({defaults:_.extend(_.clone(a.prototype.defaults),{history_content_type:"dataset_collection",collection_type:"list:paired",model_class:"HistoryDatasetCollectionAssociation"}),save:i(a.prototype.save),toString:function(){return"History"+a.prototype.toString.call(this)}}),HistoryListOfListsDatasetCollection:c.extend(s).extend({defaults:_.extend(_.clone(c.prototype.defaults),{history_content_type:"dataset_collection",collection_type:"list:list",model_class:"HistoryDatasetCollectionAssociation"}),save:i(c.prototype.save),toString:function(){return["HistoryListOfListsDatasetCollection(",this.get("name"),")"].join("")}})}}); +//# sourceMappingURL=../../../maps/mvc/history/hdca-model.js.map diff --git a/static/scripts/mvc/history/history-content-model.js b/static/scripts/mvc/history/history-content-model.js index 9271c0f33da..4244214967a 100644 --- a/static/scripts/mvc/history/history-content-model.js +++ b/static/scripts/mvc/history/history-content-model.js @@ -1,2 +1,2 @@ -define(["mvc/dataset/states","mvc/base-mvc","utils/localization"],function(){"use strict";var a={defaults:{history_id:null,history_content_type:null,hid:null,visible:!0},idAttribute:"type_id",hidden:function(){return!this.get("visible")},isVisible:function(a,b){var c=!0;return a||!this.get("deleted")&&!this.get("purged")||(c=!1),b||this.get("visible")||(c=!1),c},urlRoot:Galaxy.root+"api/histories/",url:function(){var a=this.urlRoot+this.get("history_id")+"/contents/"+this.get("history_content_type")+"s/"+this.get("id");return a},hide:function(a){return this.get("visible")?this.save({visible:!1},a):jQuery.when()},unhide:function(a){return this.get("visible")?jQuery.when():this.save({visible:!0},a)},toString:function(){return[this.get("type_id"),this.get("hid"),this.get("name")].join(":")}};return{HistoryContentMixin:a}}); -//# sourceMappingURL=../../../maps/mvc/history/history-content-model.js.map \ No newline at end of file +define(["mvc/dataset/states","mvc/base-mvc","utils/localization"],function(t,i,e){"use strict";return{HistoryContentMixin:{defaults:{history_id:null,history_content_type:null,hid:null,visible:!0},idAttribute:"type_id",hidden:function(){return!this.get("visible")},isVisible:function(t,i){var e=!0;return t||!this.get("deleted")&&!this.get("purged")||(e=!1),i||this.get("visible")||(e=!1),e},urlRoot:Galaxy.root+"api/histories/",url:function(){return this.urlRoot+this.get("history_id")+"/contents/"+this.get("history_content_type")+"s/"+this.get("id")},hide:function(t){return this.get("visible")?this.save({visible:!1},t):jQuery.when()},unhide:function(t){return this.get("visible")?jQuery.when():this.save({visible:!0},t)},toString:function(){return[this.get("type_id"),this.get("hid"),this.get("name")].join(":")}}}}); +//# sourceMappingURL=../../../maps/mvc/history/history-content-model.js.map diff --git a/static/scripts/mvc/history/history-contents.js b/static/scripts/mvc/history/history-contents.js index d590c4d9849..bd5654df92a 100644 --- a/static/scripts/mvc/history/history-contents.js +++ b/static/scripts/mvc/history/history-contents.js @@ -1,2 +1,2 @@ -define(["mvc/base/controlled-fetch-collection","mvc/history/hda-model","mvc/history/hdca-model","mvc/history/history-preferences","mvc/base-mvc","utils/ajax-queue"],function(a,b,c,d,e,f){"use strict";var g=a.PaginatedCollection,h=g.extend(e.LoggableMixin).extend({_logNamespace:"history",model:function(a,d){if("dataset"===a.history_content_type)return new b.HistoryDatasetAssociation(a,d);if("dataset_collection"===a.history_content_type){switch(a.collection_type){case"list":return new c.HistoryListDatasetCollection(a,d);case"paired":return new c.HistoryPairDatasetCollection(a,d);case"list:paired":return new c.HistoryListPairedDatasetCollection(a,d);case"list:list":return new c.HistoryListOfListsDatasetCollection(a,d)}var e="Unknown collection_type: "+a.collection_type;return console.warn(e,a),{validationError:e}}return{validationError:"Unknown history_content_type: "+a.history_content_type}},limitPerPage:500,limitPerProgressiveFetch:500,order:"hid",urlRoot:Galaxy.root+"api/histories",url:function(){return this.urlRoot+"/"+this.historyId+"/contents"},initialize:function(a,b){b=b||{},g.prototype.initialize.call(this,a,b),this.history=b.history||null,this.setHistoryId(b.historyId||null),this.includeDeleted=b.includeDeleted||this.includeDeleted,this.includeHidden=b.includeHidden||this.includeHidden,this.model.prototype.idAttribute="type_id"},setHistoryId:function(a){this.historyId=a,this._setUpWebStorage()},_setUpWebStorage:function(){return this.historyId?(this.storage=new d.HistoryPrefs({id:d.HistoryPrefs.historyStorageKey(this.historyId)}),this.trigger("new-storage",this.storage,this),this.on({"include-deleted":function(a){this.storage.includeDeleted(a)},"include-hidden":function(a){this.storage.includeHidden(a)}}),this.includeDeleted=this.storage.includeDeleted()||!1,this.includeHidden=this.storage.includeHidden()||!1,this):void 0},comparators:_.extend(_.clone(g.prototype.comparators),{name:e.buildComparator("name",{ascending:!0}),"name-dsc":e.buildComparator("name",{ascending:!1}),hid:e.buildComparator("hid",{ascending:!1}),"hid-asc":e.buildComparator("hid",{ascending:!0})}),running:function(){return this.filter(function(a){return!a.inReadyState()})},runningAndActive:function(){return this.filter(function(a){return!a.inReadyState()&&a.get("visible")&&!a.get("deleted")})},getByHid:function(a){return this.findWhere({hid:a})},haveDetails:function(){return this.all(function(a){return a.hasDetails()})},hidden:function(){return this.filter(function(a){return a.hidden()})},deleted:function(){return this.filter(function(a){return a.get("deleted")})},visibleAndUndeleted:function(){return this.filter(function(a){return a.get("visible")&&!a.get("deleted")})},setIncludeDeleted:function(a,b){if(_.isBoolean(a)&&a!==this.includeDeleted){if(this.includeDeleted=a,_.result(b,"silent"))return;this.trigger("include-deleted",a,this)}},setIncludeHidden:function(a,b){if(_.isBoolean(a)&&a!==this.includeHidden){if(this.includeHidden=a,b=b||{},_.result(b,"silent"))return;this.trigger("include-hidden",a,this)}},fetch:function(a){if(a=a||{},this.historyId&&!a.details){var b=d.HistoryPrefs.get(this.historyId).toJSON();_.isEmpty(b.expandedIds)||(a.details=_.values(b.expandedIds).join(","))}return g.prototype.fetch.call(this,a)},_buildFetchData:function(a){return _.extend(g.prototype._buildFetchData.call(this,a),{v:"dev"})},_fetchParams:g.prototype._fetchParams.concat(["v","details"]),_buildFetchFilters:function(a){var b=g.prototype._buildFetchFilters.call(this,a)||{},c={};return this.includeDeleted||(c.deleted=!1,c.purged=!1),this.includeHidden||(c.visible=!0),_.defaults(b,c)},getTotalItemCount:function(){return this.history.contentsShown()},fetchUpdated:function(a,b){return a&&(b=b||{filters:{}},b.remove=!1,b.filters={"update_time-ge":a.toISOString(),visible:""}),this.fetch(b)},fetchDeleted:function(a){a=a||{};var b=this;return a.filters=_.extend(a.filters,{deleted:!0,purged:void 0}),a.remove=!1,b.trigger("fetching-deleted",b),b.fetch(a).always(function(){b.trigger("fetching-deleted-done",b)})},fetchHidden:function(a){a=a||{};var b=this;return a.filters=_.extend(a.filters,{visible:!1}),a.remove=!1,b.trigger("fetching-hidden",b),b.fetch(a).always(function(){b.trigger("fetching-hidden-done",b)})},fetchAllDetails:function(a){a=a||{};var b={details:"all"};return a.data=_.extend(a.data||{},b),this.fetch(a)},fetchCollectionCounts:function(a){return a=a||{},a.keys=["type_id","element_count"].join(","),a.filters=_.extend(a.filters||{},{history_content_type:"dataset_collection"}),a.remove=!1,this.fetch(a)},_filterAndUpdate:function(a,b){var c=this,d=c.model.prototype.idAttribute,e=[b];return c.fetch({filters:a,remove:!1}).then(function(a){return a=a.reduce(function(a,b){var e=c.get(b[d]);return e?a.concat(e):a},[]),c.ajaxQueue("save",e,a)})},ajaxQueue:function(a,b,c){return c=c||this.models,new f.AjaxQueue(c.slice().reverse().map(function(c){var d=_.isString(a)?c[a]:a;return function(){return d.apply(c,b)}})).deferred},progressivelyFetchDetails:function(a){function c(b){b=b||0;var g=_.extend(_.clone(a),{view:"summary",keys:h,limit:f,offset:b,reset:0===b,remove:!1});_.defer(function(){e.fetch.call(e,g).fail(d.reject).done(function(a){d.notify(a,f,b),a.length!==f?(e.allFetched=!0,d.resolve(a,f,b)):c(b+f)})})}a=a||{};var d=jQuery.Deferred(),e=this,f=a.limitPerCall||e.limitPerProgressiveFetch,g=b.HistoryDatasetAssociation.prototype.searchAttributes,h=g.join(",");return c(),d},isCopyable:function(a){var b=["HistoryDatasetAssociation","HistoryDatasetCollectionAssociation"];return _.isObject(a)&&a.id&&_.contains(b,a.model_class)},copy:function(a){var b,c,d;_.isString(a)?(b=a,d="hda",c="dataset"):(b=a.id,d={HistoryDatasetAssociation:"hda",LibraryDatasetDatasetAssociation:"ldda",HistoryDatasetCollectionAssociation:"hdca"}[a.model_class]||"hda",c="hdca"===d?"dataset_collection":"dataset");var e=this,f=jQuery.ajax(this.url(),{method:"POST",contentType:"application/json",data:JSON.stringify({content:b,source:d,type:c})}).done(function(a){e.add([a],{parse:!0})}).fail(function(){e.trigger("error",e,f,{},"Error copying contents",{type:c,id:b,source:d})});return f},createHDCA:function(a,b,c,d,e){var f=this.model({history_content_type:"dataset_collection",collection_type:b,history_id:this.historyId,name:c,hide_source_items:d||!1,element_identifiers:a});return f.save(e)},haveSearchDetails:function(){return this.allFetched&&this.all(function(a){return _.has(a.attributes,"annotation")})},matches:function(a){return this.filter(function(b){return b.matches(a)})},clone:function(){var a=Backbone.Collection.prototype.clone.call(this);return a.historyId=this.historyId,a},toString:function(){return["HistoryContents(",[this.historyId,this.length].join(),")"].join("")}});return{HistoryContents:h}}); -//# sourceMappingURL=../../../maps/mvc/history/history-contents.js.map \ No newline at end of file +define(["mvc/base/controlled-fetch-collection","mvc/history/hda-model","mvc/history/hdca-model","mvc/history/history-preferences","mvc/base-mvc","utils/ajax-queue"],function(t,e,i,n,r,o){"use strict";var s=t.PaginatedCollection;return{HistoryContents:s.extend(r.LoggableMixin).extend({_logNamespace:"history",model:function(t,n){if("dataset"===t.history_content_type)return new e.HistoryDatasetAssociation(t,n);if("dataset_collection"===t.history_content_type){switch(t.collection_type){case"list":return new i.HistoryListDatasetCollection(t,n);case"paired":return new i.HistoryPairDatasetCollection(t,n);case"list:paired":return new i.HistoryListPairedDatasetCollection(t,n);case"list:list":return new i.HistoryListOfListsDatasetCollection(t,n)}var r="Unknown collection_type: "+t.collection_type;return console.warn(r,t),{validationError:r}}return{validationError:"Unknown history_content_type: "+t.history_content_type}},limitPerPage:500,limitPerProgressiveFetch:500,order:"hid",urlRoot:Galaxy.root+"api/histories",url:function(){return this.urlRoot+"/"+this.historyId+"/contents"},initialize:function(t,e){e=e||{},s.prototype.initialize.call(this,t,e),this.history=e.history||null,this.setHistoryId(e.historyId||null),this.includeDeleted=e.includeDeleted||this.includeDeleted,this.includeHidden=e.includeHidden||this.includeHidden,this.model.prototype.idAttribute="type_id"},setHistoryId:function(t){this.historyId=t,this._setUpWebStorage()},_setUpWebStorage:function(t){if(this.historyId)return this.storage=new n.HistoryPrefs({id:n.HistoryPrefs.historyStorageKey(this.historyId)}),this.trigger("new-storage",this.storage,this),this.on({"include-deleted":function(t){this.storage.includeDeleted(t)},"include-hidden":function(t){this.storage.includeHidden(t)}}),this.includeDeleted=this.storage.includeDeleted()||!1,this.includeHidden=this.storage.includeHidden()||!1,this},comparators:_.extend(_.clone(s.prototype.comparators),{name:r.buildComparator("name",{ascending:!0}),"name-dsc":r.buildComparator("name",{ascending:!1}),hid:r.buildComparator("hid",{ascending:!1}),"hid-asc":r.buildComparator("hid",{ascending:!0})}),running:function(){return this.filter(function(t){return!t.inReadyState()})},runningAndActive:function(){return this.filter(function(t){return!t.inReadyState()&&t.get("visible")&&!t.get("deleted")})},getByHid:function(t){return this.findWhere({hid:t})},haveDetails:function(){return this.all(function(t){return t.hasDetails()})},hidden:function(){return this.filter(function(t){return t.hidden()})},deleted:function(){return this.filter(function(t){return t.get("deleted")})},visibleAndUndeleted:function(){return this.filter(function(t){return t.get("visible")&&!t.get("deleted")})},setIncludeDeleted:function(t,e){if(_.isBoolean(t)&&t!==this.includeDeleted){if(this.includeDeleted=t,_.result(e,"silent"))return;this.trigger("include-deleted",t,this)}},setIncludeHidden:function(t,e){if(_.isBoolean(t)&&t!==this.includeHidden){if(this.includeHidden=t,e=e||{},_.result(e,"silent"))return;this.trigger("include-hidden",t,this)}},fetch:function(t){if(t=t||{},this.historyId&&!t.details){var e=n.HistoryPrefs.get(this.historyId).toJSON();_.isEmpty(e.expandedIds)||(t.details=_.values(e.expandedIds).join(","))}return s.prototype.fetch.call(this,t)},_buildFetchData:function(t){return _.extend(s.prototype._buildFetchData.call(this,t),{v:"dev"})},_fetchParams:s.prototype._fetchParams.concat(["v","details"]),_buildFetchFilters:function(t){var e=s.prototype._buildFetchFilters.call(this,t)||{},i={};return this.includeDeleted||(i.deleted=!1,i.purged=!1),this.includeHidden||(i.visible=!0),_.defaults(e,i)},getTotalItemCount:function(){return this.history.contentsShown()},fetchUpdated:function(t,e){return t&&(e=e||{filters:{}},e.remove=!1,e.filters={"update_time-ge":t.toISOString(),visible:""}),this.fetch(e)},fetchDeleted:function(t){t=t||{};var e=this;return t.filters=_.extend(t.filters,{deleted:!0,purged:void 0}),t.remove=!1,e.trigger("fetching-deleted",e),e.fetch(t).always(function(){e.trigger("fetching-deleted-done",e)})},fetchHidden:function(t){t=t||{};var e=this;return t.filters=_.extend(t.filters,{visible:!1}),t.remove=!1,e.trigger("fetching-hidden",e),e.fetch(t).always(function(){e.trigger("fetching-hidden-done",e)})},fetchAllDetails:function(t){t=t||{};var e={details:"all"};return t.data=_.extend(t.data||{},e),this.fetch(t)},fetchCollectionCounts:function(t){return t=t||{},t.keys=["type_id","element_count"].join(","),t.filters=_.extend(t.filters||{},{history_content_type:"dataset_collection"}),t.remove=!1,this.fetch(t)},_filterAndUpdate:function(t,e){var i=this,n=i.model.prototype.idAttribute,r=[e];return i.fetch({filters:t,remove:!1}).then(function(t){return t=t.reduce(function(t,e,r){var o=i.get(e[n]);return o?t.concat(o):t},[]),i.ajaxQueue("save",r,t)})},ajaxQueue:function(t,e,i){return i=i||this.models,new o.AjaxQueue(i.slice().reverse().map(function(i,n){var r=_.isString(t)?i[t]:t;return function(){return r.apply(i,e)}})).deferred},progressivelyFetchDetails:function(t){function i(e){e=e||0;var s=_.extend(_.clone(t),{view:"summary",keys:a,limit:o,offset:e,reset:0===e,remove:!1});_.defer(function(){r.fetch.call(r,s).fail(n.reject).done(function(t){n.notify(t,o,e),t.length!==o?(r.allFetched=!0,n.resolve(t,o,e)):i(e+o)})})}t=t||{};var n=jQuery.Deferred(),r=this,o=t.limitPerCall||r.limitPerProgressiveFetch,s=e.HistoryDatasetAssociation.prototype.searchAttributes,a=s.join(",");return i(),n},isCopyable:function(t){var e=["HistoryDatasetAssociation","HistoryDatasetCollectionAssociation"];return _.isObject(t)&&t.id&&_.contains(e,t.model_class)},copy:function(t){var e,i,n;_.isString(t)?(e=t,n="hda",i="dataset"):(e=t.id,n={HistoryDatasetAssociation:"hda",LibraryDatasetDatasetAssociation:"ldda",HistoryDatasetCollectionAssociation:"hdca"}[t.model_class]||"hda",i="hdca"===n?"dataset_collection":"dataset");var r=this,o=jQuery.ajax(this.url(),{method:"POST",contentType:"application/json",data:JSON.stringify({content:e,source:n,type:i})}).done(function(t){r.add([t],{parse:!0})}).fail(function(t,s,a){r.trigger("error",r,o,{},"Error copying contents",{type:i,id:e,source:n})});return o},createHDCA:function(t,e,i,n,r){return this.model({history_content_type:"dataset_collection",collection_type:e,history_id:this.historyId,name:i,hide_source_items:n||!1,element_identifiers:t}).save(r)},haveSearchDetails:function(){return this.allFetched&&this.all(function(t){return _.has(t.attributes,"annotation")})},matches:function(t){return this.filter(function(e){return e.matches(t)})},clone:function(){var t=Backbone.Collection.prototype.clone.call(this);return t.historyId=this.historyId,t},toString:function(){return["HistoryContents(",[this.historyId,this.length].join(),")"].join("")}})}}); +//# sourceMappingURL=../../../maps/mvc/history/history-contents.js.map diff --git a/static/scripts/mvc/history/history-model.js b/static/scripts/mvc/history/history-model.js index 75b71d02b76..3623304c8f6 100644 --- a/static/scripts/mvc/history/history-model.js +++ b/static/scripts/mvc/history/history-model.js @@ -1,2 +1,2 @@ -define(["mvc/history/history-contents","mvc/history/history-preferences","mvc/base/controlled-fetch-collection","utils/utils","mvc/base-mvc","utils/localization"],function(a,b,c,d,e,f){"use strict";var g=Backbone.Model.extend(e.LoggableMixin).extend(e.mixin(e.SearchableModelMixin,{_logNamespace:"history",UPDATE_DELAY:4e3,defaults:{model_class:"History",id:null,name:"Unnamed History",state:"new",deleted:!1,contents_active:{},contents_states:{}},urlRoot:Galaxy.root+"api/histories",contentsClass:a.HistoryContents,searchAttributes:["name","annotation","tags"],searchAliases:{title:"name",tag:"tags"},initialize:function(a,b){b=b||{},this.logger=b.logger||null,this.log(this+".initialize:",a,b),this.contents=new this.contentsClass([],{history:this,historyId:this.get("id"),order:b.order}),this._setUpListeners(),this._setUpCollectionListeners(),this.updateTimeoutId=null},_setUpListeners:function(){return this.on({error:function(){this.clearUpdateTimeout()},"change:id":function(a,b){this.contents&&(this.contents.historyId=b)}})},_setUpCollectionListeners:function(){return this.contents?this.listenTo(this.contents,{error:function(){this.trigger.apply(this,jQuery.makeArray(arguments))}}):this},contentsShown:function(){var a=this.get("contents_active"),b=a.active||0;return b+=this.contents.includeDeleted?a.deleted:0,b+=this.contents.includeHidden?a.hidden:0},nice_size:function(){var a=this.get("size");return a?d.bytesToString(a,!0,2):f("(empty)")},toJSON:function(){return _.extend(Backbone.Model.prototype.toJSON.call(this),{nice_size:this.nice_size()})},get:function(a){return"nice_size"===a?this.nice_size():Backbone.Model.prototype.get.apply(this,arguments)},ownedByCurrUser:function(){return Galaxy&&Galaxy.user?Galaxy.user.isAnonymous()||Galaxy.user.id!==this.get("user_id")?!1:!0:!1},numOfUnfinishedJobs:function(){var a=this.get("non_ready_jobs");return a?a.length:0},numOfUnfinishedShownContents:function(){return this.contents.runningAndActive().length||0},_fetchContentRelatedAttributes:function(){var a=["size","non_ready_jobs","contents_active","hid_counter"];return this.fetch({data:$.param({keys:a.join(",")})})},refresh:function(a){a=a||{};var b=this,c=b.lastUpdateTime;this.contents.allFetched=!1;var d=0!==b.contents.currentPage?function(){return b.contents.fetchPage(b.contents.currentPage)}:function(){return b.contents.fetchUpdated(c)};return d().done(function(c,d,e){var f;try{f=new Date(e.getResponseHeader("Date"))}catch(g){}b.lastUpdateTime=f||new Date,b.checkForUpdates(a)})},checkForUpdates:function(a){function b(){d.clearUpdateTimeout(),d.updateTimeoutId=setTimeout(function(){d.refresh(a)},c)}a=a||{};var c=this.UPDATE_DELAY,d=this;if(d.id){var e=this.numOfUnfinishedShownContents();e>0?b():d._fetchContentRelatedAttributes().done(function(){d.numOfUnfinishedJobs()>0?b():d.trigger("ready")})}},clearUpdateTimeout:function(){this.updateTimeoutId&&(clearTimeout(this.updateTimeoutId),this.updateTimeoutId=null)},parse:function(a,b){var c=Backbone.Model.prototype.parse.call(this,a,b);return c.create_time&&(c.create_time=new Date(c.create_time)),c.update_time&&(c.update_time=new Date(c.update_time)),c},fetchWithContents:function(a,b){a=a||{};var c=this;return a.view="dev-detailed",this.fetch(a).then(function(a){return c.contents.history=c,c.contents.setHistoryId(a.id),c.fetchContents(b)})},fetchContents:function(a){a=a||{};var b=this;return b.lastUpdateTime=new Date,b.contents.fetchCurrentPage(a)},_delete:function(a){return this.get("deleted")?jQuery.when():this.save({deleted:!0},a)},purge:function(a){return this.get("purged")?jQuery.when():this.save({deleted:!0,purged:!0},a)},undelete:function(a){return this.get("deleted")?this.save({deleted:!1},a):jQuery.when()},copy:function(a,b,c){if(a=void 0!==a?a:!0,!this.id)throw new Error("You must set the history ID before copying it.");var d={history_id:this.id};a&&(d.current=!0),b&&(d.name=b),c||(d.all_datasets=!1),d.view="dev-detailed";var e=this,f=jQuery.post(this.urlRoot,d);return a?f.then(function(a){var b=new g(a);return b.setAsCurrent().done(function(){e.trigger("copied",e,a)})}):f.done(function(a){e.trigger("copied",e,a)})},setAsCurrent:function(){var a=this,b=jQuery.getJSON(Galaxy.root+"history/set_as_current?id="+this.id);return b.done(function(){a.trigger("set-as-current",a)}),b},toString:function(){return"History("+this.get("id")+","+this.get("name")+")"}})),h=c.InfinitelyScrollingCollection,i=h.extend(e.LoggableMixin).extend({_logNamespace:"history",model:g,order:"update_time",limitOnFirstFetch:10,limitPerFetch:10,initialize:function(a,b){b=b||{},this.log("HistoryCollection.initialize",a,b),h.prototype.initialize.call(this,a,b),this.includeDeleted=b.includeDeleted||!1,this.currentHistoryId=b.currentHistoryId,this.setUpListeners()},urlRoot:Galaxy.root+"api/histories",url:function(){return this.urlRoot},setUpListeners:function(){return this.on({"change:deleted":function(a){this.debug("change:deleted",this.includeDeleted,a.get("deleted")),!this.includeDeleted&&a.get("deleted")&&this.remove(a)},copied:function(a,b){this.setCurrent(new g(b,[]))},"set-as-current":function(a){var b=this.currentHistoryId;this.trigger("no-longer-current",b),this.currentHistoryId=a.id}})},_buildFetchData:function(a){return _.extend(h.prototype._buildFetchData.call(this,a),{view:"dev-detailed"})},_buildFetchFilters:function(a){var b=h.prototype._buildFetchFilters.call(this,a)||{},c={};return this.includeDeleted?c.deleted=null:(c.deleted=!1,c.purged=!1),_.defaults(b,c)},fetchFirst:function(a){var b=this,c=$.when();return this.currentHistoryId&&(c=h.prototype.fetchFirst.call(b,{silent:!0,limit:1,filters:{purged:"",deleted:"","encoded_id-in":this.currentHistoryId}})),c.then(function(){return a=a||{},a.offset=0,b.fetchMore(a)})},comparators:_.extend(_.clone(h.prototype.comparators),{name:e.buildComparator("name",{ascending:!0}),"name-dsc":e.buildComparator("name",{ascending:!1}),size:e.buildComparator("size",{ascending:!1}),"size-asc":e.buildComparator("size",{ascending:!0})}),sort:function(a){a=a||{};var b=a.silent,c=this.remove(this.get(this.currentHistoryId));return h.prototype.sort.call(this,_.defaults({silent:!0},a)),this.unshift(c,{silent:!0}),b||this.trigger("sort",this,a),this},create:function(a,b,c){var d=this,e=jQuery.getJSON(Galaxy.root+"history/create_new_current");return e.done(function(a){d.setCurrent(new g(a,[],c||{}))})},setCurrent:function(a,b){return b=b||{},this.unshift(a,b),this.currentHistoryId=a.get("id"),b.silent||this.trigger("new-current",a,this),this},toString:function(){return"HistoryCollection("+this.length+",current:"+this.currentHistoryId+")"}});return{History:g,HistoryCollection:i}}); -//# sourceMappingURL=../../../maps/mvc/history/history-model.js.map \ No newline at end of file +define(["mvc/history/history-contents","mvc/history/history-preferences","mvc/base/controlled-fetch-collection","utils/utils","mvc/base-mvc","utils/localization"],function(t,e,n,i,r,s){"use strict";var o=Backbone.Model.extend(r.LoggableMixin).extend(r.mixin(r.SearchableModelMixin,{_logNamespace:"history",UPDATE_DELAY:4e3,defaults:{model_class:"History",id:null,name:"Unnamed History",state:"new",deleted:!1,contents_active:{},contents_states:{}},urlRoot:Galaxy.root+"api/histories",contentsClass:t.HistoryContents,searchAttributes:["name","annotation","tags"],searchAliases:{title:"name",tag:"tags"},initialize:function(t,e){e=e||{},this.logger=e.logger||null,this.log(this+".initialize:",t,e),this.contents=new this.contentsClass([],{history:this,historyId:this.get("id"),order:e.order}),this._setUpListeners(),this._setUpCollectionListeners(),this.updateTimeoutId=null},_setUpListeners:function(){return this.on({error:function(t,e,n,i,r){this.clearUpdateTimeout()},"change:id":function(t,e){this.contents&&(this.contents.historyId=e)}})},_setUpCollectionListeners:function(){return this.contents?this.listenTo(this.contents,{error:function(){this.trigger.apply(this,jQuery.makeArray(arguments))}}):this},contentsShown:function(){var t=this.get("contents_active"),e=t.active||0;return e+=this.contents.includeDeleted?t.deleted:0,e+=this.contents.includeHidden?t.hidden:0},nice_size:function(){var t=this.get("size");return t?i.bytesToString(t,!0,2):s("(empty)")},toJSON:function(){return _.extend(Backbone.Model.prototype.toJSON.call(this),{nice_size:this.nice_size()})},get:function(t){return"nice_size"===t?this.nice_size():Backbone.Model.prototype.get.apply(this,arguments)},ownedByCurrUser:function(){return!(!Galaxy||!Galaxy.user)&&(!Galaxy.user.isAnonymous()&&Galaxy.user.id===this.get("user_id"))},numOfUnfinishedJobs:function(){var t=this.get("non_ready_jobs");return t?t.length:0},numOfUnfinishedShownContents:function(){return this.contents.runningAndActive().length||0},_fetchContentRelatedAttributes:function(){var t=["size","non_ready_jobs","contents_active","hid_counter"];return this.fetch({data:$.param({keys:t.join(",")})})},refresh:function(t){t=t||{};var e=this,n=e.lastUpdateTime;return this.contents.allFetched=!1,(0!==e.contents.currentPage?function(){return e.contents.fetchPage(e.contents.currentPage)}:function(){return e.contents.fetchUpdated(n)})().done(function(n,i,r){var s;try{s=new Date(r.getResponseHeader("Date"))}catch(t){}e.lastUpdateTime=s||new Date,e.checkForUpdates(t)})},checkForUpdates:function(t){function e(){i.clearUpdateTimeout(),i.updateTimeoutId=setTimeout(function(){i.refresh(t)},n)}t=t||{};var n=this.UPDATE_DELAY,i=this;if(i.id){this.numOfUnfinishedShownContents()>0?e():i._fetchContentRelatedAttributes().done(function(t){i.numOfUnfinishedJobs()>0?e():i.trigger("ready")})}},clearUpdateTimeout:function(){this.updateTimeoutId&&(clearTimeout(this.updateTimeoutId),this.updateTimeoutId=null)},parse:function(t,e){var n=Backbone.Model.prototype.parse.call(this,t,e);return n.create_time&&(n.create_time=new Date(n.create_time)),n.update_time&&(n.update_time=new Date(n.update_time)),n},fetchWithContents:function(t,e){t=t||{};var n=this;return t.view="dev-detailed",this.fetch(t).then(function(t){return n.contents.history=n,n.contents.setHistoryId(t.id),n.fetchContents(e)})},fetchContents:function(t){t=t||{};var e=this;return e.lastUpdateTime=new Date,e.contents.fetchCurrentPage(t)},_delete:function(t){return this.get("deleted")?jQuery.when():this.save({deleted:!0},t)},purge:function(t){return this.get("purged")?jQuery.when():this.save({deleted:!0,purged:!0},t)},undelete:function(t){return this.get("deleted")?this.save({deleted:!1},t):jQuery.when()},copy:function(t,e,n){if(t=void 0===t||t,!this.id)throw new Error("You must set the history ID before copying it.");var i={history_id:this.id};t&&(i.current=!0),e&&(i.name=e),n||(i.all_datasets=!1),i.view="dev-detailed";var r=this,s=jQuery.post(this.urlRoot,i);return t?s.then(function(t){return new o(t).setAsCurrent().done(function(){r.trigger("copied",r,t)})}):s.done(function(t){r.trigger("copied",r,t)})},setAsCurrent:function(){var t=this,e=jQuery.getJSON(Galaxy.root+"history/set_as_current?id="+this.id);return e.done(function(){t.trigger("set-as-current",t)}),e},toString:function(){return"History("+this.get("id")+","+this.get("name")+")"}})),c=n.InfinitelyScrollingCollection,u=c.extend(r.LoggableMixin).extend({_logNamespace:"history",model:o,order:"update_time",limitOnFirstFetch:10,limitPerFetch:10,initialize:function(t,e){e=e||{},this.log("HistoryCollection.initialize",t,e),c.prototype.initialize.call(this,t,e),this.includeDeleted=e.includeDeleted||!1,this.currentHistoryId=e.currentHistoryId,this.setUpListeners()},urlRoot:Galaxy.root+"api/histories",url:function(){return this.urlRoot},setUpListeners:function(){return this.on({"change:deleted":function(t){this.debug("change:deleted",this.includeDeleted,t.get("deleted")),!this.includeDeleted&&t.get("deleted")&&this.remove(t)},copied:function(t,e){this.setCurrent(new o(e,[]))},"set-as-current":function(t){var e=this.currentHistoryId;this.trigger("no-longer-current",e),this.currentHistoryId=t.id}})},_buildFetchData:function(t){return _.extend(c.prototype._buildFetchData.call(this,t),{view:"dev-detailed"})},_buildFetchFilters:function(t){var e=c.prototype._buildFetchFilters.call(this,t)||{},n={};return this.includeDeleted?n.deleted=null:(n.deleted=!1,n.purged=!1),_.defaults(e,n)},fetchFirst:function(t){var e=this,n=$.when();return this.currentHistoryId&&(n=c.prototype.fetchFirst.call(e,{silent:!0,limit:1,filters:{purged:"",deleted:"","encoded_id-in":this.currentHistoryId}})),n.then(function(){return t=t||{},t.offset=0,e.fetchMore(t)})},comparators:_.extend(_.clone(c.prototype.comparators),{name:r.buildComparator("name",{ascending:!0}),"name-dsc":r.buildComparator("name",{ascending:!1}),size:r.buildComparator("size",{ascending:!1}),"size-asc":r.buildComparator("size",{ascending:!0})}),sort:function(t){t=t||{};var e=t.silent,n=this.remove(this.get(this.currentHistoryId));return c.prototype.sort.call(this,_.defaults({silent:!0},t)),this.unshift(n,{silent:!0}),e||this.trigger("sort",this,t),this},create:function(t,e,n,i){var r=this;return jQuery.getJSON(Galaxy.root+"history/create_new_current").done(function(t){r.setCurrent(new o(t,[],n||{}))})},setCurrent:function(t,e){return e=e||{},this.unshift(t,e),this.currentHistoryId=t.get("id"),e.silent||this.trigger("new-current",t,this),this},toString:function(){return"HistoryCollection("+this.length+",current:"+this.currentHistoryId+")"}});return{History:o,HistoryCollection:u}}); +//# sourceMappingURL=../../../maps/mvc/history/history-model.js.map diff --git a/static/scripts/mvc/history/history-preferences.js b/static/scripts/mvc/history/history-preferences.js index 914a3fe1715..6180c454faf 100644 --- a/static/scripts/mvc/history/history-preferences.js +++ b/static/scripts/mvc/history/history-preferences.js @@ -1,2 +1,2 @@ -define(["mvc/base-mvc"],function(a){"use strict";var b=a.SessionStorageModel.extend({defaults:{expandedIds:{},show_deleted:!1,show_hidden:!1},addExpanded:function(a){var b=this.get("expandedIds");b[a.id]=a.get("id"),this.save("expandedIds",b)},removeExpanded:function(a){var b=this.get("expandedIds");delete b[a.id],this.save("expandedIds",b)},isExpanded:function(a){return _.result(this.get("expandedIds"),a,!1)},allExpanded:function(){return _.values(this.get("expandedIds"))},clearExpanded:function(){this.set("expandedIds",{})},includeDeleted:function(a){return _.isUndefined(a)||this.set("show_deleted",a),this.get("show_deleted")},includeHidden:function(a){return _.isUndefined(a)||this.set("show_hidden",a),this.get("show_hidden")},toString:function(){return"HistoryPrefs("+this.id+")"}},{storageKeyPrefix:"history:",historyStorageKey:function(a){if(!a)throw new Error("HistoryPrefs.historyStorageKey needs valid id: "+a);return b.storageKeyPrefix+a},get:function(a){return new b({id:b.historyStorageKey(a)})},clearAll:function(){for(var a in sessionStorage)0===a.indexOf(b.storageKeyPrefix)&&sessionStorage.removeItem(a)}});return{HistoryPrefs:b}}); -//# sourceMappingURL=../../../maps/mvc/history/history-preferences.js.map \ No newline at end of file +define(["mvc/base-mvc"],function(e){"use strict";var t=e.SessionStorageModel.extend({defaults:{expandedIds:{},show_deleted:!1,show_hidden:!1},addExpanded:function(e){var t=this.get("expandedIds");t[e.id]=e.get("id"),this.save("expandedIds",t)},removeExpanded:function(e){var t=this.get("expandedIds");delete t[e.id],this.save("expandedIds",t)},isExpanded:function(e){return _.result(this.get("expandedIds"),e,!1)},allExpanded:function(){return _.values(this.get("expandedIds"))},clearExpanded:function(){this.set("expandedIds",{})},includeDeleted:function(e){return _.isUndefined(e)||this.set("show_deleted",e),this.get("show_deleted")},includeHidden:function(e){return _.isUndefined(e)||this.set("show_hidden",e),this.get("show_hidden")},toString:function(){return"HistoryPrefs("+this.id+")"}},{storageKeyPrefix:"history:",historyStorageKey:function(e){if(!e)throw new Error("HistoryPrefs.historyStorageKey needs valid id: "+e);return t.storageKeyPrefix+e},get:function(e){return new t({id:t.historyStorageKey(e)})},clearAll:function(e){for(var d in sessionStorage)0===d.indexOf(t.storageKeyPrefix)&&sessionStorage.removeItem(d)}});return{HistoryPrefs:t}}); +//# sourceMappingURL=../../../maps/mvc/history/history-preferences.js.map diff --git a/static/scripts/mvc/history/history-structure-view.js b/static/scripts/mvc/history/history-structure-view.js index 53fcb04e176..15d85c224ac 100644 --- a/static/scripts/mvc/history/history-structure-view.js +++ b/static/scripts/mvc/history/history-structure-view.js @@ -1,2 +1,2 @@ -define(["mvc/history/job-dag","mvc/job/job-model","mvc/job/job-li","mvc/dataset/dataset-li","mvc/base-mvc","utils/localization","libs/d3"],function(a,b,c,d,e){"use strict";var f="history";window.JobDAG=a;var g=Backbone.View.extend(e.LoggableMixin).extend({_logNamespace:f,className:"history-structure-component",_INITIAL_ZOOM_LEVEL:1,_MIN_ZOOM_LEVEL:.25,_LINK_ID_SEP:"-to-",_VERTEX_NAME_DATA_KEY:"vertex-name",JobItemClass:c.JobListItemView,ContentItemClass:d.DatasetListItemView,initialize:function(a){this.log(this+"(HistoryStructureComponent).initialize:",a),this.component=a.component,this._liMap={},this._createVertexItems(),this.zoomLevel=a.zoomLevel||this._INITIAL_ZOOM_LEVEL,this.layout=this._createLayout(a.layoutOptions)},_createVertexItems:function(){var a=this;a.component.eachVertex(function(b){var c,d=b.data.job?"job":"copy";"job"===d?c=a._createJobListItem(b):"copy"===d&&(c=a._createContentListItem(b)),a._liMap[b.name]=c}),a.debug("_liMap:",a._liMap)},_createJobListItem:function(a){this.debug("_createJobListItem:",a);var c=this,d=a.data,e=new b.Job(d.job),f=_.map(e.get("outputs"),function(a){return c.model.contents.get(a.type_id)});e.outputCollection.reset(f),e.outputCollection.historyId=c.model.id;var g=new c.JobItemClass({model:e,tool:d.tool,jobData:d});return c.listenTo(g,"expanding expanded collapsing collapsed",c.renderGraph),c.listenTo(g.foldout,"view:expanding view:expanded view:collapsing view:collapsed",c.renderGraph),g},_createContentListItem:function(a){this.debug("_createContentListItem:",a);var b=this,c=a.data;c=b.model.contents.get(c.type_id);var d=new b.ContentItemClass({model:c});return b.listenTo(d,"expanding expanded collapsing collapsed",b.renderGraph),d},layoutDefaults:{linkSpacing:16,linkWidth:0,linkHeight:0,jobWidth:300,jobHeight:300,jobSpacing:12,linkAdjX:4,linkAdjY:0},_createLayout:function(a){a=_.defaults(_.clone(a||{}),this.layoutDefaults);var b=this,c=_.values(b.component.vertices),d=_.extend(a,{nodeMap:{},links:[],svg:{width:0,height:0}});return c.forEach(function(a){var b={name:a.name,x:0,y:0};d.nodeMap[a.name]=b}),b.component.edges(function(a){var b={source:a.source,target:a.target};d.links.push(b)}),d},render:function(a){this.debug(this+".render:",a);var b=this;b.$el.html(["
                          ",'','
                          ',"
                          "].join(""));var c=b.$graph();return b.component.eachVertex(function(a){b._liMap[a.name].render(0).$el.appendTo(c).data(b._VERTEX_NAME_DATA_KEY,a.name)}),b.renderGraph(),this},$graph:function(){return this.$(".graph")},renderGraph:function(a){function b(){c._updateLayout(),c.$graph().css("transform",["scale(",c.zoomLevel,",",c.zoomLevel,")"].join("")).width(c.layout.svg.width).height(c.layout.svg.height),c.renderSVG(),c.component.eachVertex(function(a){var b=c._liMap[a.name],d=c.layout.nodeMap[a.name];b.$el.css({top:d.y,left:d.x})})}this.debug(this+".renderGraph:",a);var c=this;return this.$el.is(":visible")?b():_.delay(b,0),this},_updateLayout:function(){this.debug(this+"._updateLayout:");var a=this,b=a.layout;b.linkHeight=b.linkSpacing*_.size(b.nodeMap),b.svg.height=b.linkHeight+b.jobHeight,b.svg.width=0;var c=0,d=b.linkHeight;return _.each(b.nodeMap,function(a){a.x=c,a.y=d,c+=b.jobWidth+b.jobSpacing}),b.svg.width=b.linkWidth=Math.max(b.svg.width,c),b.links.forEach(function(a){var c=b.nodeMap[a.source],d=b.nodeMap[a.target];a.x1=c.x+b.linkAdjX,a.y1=c.y+b.linkAdjY,a.x2=d.x+b.linkAdjX,a.y2=d.y+b.linkAdjY}),this.debug(JSON.stringify(b,null," ")),this.layout},renderSVG:function(){function a(a){d3.select(this).classed("highlighted",!0),c._liMap[a.source].$el.addClass("highlighted"),c._liMap[a.target].$el.addClass("highlighted")}function b(a){d3.select(this).classed("highlighted",!1),c._liMap[a.source].$el.removeClass("highlighted"),c._liMap[a.target].$el.removeClass("highlighted")}this.debug(this+".renderSVG:");var c=this,d=c.layout,e=d3.select(this.$graph().get(0)).select("svg");e.empty()&&(e=d3.select(this.$graph().get(0)).append("svg")),e.attr("width",d.svg.width).attr("height",d.svg.height);var f=e.selectAll(".connection").data(d.links);return f.enter().append("path").attr("class","connection").attr("id",function(a){return[a.source,a.target].join(c._LINK_ID_SEP)}).on("mouseover",a).on("mouseout",b),f.attr("d",function(a){return c._connectionPath(a)}),e.node()},_connectionPath:function(a){var b=0,c=(a.x2-a.x1)/this.layout.svg.width*this.layout.linkHeight;return["M",a.x1,",",a.y1," ","C",a.x1+b,",",a.y1-c," ",a.x2-b,",",a.y2-c," ",a.x2,",",a.y2].join("")},events:{"mouseover .graph > .list-item":function(a){this.highlightConnected(a.currentTarget,!0)},"mouseout .graph > .list-item":function(a){this.highlightConnected(a.currentTarget,!1)}},highlightConnected:function(a,b){this.debug("highlightConnected",a,b),b=void 0!==b?b:!0;var c=this,d=c.component,e=b?jQuery.prototype.addClass:jQuery.prototype.removeClass,f=b?"connection highlighted":"connection",g=e.call($(a),"highlighted"),h=g.data(c._VERTEX_NAME_DATA_KEY);d.edges({target:h}).forEach(function(a){var b=a.source,d=c._liMap[b];e.call(d.$el,"highlighted"),c.$("#"+b+c._LINK_ID_SEP+h).attr("class",f)}),d.vertices[h].eachEdge(function(a){var b=a.target,d=c._liMap[b];e.call(d.$el,"highlighted"),c.$("#"+h+c._LINK_ID_SEP+b).attr("class",f)})},zoom:function(a){return this.zoomLevel=Math.min(1,Math.max(this._MIN_ZOOM_LEVEL,a)),this.renderGraph()},toString:function(){return"HistoryStructureComponent("+this.model.id+")"}}),h=g.extend({className:g.prototype.className+" vertical",layoutDefaults:_.extend(_.clone(g.prototype.layoutDefaults),{linkAdjX:0,linkAdjY:4}),_updateLayout:function(){this.debug(this+"._updateLayout:");var a=this,b=a.layout;b.linkWidth=b.linkSpacing*_.size(b.nodeMap),b.svg.width=b.linkWidth+b.jobWidth,b.svg.height=0;var c=b.linkWidth,d=0;return _.each(b.nodeMap,function(e,f){e.x=c,e.y=d;var g=a._liMap[f];d+=g.$el.height()+b.jobSpacing}),b.linkHeight=b.svg.height=Math.max(b.svg.height,d),b.links.forEach(function(a){var c=b.nodeMap[a.source],d=b.nodeMap[a.target];a.x1=c.x+b.linkAdjX,a.y1=c.y+b.linkAdjY,a.x2=d.x+b.linkAdjX,a.y2=d.y+b.linkAdjY}),this.debug(JSON.stringify(b,null," ")),b},_connectionPath:function(a){var b=0,c=(a.y2-a.y1)/this.layout.svg.height*this.layout.linkWidth;return["M",a.x1,",",a.y1," ","C",a.x1-c,",",a.y1+b," ",a.x2-c,",",a.y2-b," ",a.x2,",",a.y2].join("")},toString:function(){return"VerticalHistoryStructureComponent("+this.model.id+")"}}),i=Backbone.View.extend(e.LoggableMixin).extend({_logNamespace:f,className:"history-structure",_layoutToComponentClass:{horizontal:g,vertical:h},_DEFAULT_LAYOUT:"vertical",initialize:function(a){this.layout=_.contains(a.layout,_.keys(this._layoutToComponentClass))?a.layout:this._DEFAULT_LAYOUT,this.log(this+"(HistoryStructureView).initialize:",a,this.model),this._processTools(a.tools),this._processJobs(a.jobs),this._createDAG()},_processTools:function(a){return this.tools=a||{},this.tools},_processJobs:function(a){return this.jobs=a||[],this.jobs},_createDAG:function(){this.dag=new a({historyContents:this.model.contents.toJSON(),tools:this.tools,jobs:this.jobs,excludeSetMetadata:!0,excludeErroredJobs:!0}),this.debug(this+".dag:",this.dag),this._createComponents()},_createComponents:function(){this.log(this+"._createComponents");var a=this;return a.componentViews=a.dag.weakComponentGraphArray().map(function(b){return a._createComponent(b)}),a.componentViews},_createComponent:function(a){this.log(this+"._createComponent:",a);var b=this._layoutToComponentClass[this.layout];return new b({model:this.model,component:a})},render:function(a){this.log(this+".render:",a);var b=this;return b.$el.addClass("clear").html(['
                          ','
                          '].join("")),b.componentViews.forEach(function(a){a.render().$el.appendTo(b.$components())}),b},$components:function(){return this.$(".components")},changeLayout:function(a){if(!(a in this._layoutToComponentClass))throw new Error(this+": unknown layout: "+a);return this.layout=a,this._createComponents(),this.render()},toString:function(){return"HistoryStructureView("+this.model.id+")"}});return i}); -//# sourceMappingURL=../../../maps/mvc/history/history-structure-view.js.map \ No newline at end of file +define(["mvc/history/job-dag","mvc/job/job-model","mvc/job/job-li","mvc/dataset/dataset-li","mvc/base-mvc","utils/localization","libs/d3"],function(t,e,n,i,o,a){"use strict";window.JobDAG=t;var s=Backbone.View.extend(o.LoggableMixin).extend({_logNamespace:"history",className:"history-structure-component",_INITIAL_ZOOM_LEVEL:1,_MIN_ZOOM_LEVEL:.25,_LINK_ID_SEP:"-to-",_VERTEX_NAME_DATA_KEY:"vertex-name",JobItemClass:n.JobListItemView,ContentItemClass:i.DatasetListItemView,initialize:function(t){this.log(this+"(HistoryStructureComponent).initialize:",t),this.component=t.component,this._liMap={},this._createVertexItems(),this.zoomLevel=t.zoomLevel||this._INITIAL_ZOOM_LEVEL,this.layout=this._createLayout(t.layoutOptions)},_createVertexItems:function(){var t=this;t.component.eachVertex(function(e){var n,i=e.data.job?"job":"copy";"job"===i?n=t._createJobListItem(e):"copy"===i&&(n=t._createContentListItem(e)),t._liMap[e.name]=n}),t.debug("_liMap:",t._liMap)},_createJobListItem:function(t){this.debug("_createJobListItem:",t);var n=this,i=t.data,o=new e.Job(i.job),a=_.map(o.get("outputs"),function(t){return n.model.contents.get(t.type_id)});o.outputCollection.reset(a),o.outputCollection.historyId=n.model.id;var s=new n.JobItemClass({model:o,tool:i.tool,jobData:i});return n.listenTo(s,"expanding expanded collapsing collapsed",n.renderGraph),n.listenTo(s.foldout,"view:expanding view:expanded view:collapsing view:collapsed",n.renderGraph),s},_createContentListItem:function(t){this.debug("_createContentListItem:",t);var e=this,n=t.data;n=e.model.contents.get(n.type_id);var i=new e.ContentItemClass({model:n});return e.listenTo(i,"expanding expanded collapsing collapsed",e.renderGraph),i},layoutDefaults:{linkSpacing:16,linkWidth:0,linkHeight:0,jobWidth:300,jobHeight:300,jobSpacing:12,linkAdjX:4,linkAdjY:0},_createLayout:function(t){t=_.defaults(_.clone(t||{}),this.layoutDefaults);var e=this,n=_.values(e.component.vertices),i=_.extend(t,{nodeMap:{},links:[],svg:{width:0,height:0}});return n.forEach(function(t,e){var n={name:t.name,x:0,y:0};i.nodeMap[t.name]=n}),e.component.edges(function(t){var e={source:t.source,target:t.target};i.links.push(e)}),i},render:function(t){this.debug(this+".render:",t);var e=this;e.$el.html(["
                          ",'','
                          ',"
                          "].join(""));var n=e.$graph();return e.component.eachVertex(function(t){e._liMap[t.name].render(0).$el.appendTo(n).data(e._VERTEX_NAME_DATA_KEY,t.name)}),e.renderGraph(),this},$graph:function(){return this.$(".graph")},renderGraph:function(t){function e(){n._updateLayout(),n.$graph().css("transform",["scale(",n.zoomLevel,",",n.zoomLevel,")"].join("")).width(n.layout.svg.width).height(n.layout.svg.height),n.renderSVG(),n.component.eachVertex(function(t){var e=n._liMap[t.name],i=n.layout.nodeMap[t.name];e.$el.css({top:i.y,left:i.x})})}this.debug(this+".renderGraph:",t);var n=this;return this.$el.is(":visible")?e():_.delay(e,0),this},_updateLayout:function(){this.debug(this+"._updateLayout:");var t=this,e=t.layout;e.linkHeight=e.linkSpacing*_.size(e.nodeMap),e.svg.height=e.linkHeight+e.jobHeight,e.svg.width=0;var n=0,i=e.linkHeight;return _.each(e.nodeMap,function(t,o){t.x=n,t.y=i,n+=e.jobWidth+e.jobSpacing}),e.svg.width=e.linkWidth=Math.max(e.svg.width,n),e.links.forEach(function(t){var n=e.nodeMap[t.source],i=e.nodeMap[t.target];t.x1=n.x+e.linkAdjX,t.y1=n.y+e.linkAdjY,t.x2=i.x+e.linkAdjX,t.y2=i.y+e.linkAdjY}),this.debug(JSON.stringify(e,null," ")),this.layout},renderSVG:function(){function t(t){d3.select(this).classed("highlighted",!0),n._liMap[t.source].$el.addClass("highlighted"),n._liMap[t.target].$el.addClass("highlighted")}function e(t){d3.select(this).classed("highlighted",!1),n._liMap[t.source].$el.removeClass("highlighted"),n._liMap[t.target].$el.removeClass("highlighted")}this.debug(this+".renderSVG:");var n=this,i=n.layout,o=d3.select(this.$graph().get(0)).select("svg");o.empty()&&(o=d3.select(this.$graph().get(0)).append("svg")),o.attr("width",i.svg.width).attr("height",i.svg.height);var a=o.selectAll(".connection").data(i.links);return a.enter().append("path").attr("class","connection").attr("id",function(t){return[t.source,t.target].join(n._LINK_ID_SEP)}).on("mouseover",t).on("mouseout",e),a.attr("d",function(t){return n._connectionPath(t)}),o.node()},_connectionPath:function(t){var e=(t.x2-t.x1)/this.layout.svg.width*this.layout.linkHeight;return["M",t.x1,",",t.y1," ","C",t.x1+0,",",t.y1-e," ",t.x2-0,",",t.y2-e," ",t.x2,",",t.y2].join("")},events:{"mouseover .graph > .list-item":function(t){this.highlightConnected(t.currentTarget,!0)},"mouseout .graph > .list-item":function(t){this.highlightConnected(t.currentTarget,!1)}},highlightConnected:function(t,e){this.debug("highlightConnected",t,e),e=void 0===e||e;var n=this,i=n.component,o=e?jQuery.prototype.addClass:jQuery.prototype.removeClass,a=e?"connection highlighted":"connection",s=o.call($(t),"highlighted"),r=s.data(n._VERTEX_NAME_DATA_KEY);i.edges({target:r}).forEach(function(t){var e=t.source,i=n._liMap[e];o.call(i.$el,"highlighted"),n.$("#"+e+n._LINK_ID_SEP+r).attr("class",a)}),i.vertices[r].eachEdge(function(t){var e=t.target,i=n._liMap[e];o.call(i.$el,"highlighted"),n.$("#"+r+n._LINK_ID_SEP+e).attr("class",a)})},zoom:function(t){return this.zoomLevel=Math.min(1,Math.max(this._MIN_ZOOM_LEVEL,t)),this.renderGraph()},toString:function(){return"HistoryStructureComponent("+this.model.id+")"}}),r=s.extend({className:s.prototype.className+" vertical",layoutDefaults:_.extend(_.clone(s.prototype.layoutDefaults),{linkAdjX:0,linkAdjY:4}),_updateLayout:function(){this.debug(this+"._updateLayout:");var t=this,e=t.layout;e.linkWidth=e.linkSpacing*_.size(e.nodeMap),e.svg.width=e.linkWidth+e.jobWidth,e.svg.height=0;var n=e.linkWidth,i=0;return _.each(e.nodeMap,function(o,a){o.x=n,o.y=i;var s=t._liMap[a];i+=s.$el.height()+e.jobSpacing}),e.linkHeight=e.svg.height=Math.max(e.svg.height,i),e.links.forEach(function(t){var n=e.nodeMap[t.source],i=e.nodeMap[t.target];t.x1=n.x+e.linkAdjX,t.y1=n.y+e.linkAdjY,t.x2=i.x+e.linkAdjX,t.y2=i.y+e.linkAdjY}),this.debug(JSON.stringify(e,null," ")),e},_connectionPath:function(t){var e=(t.y2-t.y1)/this.layout.svg.height*this.layout.linkWidth;return["M",t.x1,",",t.y1," ","C",t.x1-e,",",t.y1+0," ",t.x2-e,",",t.y2-0," ",t.x2,",",t.y2].join("")},toString:function(){return"VerticalHistoryStructureComponent("+this.model.id+")"}});return Backbone.View.extend(o.LoggableMixin).extend({_logNamespace:"history",className:"history-structure",_layoutToComponentClass:{horizontal:s,vertical:r},_DEFAULT_LAYOUT:"vertical",initialize:function(t){this.layout=_.contains(t.layout,_.keys(this._layoutToComponentClass))?t.layout:this._DEFAULT_LAYOUT,this.log(this+"(HistoryStructureView).initialize:",t,this.model),this._processTools(t.tools),this._processJobs(t.jobs),this._createDAG()},_processTools:function(t){return this.tools=t||{},this.tools},_processJobs:function(t){return this.jobs=t||[],this.jobs},_createDAG:function(){this.dag=new t({historyContents:this.model.contents.toJSON(),tools:this.tools,jobs:this.jobs,excludeSetMetadata:!0,excludeErroredJobs:!0}),this.debug(this+".dag:",this.dag),this._createComponents()},_createComponents:function(){this.log(this+"._createComponents");var t=this;return t.componentViews=t.dag.weakComponentGraphArray().map(function(e){return t._createComponent(e)}),t.componentViews},_createComponent:function(t){return this.log(this+"._createComponent:",t),new(0,this._layoutToComponentClass[this.layout])({model:this.model,component:t})},render:function(t){this.log(this+".render:",t);var e=this;return e.$el.addClass("clear").html(['
                          ','
                          '].join("")),e.componentViews.forEach(function(t){t.render().$el.appendTo(e.$components())}),e},$components:function(){return this.$(".components")},changeLayout:function(t){if(!(t in this._layoutToComponentClass))throw new Error(this+": unknown layout: "+t);return this.layout=t,this._createComponents(),this.render()},toString:function(){return"HistoryStructureView("+this.model.id+")"}})}); +//# sourceMappingURL=../../../maps/mvc/history/history-structure-view.js.map diff --git a/static/scripts/mvc/history/history-view-annotated.js b/static/scripts/mvc/history/history-view-annotated.js index fd87324da09..5e69da3d3ea 100644 --- a/static/scripts/mvc/history/history-view-annotated.js +++ b/static/scripts/mvc/history/history-view-annotated.js @@ -1,2 +1,2 @@ -define(["mvc/history/history-view","mvc/history/hda-li","mvc/history/hdca-li","mvc/base-mvc","utils/localization"],function(a,b,c,d,e){"use strict";var f=a.HistoryView,g=f.extend({className:f.prototype.className+" annotated-history-panel",_buildNewRender:function(){var a=f.prototype._buildNewRender.call(this);return this.renderHistoryAnnotation(a),a},renderHistoryAnnotation:function(a){var b=this.model.get("annotation");b&&a.find("> .controls .subtitle").text(b)},renderItems:function(a){a=a||this.$el,f.prototype.renderItems.call(this,a);var b=a.find("> .controls");b.find(".contents-container.headers").remove();$('
                          ').append([$('
                          ').text(e("Dataset")),$('
                          ').text(e("Annotation"))]).appendTo(b);return self.views},_renderItemView$el:function(a){return $('
                          ').append([a.render(0).$el,$('
                          ').text(a.model.get("annotation")||"")])},events:_.extend(_.clone(f.prototype.events),{"click .contents-container":function(a){a.stopPropagation(),$(a.currentTarget).find(".list-item .title-bar").click()},"click .icon-btn":function(a){a.stopPropagation();var b=$(a.currentTarget);b.length&&"dropdown"===b.attr("data-toggle")&&b.dropdown("toggle")}}),_clickSectionLink:function(a){var b=$(a.currentTarget).parent().parent().data("section");this.openSection(b)},toString:function(){return"AnnotatedHistoryView("+(this.model?this.model.get("name"):"")+")"}});return{AnnotatedHistoryView:g}}); -//# sourceMappingURL=../../../maps/mvc/history/history-view-annotated.js.map \ No newline at end of file +define(["mvc/history/history-view","mvc/history/hda-li","mvc/history/hdca-li","mvc/base-mvc","utils/localization"],function(t,e,n,o,i){"use strict";var r=t.HistoryView;return{AnnotatedHistoryView:r.extend({className:r.prototype.className+" annotated-history-panel",_buildNewRender:function(){var t=r.prototype._buildNewRender.call(this);return this.renderHistoryAnnotation(t),t},renderHistoryAnnotation:function(t){var e=this.model.get("annotation");e&&t.find("> .controls .subtitle").text(e)},renderItems:function(t){t=t||this.$el,r.prototype.renderItems.call(this,t);var e=t.find("> .controls");e.find(".contents-container.headers").remove();$('
                          ').append([$('
                          ').text(i("Dataset")),$('
                          ').text(i("Annotation"))]).appendTo(e);return self.views},_renderItemView$el:function(t){return $('
                          ').append([t.render(0).$el,$('
                          ').text(t.model.get("annotation")||"")])},events:_.extend(_.clone(r.prototype.events),{"click .contents-container":function(t){t.stopPropagation(),$(t.currentTarget).find(".list-item .title-bar").click()},"click .icon-btn":function(t){t.stopPropagation();var e=$(t.currentTarget);e.length&&"dropdown"===e.attr("data-toggle")&&e.dropdown("toggle")}}),_clickSectionLink:function(t){var e=$(t.currentTarget).parent().parent().data("section");this.openSection(e)},toString:function(){return"AnnotatedHistoryView("+(this.model?this.model.get("name"):"")+")"}})}}); +//# sourceMappingURL=../../../maps/mvc/history/history-view-annotated.js.map diff --git a/static/scripts/mvc/history/history-view-edit-current.js b/static/scripts/mvc/history/history-view-edit-current.js index 57a39a02dd4..eeefd59545d 100644 --- a/static/scripts/mvc/history/history-view-edit-current.js +++ b/static/scripts/mvc/history/history-view-edit-current.js @@ -1,2 +1,2 @@ -define(["mvc/history/history-model","mvc/history/history-view-edit","mvc/base-mvc","utils/localization"],function(a,b,c,d){"use strict";var e=c.SessionStorageModel.extend({defaults:{tagsEditorShown:!1,annotationEditorShown:!1,scrollPosition:0},toString:function(){return"HistoryViewPrefs("+JSON.stringify(this.toJSON())+")"}});e.storageKey=function(){return"history-panel"};var f=b.HistoryViewEdit,g=f.extend({className:f.prototype.className+" current-history-panel",HDCAViewClass:f.prototype.HDCAViewClass.extend({foldoutStyle:"drilldown"}),emptyMsg:[d("This history is empty"),". ",d("You can "),'',d("load your own data"),"",d(" or "),'',d("get data from an external source"),""].join(""),initialize:function(a){a=a||{},this.preferences=new e(_.extend({id:e.storageKey()},_.pick(a,_.keys(e.prototype.defaults)))),f.prototype.initialize.call(this,a),this.panelStack=[],this.currentContentId=a.currentContentId||null},_setUpListeners:function(){f.prototype._setUpListeners.call(this);var a=this;this.on("new-model",function(){a.preferences.set("scrollPosition",0)})},loadCurrentHistory:function(){return this.loadHistory(null,{url:Galaxy.root+"history/current_history_json"})},switchToHistory:function(a){return Galaxy.user.isAnonymous()?(this.trigger("error",d("You must be logged in to switch histories"),d("Anonymous user")),$.when()):this.loadHistory(a,{url:Galaxy.root+"history/set_as_current?id="+a})},createNewHistory:function(){return Galaxy.user.isAnonymous()?(this.trigger("error",d("You must be logged in to create histories"),d("Anonymous user")),$.when()):this.loadHistory(null,{url:Galaxy.root+"history/create_new_current"})},setModel:function(a,b,c){return f.prototype.setModel.call(this,a,b,c),this.model&&this.model.id&&(this.log("checking for updates"),this.model.checkForUpdates()),this},_setUpModelListeners:function(){return f.prototype._setUpModelListeners.call(this),this.listenTo(this.model,{"change:nice_size change:size":function(){this.trigger("history-size-change",this,this.model,arguments)},"change:id":function(){this.once("loading-done",function(){this.model.checkForUpdates()})}})},_setUpCollectionListeners:function(){f.prototype._setUpCollectionListeners.call(this),this.listenTo(this.collection,"state:ready",function(a){a.get("visible")||this.collection.storage.includeHidden()||this.removeItemView(a)})},_setUpBehaviors:function(a){a=a||this.$el;var b=this;return f.prototype._setUpBehaviors.call(b,a),this._debouncedScrollCaptureHandler||(this._debouncedScrollCaptureHandler=_.debounce(function(){b.$el.is(":visible")&&b.preferences.set("scrollPosition",$(this).scrollTop())},40)),b.$scrollContainer(a).off("scroll",this._debouncedScrollCaptureHandler).on("scroll",this._debouncedScrollCaptureHandler),b},_buildNewRender:function(){if(!this.model)return $();var a=f.prototype._buildNewRender.call(this);return a.find(".search").prependTo(a.find("> .controls")),this._renderQuotaMessage(a),a},_renderQuotaMessage:function(a){return a=a||this.$el,$(this.templates.quotaMsg({},this)).prependTo(a.find(".messages"))},_renderTags:function(a){var b=this;f.prototype._renderTags.call(b,a),b.preferences.get("tagsEditorShown")&&b.tagsEditor.toggle(!0),b.listenTo(b.tagsEditor,"hiddenUntilActivated:shown hiddenUntilActivated:hidden",function(a){b.preferences.set("tagsEditorShown",a.hidden)})},_renderAnnotation:function(a){var b=this;f.prototype._renderAnnotation.call(b,a),b.preferences.get("annotationEditorShown")&&b.annotationEditor.toggle(!0),b.listenTo(b.annotationEditor,"hiddenUntilActivated:shown hiddenUntilActivated:hidden",function(a){b.preferences.set("annotationEditorShown",a.hidden)})},_swapNewRender:function(a){f.prototype._swapNewRender.call(this,a);var b=this;return _.delay(function(){var a=b.preferences.get("scrollPosition");a&&b.scrollTo(a,0)},10),this},_attachItems:function(a){f.prototype._attachItems.call(this,a);var b=this;return b.currentContentId&&b._setCurrentContentById(b.currentContentId),this},addItemView:function(a,b,c){var d=f.prototype.addItemView.call(this,a,b,c);return d&&this.panelStack.length?this._collapseDrilldownPanel():d},_setUpItemViewListeners:function(a){var b=this;return f.prototype._setUpItemViewListeners.call(b,a),b.listenTo(a,{"expanded:drilldown":function(a,b){this._expandDrilldownPanel(b)},"collapsed:drilldown":function(a,b){this._collapseDrilldownPanel(b)}})},setCurrentContent:function(a){this.$(".history-content.current-content").removeClass("current-content"),a?(a.$el.addClass("current-content"),this.currentContentId=a.model.id):this.currentContentId=null},_setCurrentContentById:function(a){var b=this.viewFromModelId(a)||null;this.setCurrentContent(b)},_expandDrilldownPanel:function(a){this.panelStack.push(a),this.$controls().add(this.$list()).hide(),a.parentName=this.model.get("name"),a.delegateEvents().render().$el.appendTo(this.$el)},_collapseDrilldownPanel:function(){this.panelStack.pop(),this.$controls().add(this.$list()).show()},events:_.extend(_.clone(f.prototype.events),{"click .uploader-link":function(a){Galaxy.upload.show(a)},"click .get-data-link":function(){var a=$(".toolMenuContainer");a.parent().scrollTop(0),a.find('span:contains("Get Data")').click()}}),listenToGalaxy:function(a){this.listenTo(a,{"galaxy_main:load":function(a){var b=a.fullpath,c=null,d={display:/datasets\/([a-f0-9]+)\/display/,edit:/datasets\/([a-f0-9]+)\/edit/,report_error:/dataset\/errors\?id=([a-f0-9]+)/,rerun:/tool_runner\/rerun\?id=([a-f0-9]+)/,show_params:/datasets\/([a-f0-9]+)\/show_params/};_.find(d,function(a){return c=_.result(b.match(a),1)}),this._setCurrentContentById(c?"dataset-"+c:null)},"center-panel:load":function(){this._setCurrentContentById()}})},connectToQuotaMeter:function(a){return a?(this.listenTo(a,"quota:over",this.showQuotaMessage),this.listenTo(a,"quota:under",this.hideQuotaMessage),this.on("rendered rendered:initial",function(){a&&a.isOverQuota()&&this.showQuotaMessage()}),this):this},clearMessages:function(a){var b=_.isUndefined(a)?this.$messages().children('[class$="message"]'):$(a.currentTarget);return b=b.not(".quota-message"),b.fadeOut(this.fxSpeed,function(){$(this).remove()}),this},showQuotaMessage:function(){var a=this.$(".quota-message");a.is(":hidden")&&a.slideDown(this.fxSpeed)},hideQuotaMessage:function(){var a=this.$(".quota-message");a.is(":hidden")||a.slideUp(this.fxSpeed)},unhideHidden:function(){var a=this;return confirm(d("Really unhide all hidden datasets?"))?a.model.contents._filterAndUpdate({visible:!1,deleted:"",purged:""},{visible:!0}).done(function(){a.model.contents.includeHidden||a.renderItems()}):jQuery.when()},deleteHidden:function(){var a=this;return confirm(d("Really delete all hidden datasets?"))?a.model.contents._filterAndUpdate({visible:!1,deleted:"",purged:""},{deleted:!0,visible:!0}):jQuery.when()},toString:function(){return"CurrentHistoryView("+(this.model?this.model.get("name"):"")+")"}});return g.prototype.templates=function(){var a=c.wrapTemplate(['
                          ',d("You are over your disk quota"),". ",d("Tool execution is on hold until your disk usage drops below your allocated quota"),".","
                          "],"history");return _.extend(_.clone(f.prototype.templates),{quotaMsg:a})}(),{CurrentHistoryView:g}}); -//# sourceMappingURL=../../../maps/mvc/history/history-view-edit-current.js.map \ No newline at end of file +define(["mvc/history/history-model","mvc/history/history-view-edit","mvc/base-mvc","utils/localization"],function(e,t,n,o){"use strict";var i=n.SessionStorageModel.extend({defaults:{tagsEditorShown:!1,annotationEditorShown:!1,scrollPosition:0},toString:function(){return"HistoryViewPrefs("+JSON.stringify(this.toJSON())+")"}});i.storageKey=function(){return"history-panel"};var s=t.HistoryViewEdit,r=s.extend({className:s.prototype.className+" current-history-panel",HDCAViewClass:s.prototype.HDCAViewClass.extend({foldoutStyle:"drilldown"}),emptyMsg:[o("This history is empty"),". ",o("You can "),'',o("load your own data"),"",o(" or "),'',o("get data from an external source"),""].join(""),initialize:function(e){e=e||{},this.preferences=new i(_.extend({id:i.storageKey()},_.pick(e,_.keys(i.prototype.defaults)))),s.prototype.initialize.call(this,e),this.panelStack=[],this.currentContentId=e.currentContentId||null},_setUpListeners:function(){s.prototype._setUpListeners.call(this);var e=this;this.on("new-model",function(){e.preferences.set("scrollPosition",0)})},loadCurrentHistory:function(){return this.loadHistory(null,{url:Galaxy.root+"history/current_history_json"})},switchToHistory:function(e,t){return Galaxy.user.isAnonymous()?(this.trigger("error",o("You must be logged in to switch histories"),o("Anonymous user")),$.when()):this.loadHistory(e,{url:Galaxy.root+"history/set_as_current?id="+e})},createNewHistory:function(e){return Galaxy.user.isAnonymous()?(this.trigger("error",o("You must be logged in to create histories"),o("Anonymous user")),$.when()):this.loadHistory(null,{url:Galaxy.root+"history/create_new_current"})},setModel:function(e,t,n){return s.prototype.setModel.call(this,e,t,n),this.model&&this.model.id&&(this.log("checking for updates"),this.model.checkForUpdates()),this},_setUpModelListeners:function(){return s.prototype._setUpModelListeners.call(this),this.listenTo(this.model,{"change:nice_size change:size":function(){this.trigger("history-size-change",this,this.model,arguments)},"change:id":function(){this.once("loading-done",function(){this.model.checkForUpdates()})}})},_setUpCollectionListeners:function(){s.prototype._setUpCollectionListeners.call(this),this.listenTo(this.collection,"state:ready",function(e,t,n){e.get("visible")||this.collection.storage.includeHidden()||this.removeItemView(e)})},_setUpBehaviors:function(e){e=e||this.$el;var t=this;return s.prototype._setUpBehaviors.call(t,e),this._debouncedScrollCaptureHandler||(this._debouncedScrollCaptureHandler=_.debounce(function(){t.$el.is(":visible")&&t.preferences.set("scrollPosition",$(this).scrollTop())},40)),t.$scrollContainer(e).off("scroll",this._debouncedScrollCaptureHandler).on("scroll",this._debouncedScrollCaptureHandler),t},_buildNewRender:function(){if(!this.model)return $();var e=s.prototype._buildNewRender.call(this);return e.find(".search").prependTo(e.find("> .controls")),this._renderQuotaMessage(e),e},_renderQuotaMessage:function(e){return e=e||this.$el,$(this.templates.quotaMsg({},this)).prependTo(e.find(".messages"))},_renderTags:function(e){var t=this;s.prototype._renderTags.call(t,e),t.preferences.get("tagsEditorShown")&&t.tagsEditor.toggle(!0),t.listenTo(t.tagsEditor,"hiddenUntilActivated:shown hiddenUntilActivated:hidden",function(e){t.preferences.set("tagsEditorShown",e.hidden)})},_renderAnnotation:function(e){var t=this;s.prototype._renderAnnotation.call(t,e),t.preferences.get("annotationEditorShown")&&t.annotationEditor.toggle(!0),t.listenTo(t.annotationEditor,"hiddenUntilActivated:shown hiddenUntilActivated:hidden",function(e){t.preferences.set("annotationEditorShown",e.hidden)})},_swapNewRender:function(e){s.prototype._swapNewRender.call(this,e);var t=this;return _.delay(function(){var e=t.preferences.get("scrollPosition");e&&t.scrollTo(e,0)},10),this},_attachItems:function(e){s.prototype._attachItems.call(this,e);var t=this;return t.currentContentId&&t._setCurrentContentById(t.currentContentId),this},addItemView:function(e,t,n){var o=s.prototype.addItemView.call(this,e,t,n);return o&&this.panelStack.length?this._collapseDrilldownPanel():o},_setUpItemViewListeners:function(e){var t=this;return s.prototype._setUpItemViewListeners.call(t,e),t.listenTo(e,{"expanded:drilldown":function(e,t){this._expandDrilldownPanel(t)},"collapsed:drilldown":function(e,t){this._collapseDrilldownPanel(t)}})},setCurrentContent:function(e){this.$(".history-content.current-content").removeClass("current-content"),e?(e.$el.addClass("current-content"),this.currentContentId=e.model.id):this.currentContentId=null},_setCurrentContentById:function(e){var t=this.viewFromModelId(e)||null;this.setCurrentContent(t)},_expandDrilldownPanel:function(e){this.panelStack.push(e),this.$controls().add(this.$list()).hide(),e.parentName=this.model.get("name"),e.delegateEvents().render().$el.appendTo(this.$el)},_collapseDrilldownPanel:function(e){this.panelStack.pop(),this.$controls().add(this.$list()).show()},events:_.extend(_.clone(s.prototype.events),{"click .uploader-link":function(e){Galaxy.upload.show(e)},"click .get-data-link":function(e){var t=$(".toolMenuContainer");t.parent().scrollTop(0),t.find('span:contains("Get Data")').click()}}),listenToGalaxy:function(e){this.listenTo(e,{"galaxy_main:load":function(e){var t=e.fullpath,n=null,o={display:/datasets\/([a-f0-9]+)\/display/,edit:/datasets\/([a-f0-9]+)\/edit/,report_error:/dataset\/errors\?id=([a-f0-9]+)/,rerun:/tool_runner\/rerun\?id=([a-f0-9]+)/,show_params:/datasets\/([a-f0-9]+)\/show_params/};_.find(o,function(e,o){return n=_.result(t.match(e),1)}),this._setCurrentContentById(n?"dataset-"+n:null)},"center-panel:load":function(e){this._setCurrentContentById()}})},connectToQuotaMeter:function(e){return e?(this.listenTo(e,"quota:over",this.showQuotaMessage),this.listenTo(e,"quota:under",this.hideQuotaMessage),this.on("rendered rendered:initial",function(){e&&e.isOverQuota()&&this.showQuotaMessage()}),this):this},clearMessages:function(e){var t=_.isUndefined(e)?this.$messages().children('[class$="message"]'):$(e.currentTarget);return t=t.not(".quota-message"),t.fadeOut(this.fxSpeed,function(){$(this).remove()}),this},showQuotaMessage:function(){var e=this.$(".quota-message");e.is(":hidden")&&e.slideDown(this.fxSpeed)},hideQuotaMessage:function(){var e=this.$(".quota-message");e.is(":hidden")||e.slideUp(this.fxSpeed)},unhideHidden:function(){var e=this;return confirm(o("Really unhide all hidden datasets?"))?e.model.contents._filterAndUpdate({visible:!1,deleted:"",purged:""},{visible:!0}).done(function(){e.model.contents.includeHidden||e.renderItems()}):jQuery.when()},deleteHidden:function(){var e=this;return confirm(o("Really delete all hidden datasets?"))?e.model.contents._filterAndUpdate({visible:!1,deleted:"",purged:""},{deleted:!0,visible:!0}):jQuery.when()},toString:function(){return"CurrentHistoryView("+(this.model?this.model.get("name"):"")+")"}});return r.prototype.templates=function(){var e=n.wrapTemplate(['
                          ',o("You are over your disk quota"),". ",o("Tool execution is on hold until your disk usage drops below your allocated quota"),".","
                          "],"history");return _.extend(_.clone(s.prototype.templates),{quotaMsg:e})}(),{CurrentHistoryView:r}}); +//# sourceMappingURL=../../../maps/mvc/history/history-view-edit-current.js.map diff --git a/static/scripts/mvc/history/history-view-edit.js b/static/scripts/mvc/history/history-view-edit.js index 35af7d8e8c1..85e46bc403f 100644 --- a/static/scripts/mvc/history/history-view-edit.js +++ b/static/scripts/mvc/history/history-view-edit.js @@ -1,2 +1,2 @@ -define(["mvc/history/history-view","mvc/history/history-contents","mvc/dataset/states","mvc/history/hda-model","mvc/history/hda-li-edit","mvc/history/hdca-li-edit","mvc/tag","mvc/annotation","mvc/collection/list-collection-creator","mvc/collection/pair-collection-creator","mvc/collection/list-of-pairs-collection-creator","ui/fa-icon-button","mvc/ui/popup-menu","mvc/base-mvc","utils/localization","ui/editable-text"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){"use strict";var p=a.HistoryView,q=p.extend({HDAViewClass:e.HDAListItemEdit,HDCAViewClass:f.HDCAListItemEdit,initialize:function(a){a=a||{},p.prototype.initialize.call(this,a),this.tagsEditor=null,this.annotationEditor=null,this.purgeAllowed=a.purgeAllowed||!1,this.annotationEditorShown=a.annotationEditorShown||!1,this.tagsEditorShown=a.tagsEditorShown||!1},_setUpListeners:function(){return p.prototype._setUpListeners.call(this),this.on({"droptarget:drop":function(a,b){this.dataDropped(b),this.dropTargetOff()},"view:attached view:removed":function(){this._renderCounts()},"search:loading-progress":this._renderSearchProgress,"search:searching":this._renderSearchFindings})},_setUpModelListeners:function(){return p.prototype._setUpModelListeners.call(this),this.listenTo(this.model,"change:size",this.updateHistoryDiskSize),this},_setUpCollectionListeners:function(){return p.prototype._setUpCollectionListeners.call(this),this.listenTo(this.collection,{"change:deleted":this._handleItemDeletedChange,"change:visible":this._handleItemVisibleChange,"change:purged":function(){this.model.fetch()},"fetching-deleted":function(){this.$("> .controls .deleted-count").html(""+o("loading...")+"")},"fetching-hidden":function(){this.$("> .controls .hidden-count").html(""+o("loading...")+"")},"fetching-deleted-done fetching-hidden-done":this._renderCounts}),this},_buildNewRender:function(){var a=p.prototype._buildNewRender.call(this);return this.model?(Galaxy&&Galaxy.user&&Galaxy.user.id&&Galaxy.user.id===this.model.get("user_id")&&(this._renderTags(a),this._renderAnnotation(a)),a):a},updateHistoryDiskSize:function(){this.$(".history-size").text(this.model.get("nice_size"))},renderItems:function(a){var b=p.prototype.renderItems.call(this,a);return this.searchFor||this._renderCounts(a),b},_renderCounts:function(a){a=a instanceof jQuery?a:this.$el;var b=this.templates.counts(this.model.toJSON(),this);return a.find("> .controls .subtitle").html(b)},_renderTags:function(a){var b=this;this.tagsEditor=new g.TagsEditor({model:this.model,el:a.find(".controls .tags-display"),onshowFirstTime:function(){this.render()},onshow:function(){b.toggleHDATagEditors(!0,b.fxSpeed)},onhide:function(){b.toggleHDATagEditors(!1,b.fxSpeed)},$activator:l({title:o("Edit history tags"),classes:"history-tag-btn",faIcon:"fa-tags"}).appendTo(a.find(".controls .actions"))})},_renderAnnotation:function(a){var b=this;this.annotationEditor=new h.AnnotationEditor({model:this.model,el:a.find(".controls .annotation-display"),onshowFirstTime:function(){this.render()},onshow:function(){b.toggleHDAAnnotationEditors(!0,b.fxSpeed)},onhide:function(){b.toggleHDAAnnotationEditors(!1,b.fxSpeed)},$activator:l({title:o("Edit history annotation"),classes:"history-annotate-btn",faIcon:"fa-comment"}).appendTo(a.find(".controls .actions"))})},_setUpBehaviors:function(a){if(a=a||this.$el,p.prototype._setUpBehaviors.call(this,a),this.model&&Galaxy.user&&!Galaxy.user.isAnonymous()&&Galaxy.user.id===this.model.get("user_id")){var b=this,c="> .controls .name";a.find(c).attr("title",o("Click to rename history")).tooltip({placement:"bottom"}).make_text_editable({on_finish:function(a){var d=b.model.get("name");a&&a!==d?(b.$el.find(c).text(a),b.model.save({name:a}).fail(function(){b.$el.find(c).text(b.model.previous("name"))})):b.$el.find(c).text(d)}})}},multiselectActions:function(){var a=this,b=[{html:o("Hide datasets"),func:function(){var b=d.HistoryDatasetAssociation.prototype.hide;a.getSelectedModels().ajaxQueue(b)}},{html:o("Unhide datasets"),func:function(){var b=d.HistoryDatasetAssociation.prototype.unhide;a.getSelectedModels().ajaxQueue(b)}},{html:o("Delete datasets"),func:function(){var b=d.HistoryDatasetAssociation.prototype.delete;a.getSelectedModels().ajaxQueue(b)}},{html:o("Undelete datasets"),func:function(){var b=d.HistoryDatasetAssociation.prototype.undelete;a.getSelectedModels().ajaxQueue(b)}}];return a.purgeAllowed&&b.push({html:o("Permanently delete datasets"),func:function(){if(confirm(o("This will permanently remove the data in your datasets. Are you sure?"))){var b=d.HistoryDatasetAssociation.prototype.purge;a.getSelectedModels().ajaxQueue(b)}}}),b=b.concat(a._collectionActions())},_collectionActions:function(){var a=this;return[{html:o("Build Dataset List"),func:function(){a.buildCollection("list")}},{html:o("Build Dataset Pair"),func:function(){a.buildCollection("paired")}},{html:o("Build List of Dataset Pairs"),func:function(){a.buildCollection("list:paired")}}]},buildCollection:function(a,b,c){var d,e=this,b=b||e.getSelectedModels(),c=c||!1;"list"==a?d=i.createListCollection:"paired"==a?d=j.createPairCollection:"list:paired"==a?d=k.createListOfPairsCollection:console.warn("Unknown collectionType encountered "+a),d(b,c).done(function(){e.model.refresh()})},_getItemViewOptions:function(a){var b=p.prototype._getItemViewOptions.call(this,a);return _.extend(b,{purgeAllowed:this.purgeAllowed,tagsEditorShown:this.tagsEditor&&!this.tagsEditor.hidden,annotationEditorShown:this.annotationEditor&&!this.annotationEditor.hidden}),b},_handleItemDeletedChange:function(a){a.get("deleted")?this._handleItemDeletion(a):this._handleItemUndeletion(a),this._renderCounts()},_handleItemDeletion:function(a){var b=this.model.get("contents_active");b.deleted+=1,b.active-=1,this.model.contents.includeDeleted||this.removeItemView(a),this.model.set("contents_active",b)},_handleItemUndeletion:function(){var a=this.model.get("contents_active");a.deleted-=1,this.model.contents.includeDeleted||(a.active-=1),this.model.set("contents_active",a)},_handleItemVisibleChange:function(a){a.hidden()?this._handleItemHidden(a):this._handleItemUnhidden(a),this._renderCounts()},_handleItemHidden:function(a){var b=this.model.get("contents_active");b.hidden+=1,b.active-=1,this.model.contents.includeHidden||this.removeItemView(a),this.model.set("contents_active",b)},_handleItemUnhidden:function(){var a=this.model.get("contents_active");a.hidden-=1,this.model.contents.includeHidden||(a.active-=1),this.model.set("contents_active",a)},toggleHDATagEditors:function(a,b){_.each(this.views,function(c){c.tagsEditor&&c.tagsEditor.toggle(a,b)})},toggleHDAAnnotationEditors:function(a,b){_.each(this.views,function(c){c.annotationEditor&&c.annotationEditor.toggle(a,b)})},events:_.extend(_.clone(p.prototype.events),{"click .show-selectors-btn":"toggleSelectors","click .toggle-deleted-link":function(){this.toggleShowDeleted()},"click .toggle-hidden-link":function(){this.toggleShowHidden()}}),_renderSearchProgress:function(a,b){var c=a+b;return this.$("> .controls .subtitle").html(["",o("Searching "),c,"/",this.model.contentsShown(),""].join(""))},_renderSearchFindings:function(){return this.$("> .controls .subtitle").html([o("Found"),this.views.length].join(" ")),this},dropTargetOn:function(){if(this.dropTarget)return this;this.dropTarget=!0;var a={dragenter:_.bind(this.dragenter,this),dragover:_.bind(this.dragover,this),dragleave:_.bind(this.dragleave,this),drop:_.bind(this.drop,this)},b=this._renderDropTarget();this.$list().before([this._renderDropTargetHelp(),b]);for(var c in a)a.hasOwnProperty(c)&&b.on(c,a[c]);return this},_renderDropTarget:function(){return this.$(".history-drop-target").remove(),$("
                          ").addClass("history-drop-target")},_renderDropTargetHelp:function(){return this.$(".history-drop-target-help").remove(),$("
                          ").addClass("history-drop-target-help").text(o("Drag datasets here to copy them to the current history"))},dropTargetOff:function(){if(!this.dropTarget)return this;this.dropTarget=!1;var a=this.$(".history-drop-target").get(0);for(var b in this._dropHandlers)this._dropHandlers.hasOwnProperty(b)&&a.off(b,this._dropHandlers[b]);return this.$(".history-drop-target").remove(),this.$(".history-drop-target-help").remove(),this},dropTargetToggle:function(){return this.dropTarget?this.dropTargetOff():this.dropTargetOn(),this},dragenter:function(a){a.preventDefault(),a.stopPropagation(),this.$(".history-drop-target").css("border","2px solid black")},dragover:function(a){a.preventDefault(),a.stopPropagation()},dragleave:function(a){a.preventDefault(),a.stopPropagation(),this.$(".history-drop-target").css("border","1px dashed black")},drop:function(a){a.preventDefault();var b=this,c=a.originalEvent.dataTransfer,d=c.getData("text");c.dropEffect="move";try{d=JSON.parse(d)}catch(e){b.warn("error parsing JSON from drop:",d)}return b.trigger("droptarget:drop",a,d,b),!1},dataDropped:function(a){var b=this;return _.isObject(a)&&"HistoryDatasetAssociation"===a.model_class&&a.id?0!==b.contents.currentPage?b.contents.fetchPage(0).then(function(){return b.model.contents.copy(a.id)}):b.model.contents.copy(a.id):jQuery.when()},toString:function(){return"HistoryViewEdit("+(this.model?this.model.get("name"):"")+")"}});return q.prototype.templates=function(){var a=n.wrapTemplate(["<% var shown = Math.max( view.views.length, history.contents_active.active ) %>","<% if( shown ){ %>",'',"<%- shown %> ",o("shown"),"","<% } %>","<% if( history.contents_active.deleted ){ %>",'',"<% if( view.model.contents.includeDeleted ){ %>",'',o("hide deleted"),"","<% } else { %>","<%- history.contents_active.deleted %> ",'',o("deleted"),"","<% } %>","","<% } %>","<% if( history.contents_active.hidden ){ %>",'',"<% if( view.model.contents.includeHidden ){ %>",'',o("hide hidden"),"","<% } else { %>","<%- history.contents_active.hidden %> ",'',o("hidden"),"","<% } %>","","<% } %>"],"history");return _.extend(_.clone(p.prototype.templates),{counts:a})}(),{HistoryViewEdit:q}}); -//# sourceMappingURL=../../../maps/mvc/history/history-view-edit.js.map \ No newline at end of file +define(["mvc/history/history-view","mvc/history/history-contents","mvc/dataset/states","mvc/history/hda-model","mvc/history/hda-li-edit","mvc/history/hdca-li-edit","mvc/tag","mvc/annotation","mvc/collection/list-collection-creator","mvc/collection/pair-collection-creator","mvc/collection/list-of-pairs-collection-creator","ui/fa-icon-button","mvc/ui/popup-menu","mvc/base-mvc","utils/localization","ui/editable-text"],function(t,e,i,n,o,s,r,a,d,l,c,h,u,p,g){"use strict";var f=t.HistoryView,m=f.extend({HDAViewClass:o.HDAListItemEdit,HDCAViewClass:s.HDCAListItemEdit,initialize:function(t){t=t||{},f.prototype.initialize.call(this,t),this.tagsEditor=null,this.annotationEditor=null,this.purgeAllowed=t.purgeAllowed||!1,this.annotationEditorShown=t.annotationEditorShown||!1,this.tagsEditorShown=t.tagsEditorShown||!1},_setUpListeners:function(){return f.prototype._setUpListeners.call(this),this.on({"droptarget:drop":function(t,e){this.dataDropped(e),this.dropTargetOff()},"view:attached view:removed":function(){this._renderCounts()},"search:loading-progress":this._renderSearchProgress,"search:searching":this._renderSearchFindings})},_setUpModelListeners:function(){return f.prototype._setUpModelListeners.call(this),this.listenTo(this.model,"change:size",this.updateHistoryDiskSize),this},_setUpCollectionListeners:function(){return f.prototype._setUpCollectionListeners.call(this),this.listenTo(this.collection,{"change:deleted":this._handleItemDeletedChange,"change:visible":this._handleItemVisibleChange,"change:purged":function(t){this.model.fetch()},"fetching-deleted":function(t){this.$("> .controls .deleted-count").html(""+g("loading...")+"")},"fetching-hidden":function(t){this.$("> .controls .hidden-count").html(""+g("loading...")+"")},"fetching-deleted-done fetching-hidden-done":this._renderCounts}),this},_buildNewRender:function(){var t=f.prototype._buildNewRender.call(this);return this.model?(Galaxy&&Galaxy.user&&Galaxy.user.id&&Galaxy.user.id===this.model.get("user_id")&&(this._renderTags(t),this._renderAnnotation(t)),t):t},updateHistoryDiskSize:function(){this.$(".history-size").text(this.model.get("nice_size"))},renderItems:function(t){var e=f.prototype.renderItems.call(this,t);return this.searchFor||this._renderCounts(t),e},_renderCounts:function(t){t=t instanceof jQuery?t:this.$el;var e=this.templates.counts(this.model.toJSON(),this);return t.find("> .controls .subtitle").html(e)},_renderTags:function(t){var e=this;this.tagsEditor=new r.TagsEditor({model:this.model,el:t.find(".controls .tags-display"),onshowFirstTime:function(){this.render()},onshow:function(){e.toggleHDATagEditors(!0,e.fxSpeed)},onhide:function(){e.toggleHDATagEditors(!1,e.fxSpeed)},$activator:h({title:g("Edit history tags"),classes:"history-tag-btn",faIcon:"fa-tags"}).appendTo(t.find(".controls .actions"))})},_renderAnnotation:function(t){var e=this;this.annotationEditor=new a.AnnotationEditor({model:this.model,el:t.find(".controls .annotation-display"),onshowFirstTime:function(){this.render()},onshow:function(){e.toggleHDAAnnotationEditors(!0,e.fxSpeed)},onhide:function(){e.toggleHDAAnnotationEditors(!1,e.fxSpeed)},$activator:h({title:g("Edit history annotation"),classes:"history-annotate-btn",faIcon:"fa-comment"}).appendTo(t.find(".controls .actions"))})},_setUpBehaviors:function(t){if(t=t||this.$el,f.prototype._setUpBehaviors.call(this,t),this.model&&Galaxy.user&&!Galaxy.user.isAnonymous()&&Galaxy.user.id===this.model.get("user_id")){var e=this;t.find("> .controls .name").attr("title",g("Click to rename history")).tooltip({placement:"bottom"}).make_text_editable({on_finish:function(t){var i=e.model.get("name");t&&t!==i?(e.$el.find("> .controls .name").text(t),e.model.save({name:t}).fail(function(){e.$el.find("> .controls .name").text(e.model.previous("name"))})):e.$el.find("> .controls .name").text(i)}})}},multiselectActions:function(){var t=this,e=[{html:g("Hide datasets"),func:function(){var e=n.HistoryDatasetAssociation.prototype.hide;t.getSelectedModels().ajaxQueue(e)}},{html:g("Unhide datasets"),func:function(){var e=n.HistoryDatasetAssociation.prototype.unhide;t.getSelectedModels().ajaxQueue(e)}},{html:g("Delete datasets"),func:function(){var e=n.HistoryDatasetAssociation.prototype.delete;t.getSelectedModels().ajaxQueue(e)}},{html:g("Undelete datasets"),func:function(){var e=n.HistoryDatasetAssociation.prototype.undelete;t.getSelectedModels().ajaxQueue(e)}}];return t.purgeAllowed&&e.push({html:g("Permanently delete datasets"),func:function(){if(confirm(g("This will permanently remove the data in your datasets. Are you sure?"))){var e=n.HistoryDatasetAssociation.prototype.purge;t.getSelectedModels().ajaxQueue(e)}}}),e=e.concat(t._collectionActions())},_collectionActions:function(){var t=this;return[{html:g("Build Dataset List"),func:function(){t.buildCollection("list")}},{html:g("Build Dataset Pair"),func:function(){t.buildCollection("paired")}},{html:g("Build List of Dataset Pairs"),func:function(){t.buildCollection("list:paired")}}]},buildCollection:function(t,e,i){var n,o=this,e=e||o.getSelectedModels(),i=i||!1;"list"==t?n=d.createListCollection:"paired"==t?n=l.createPairCollection:"list:paired"==t?n=c.createListOfPairsCollection:console.warn("Unknown collectionType encountered "+t),n(e,i).done(function(){o.model.refresh()})},_getItemViewOptions:function(t){var e=f.prototype._getItemViewOptions.call(this,t);return _.extend(e,{purgeAllowed:this.purgeAllowed,tagsEditorShown:this.tagsEditor&&!this.tagsEditor.hidden,annotationEditorShown:this.annotationEditor&&!this.annotationEditor.hidden}),e},_handleItemDeletedChange:function(t){t.get("deleted")?this._handleItemDeletion(t):this._handleItemUndeletion(t),this._renderCounts()},_handleItemDeletion:function(t){var e=this.model.get("contents_active");e.deleted+=1,e.active-=1,this.model.contents.includeDeleted||this.removeItemView(t),this.model.set("contents_active",e)},_handleItemUndeletion:function(t){var e=this.model.get("contents_active");e.deleted-=1,this.model.contents.includeDeleted||(e.active-=1),this.model.set("contents_active",e)},_handleItemVisibleChange:function(t){t.hidden()?this._handleItemHidden(t):this._handleItemUnhidden(t),this._renderCounts()},_handleItemHidden:function(t){var e=this.model.get("contents_active");e.hidden+=1,e.active-=1,this.model.contents.includeHidden||this.removeItemView(t),this.model.set("contents_active",e)},_handleItemUnhidden:function(t){var e=this.model.get("contents_active");e.hidden-=1,this.model.contents.includeHidden||(e.active-=1),this.model.set("contents_active",e)},toggleHDATagEditors:function(t,e){_.each(this.views,function(i){i.tagsEditor&&i.tagsEditor.toggle(t,e)})},toggleHDAAnnotationEditors:function(t,e){_.each(this.views,function(i){i.annotationEditor&&i.annotationEditor.toggle(t,e)})},events:_.extend(_.clone(f.prototype.events),{"click .show-selectors-btn":"toggleSelectors","click .toggle-deleted-link":function(t){this.toggleShowDeleted()},"click .toggle-hidden-link":function(t){this.toggleShowHidden()}}),_renderSearchProgress:function(t,e){var i=t+e;return this.$("> .controls .subtitle").html(["",g("Searching "),i,"/",this.model.contentsShown(),""].join(""))},_renderSearchFindings:function(){return this.$("> .controls .subtitle").html([g("Found"),this.views.length].join(" ")),this},dropTargetOn:function(){if(this.dropTarget)return this;this.dropTarget=!0;var t={dragenter:_.bind(this.dragenter,this),dragover:_.bind(this.dragover,this),dragleave:_.bind(this.dragleave,this),drop:_.bind(this.drop,this)},e=this._renderDropTarget();this.$list().before([this._renderDropTargetHelp(),e]);for(var i in t)t.hasOwnProperty(i)&&e.on(i,t[i]);return this},_renderDropTarget:function(){return this.$(".history-drop-target").remove(),$("
                          ").addClass("history-drop-target")},_renderDropTargetHelp:function(){return this.$(".history-drop-target-help").remove(),$("
                          ").addClass("history-drop-target-help").text(g("Drag datasets here to copy them to the current history"))},dropTargetOff:function(){if(!this.dropTarget)return this;this.dropTarget=!1;var t=this.$(".history-drop-target").get(0);for(var e in this._dropHandlers)this._dropHandlers.hasOwnProperty(e)&&t.off(e,this._dropHandlers[e]);return this.$(".history-drop-target").remove(),this.$(".history-drop-target-help").remove(),this},dropTargetToggle:function(){return this.dropTarget?this.dropTargetOff():this.dropTargetOn(),this},dragenter:function(t){t.preventDefault(),t.stopPropagation(),this.$(".history-drop-target").css("border","2px solid black")},dragover:function(t){t.preventDefault(),t.stopPropagation()},dragleave:function(t){t.preventDefault(),t.stopPropagation(),this.$(".history-drop-target").css("border","1px dashed black")},drop:function(t){t.preventDefault();var e=this,i=t.originalEvent.dataTransfer,n=i.getData("text");i.dropEffect="move";try{n=JSON.parse(n)}catch(t){e.warn("error parsing JSON from drop:",n)}return e.trigger("droptarget:drop",t,n,e),!1},dataDropped:function(t){var e=this;return _.isObject(t)&&"HistoryDatasetAssociation"===t.model_class&&t.id?0!==e.contents.currentPage?e.contents.fetchPage(0).then(function(){return e.model.contents.copy(t.id)}):e.model.contents.copy(t.id):jQuery.when()},toString:function(){return"HistoryViewEdit("+(this.model?this.model.get("name"):"")+")"}});return m.prototype.templates=function(){var t=p.wrapTemplate(["<% var shown = Math.max( view.views.length, history.contents_active.active ) %>","<% if( shown ){ %>",'',"<%- shown %> ",g("shown"),"","<% } %>","<% if( history.contents_active.deleted ){ %>",'',"<% if( view.model.contents.includeDeleted ){ %>",'',g("hide deleted"),"","<% } else { %>","<%- history.contents_active.deleted %> ",'',g("deleted"),"","<% } %>","","<% } %>","<% if( history.contents_active.hidden ){ %>",'',"<% if( view.model.contents.includeHidden ){ %>",'',g("hide hidden"),"","<% } else { %>","<%- history.contents_active.hidden %> ",'',g("hidden"),"","<% } %>","","<% } %>"],"history");return _.extend(_.clone(f.prototype.templates),{counts:t})}(),{HistoryViewEdit:m}}); +//# sourceMappingURL=../../../maps/mvc/history/history-view-edit.js.map diff --git a/static/scripts/mvc/history/history-view.js b/static/scripts/mvc/history/history-view.js index 8a25ae853ac..af163002bcb 100644 --- a/static/scripts/mvc/history/history-view.js +++ b/static/scripts/mvc/history/history-view.js @@ -1,2 +1,2 @@ -define(["mvc/list/list-view","mvc/history/history-model","mvc/history/history-contents","mvc/history/history-preferences","mvc/history/hda-li","mvc/history/hdca-li","mvc/user/user-model","mvc/ui/error-modal","ui/fa-icon-button","mvc/base-mvc","utils/localization","ui/search-input"],function(a,b,c,d,e,f,g,h,i,j,k){"use strict";var l=a.ModelListPanel,m=l.extend({_logNamespace:"history",HDAViewClass:e.HDAListItemView,HDCAViewClass:f.HDCAListItemView,collectionClass:c.HistoryContents,modelCollectionKey:"contents",tagName:"div",className:l.prototype.className+" history-panel",emptyMsg:k("This history is empty"),noneFoundMsg:k("No matching datasets found"),searchPlaceholder:k("search datasets"),FETCH_COLLECTION_COUNTS_DELAY:2e3,initialize:function(a){l.prototype.initialize.call(this,a),this.linkTarget=a.linkTarget||"_blank"},_createDefaultCollection:function(){return new this.collectionClass([],{history:this.model})},freeModel:function(){return l.prototype.freeModel.call(this),this.model&&this.model.clearUpdateTimeout(),this},_setUpListeners:function(){l.prototype._setUpListeners.call(this),this.on({error:function(a,b,c,d,e){this.errorHandler(a,b,c,d,e)},"loading-done":function(){var a=this;_.delay(function(){a.model.contents.fetchCollectionCounts()},a.FETCH_COLLECTION_COUNTS_DELAY)},"views:ready view:attached view:removed":function(){this._renderSelectButton()},"view:attached":function(){this.scrollTo(0)}})},loadHistory:function(a,c,d){d=_.extend(d||{silent:!0}),this.info("loadHistory:",a,c,d);var e=this;return e.setModel(new b.History({id:a})),d.silent=!0,e.trigger("loading"),e.model.fetchWithContents(c,d).always(function(){e.render(),e.trigger("loading-done")})},refreshContents:function(a){return this.model?this.model.refresh(a):$.when()},_setUpCollectionListeners:function(){return l.prototype._setUpCollectionListeners.call(this),this.listenTo(this.collection,{"fetching-more":function(){this._toggleContentsLoadingIndicator(!0),this.$emptyMessage().hide()},"fetching-more-done":function(){this._toggleContentsLoadingIndicator(!1)}})},_showLoadingIndicator:function(a,b){var c=$('
                          ');this.$el.html(c.text(a).slideDown(_.isUndefined(b)?this.fxSpeed:b))},_hideLoadingIndicator:function(a){this.$(".loading-indicator").slideUp(_.isUndefined(a)?this.fxSpeed+200:a,function(){$(this).remove()})},_buildNewRender:function(){var a=l.prototype._buildNewRender.call(this);return this._renderSelectButton(a),a},_renderSelectButton:function(a){if(a=a||this.$el,!this.multiselectActions().length)return null;if(!this.views.length)return this.hideSelectors(),a.find(".controls .actions .show-selectors-btn").remove(),null;var b=a.find(".controls .actions .show-selectors-btn");return b.length?b:i({title:k("Operations on multiple datasets"),classes:"show-selectors-btn",faIcon:"fa-check-square-o"}).prependTo(a.find(".controls .actions"))},_renderEmptyMessage:function(a){var b=this,c=b.$emptyMessage(a),d=b.model.get("contents_active").active<=0;return d?c.empty().append(b.emptyMsg).show():b.searchFor&&b.model.contents.haveSearchDetails()&&!b.views.length?c.empty().append(b.noneFoundMsg).show():(c.hide(),$())},$scrollContainer:function(a){return this.$list(a)},_toggleContentsLoadingIndicator:function(a){a?this.$list().html('
                          '):this.$list().find(".contents-loading-indicator").remove()},renderItems:function(a){a=a||this.$el;var b=this,c=b.$list(a);$(".tooltip").remove(),c.empty(),b.views=[];var d=b._filterCollection();return d.length?(b._renderPagination(a),b.views=b._renderSomeItems(d,c)):a.find("> .controls .list-pagination").empty(),b._renderEmptyMessage(a).toggle(!d.length),b.trigger("views:ready",b.views),b.views},_renderPagination:function(a){var b=a.find("> .controls .list-pagination");return this.searchFor||!this.model.contents.shouldPaginate()?b.empty():(b.html(this.templates.pagination({current:this.model.contents.currentPage+1,last:this.model.contents.getLastPage()+1},this)),b.find("select.pages").tooltip(),b)},_renderSomeItems:function(a,b){var c=this,d=[];return b.append(a.map(function(a){var b=c._createItemView(a);return d.push(b),c._renderItemView$el(b)})),d},_filterItem:function(a){var b=this,c=b.model.contents;return(c.includeHidden||!a.hidden())&&(c.includeDeleted||!a.isDeletedOrPurged())&&l.prototype._filterItem.call(b,a)},_getItemViewClass:function(a){var b=a.get("history_content_type");switch(b){case"dataset":return this.HDAViewClass;case"dataset_collection":return this.HDCAViewClass}throw new TypeError("Unknown history_content_type: "+b)},_getItemViewOptions:function(a){var b=l.prototype._getItemViewOptions.call(this,a);return _.extend(b,{linkTarget:this.linkTarget,expanded:this.model.contents.storage.isExpanded(a.id),hasUser:this.model.ownedByCurrUser()})},_setUpItemViewListeners:function(a){var b=this;return l.prototype._setUpItemViewListeners.call(b,a),b.listenTo(a,{expanded:function(a){b.model.contents.storage.addExpanded(a.model)},collapsed:function(a){b.model.contents.storage.removeExpanded(a.model)}})},collapseAll:function(){this.model.contents.storage.clearExpanded(),l.prototype.collapseAll.call(this)},getSelectedModels:function(){var a=l.prototype.getSelectedModels.call(this);return a.historyId=this.collection.historyId,a},events:_.extend(_.clone(l.prototype.events),{"click .show-selectors-btn":"toggleSelectors","click > .controls .prev":"_clickPrevPage","click > .controls .next":"_clickNextPage","change > .controls .pages":"_changePageSelect","click .messages [class$=message]":"clearMessages"}),_clickPrevPage:function(){this.model.clearUpdateTimeout(),this.model.contents.fetchPrevPage()},_clickNextPage:function(){this.model.clearUpdateTimeout(),this.model.contents.fetchNextPage()},_changePageSelect:function(a){this.model.clearUpdateTimeout();var b=$(a.currentTarget).val();this.model.contents.fetchPage(b)},toggleShowDeleted:function(a,b){a=void 0!==a?a:!this.model.contents.includeDeleted;var c=this,d=c.model.contents;return d.setIncludeDeleted(a,b),c.trigger("show-deleted",a),d.fetchCurrentPage({renderAll:!0}),a},toggleShowHidden:function(a,b,c){a=void 0!==a?a:!this.model.contents.includeHidden;var d=this,e=d.model.contents;return e.setIncludeHidden(a,c),d.trigger("show-hidden",a),e.fetchCurrentPage({renderAll:!0}),a},_firstSearch:function(a){var b=this,c="> .controls .search-input";if(this.log("onFirstSearch",a),b.model.contents.haveSearchDetails())return void b.searchItems(a);b.$(c).searchInput("toggle-loading"),b.searchFor=a;b.model.contents.progressivelyFetchDetails({silent:!0}).progress(function(a,c,d){b.renderItems(),b.trigger("search:loading-progress",c,d)}).always(function(){b.$el.find(c).searchInput("toggle-loading")}).done(function(){b.searchItems(a,"force")})},clearSearch:function(){var a=this;return a.searchFor?(a.searchFor="",a.trigger("search:clear",a),a.$("> .controls .search-query").val(""),a.model.contents.fetchCurrentPage({silent:!0}).done(function(){a.renderItems()}),a):a},errorHandler:function(a,b,c){if(!b||0!==b.status||0!==b.readyState){if(this.error(a,b,c),_.isString(a)&&_.isString(b)){var d=a,e=b;return h.errorModal(d,e,c)}return b&&502===b.status?h.badGatewayErrorModal():h.ajaxErrorModal(a,b,c)}},clearMessages:function(a){var b=_.isUndefined(a)?this.$messages().children('[class$="message"]'):$(a.currentTarget);return b.fadeOut(this.fxSpeed,function(){$(this).remove()}),this},scrollToHid:function(a){return this.scrollToItem(_.first(this.viewsWhereModel({hid:a})))},ordinalIndicator:function(a){var b=a+"";switch(b.charAt(b.length-1)){case"1":return b+"st";case"2":return b+"nd";case"3":return b+"rd";default:return b+"th"}},toString:function(){return"HistoryView("+(this.model?this.model.get("name"):"")+")"}});return m.prototype.templates=function(){var a=j.wrapTemplate(["
                          ",'
                          ','
                            ','
                            ',"
                            "]),b=j.wrapTemplate(['
                            ','
                            ','
                            <%- history.name %>
                            ',"
                            ",'
                            ','
                            <%- history.nice_size %>
                            ','
                            ','
                            ',"<% if( history.deleted && history.purged ){ %>",'
                            ',k("This history has been purged and deleted"),"
                            ","<% } else if( history.deleted ){ %>",'
                            ',k("This history has been deleted"),"
                            ","<% } else if( history.purged ){ %>",'
                            ',k("This history has been purged"),"
                            ","<% } %>","<% if( history.message ){ %>",'
                            messagesmall">',"<%= history.message.text %>","
                            ","<% } %>","
                            ",'
                            ','
                            ','",'
                            ','
                            ','",'","
                            ",'
                            ',"
                            ","
                            ",'
                            ',"
                            "],"history"),c=j.wrapTemplate(['','",''],"pages");return _.extend(_.clone(l.prototype.templates),{el:a,controls:b,pagination:c})}(),{HistoryView:m}}); -//# sourceMappingURL=../../../maps/mvc/history/history-view.js.map \ No newline at end of file +define(["mvc/list/list-view","mvc/history/history-model","mvc/history/history-contents","mvc/history/history-preferences","mvc/history/hda-li","mvc/history/hdca-li","mvc/user/user-model","mvc/ui/error-modal","ui/fa-icon-button","mvc/base-mvc","utils/localization","ui/search-input"],function(e,t,s,i,n,o,r,l,a,c,d){"use strict";var h=e.ModelListPanel,u=h.extend({_logNamespace:"history",HDAViewClass:n.HDAListItemView,HDCAViewClass:o.HDCAListItemView,collectionClass:s.HistoryContents,modelCollectionKey:"contents",tagName:"div",className:h.prototype.className+" history-panel",emptyMsg:d("This history is empty"),noneFoundMsg:d("No matching datasets found"),searchPlaceholder:d("search datasets"),FETCH_COLLECTION_COUNTS_DELAY:2e3,initialize:function(e){h.prototype.initialize.call(this,e),this.linkTarget=e.linkTarget||"_blank"},_createDefaultCollection:function(){return new this.collectionClass([],{history:this.model})},freeModel:function(){return h.prototype.freeModel.call(this),this.model&&this.model.clearUpdateTimeout(),this},_setUpListeners:function(){h.prototype._setUpListeners.call(this),this.on({error:function(e,t,s,i,n){this.errorHandler(e,t,s,i,n)},"loading-done":function(){var e=this;_.delay(function(){e.model.contents.fetchCollectionCounts()},e.FETCH_COLLECTION_COUNTS_DELAY)},"views:ready view:attached view:removed":function(e){this._renderSelectButton()},"view:attached":function(e){this.scrollTo(0)}})},loadHistory:function(e,s,i){i=_.extend(i||{silent:!0}),this.info("loadHistory:",e,s,i);var n=this;return n.setModel(new t.History({id:e})),i.silent=!0,n.trigger("loading"),n.model.fetchWithContents(s,i).always(function(){n.render(),n.trigger("loading-done")})},refreshContents:function(e){return this.model?this.model.refresh(e):$.when()},_setUpCollectionListeners:function(){return h.prototype._setUpCollectionListeners.call(this),this.listenTo(this.collection,{"fetching-more":function(){this._toggleContentsLoadingIndicator(!0),this.$emptyMessage().hide()},"fetching-more-done":function(){this._toggleContentsLoadingIndicator(!1)}})},_showLoadingIndicator:function(e,t,s){var i=$('
                            ');this.$el.html(i.text(e).slideDown(_.isUndefined(t)?this.fxSpeed:t))},_hideLoadingIndicator:function(e){this.$(".loading-indicator").slideUp(_.isUndefined(e)?this.fxSpeed+200:e,function(){$(this).remove()})},_buildNewRender:function(){var e=h.prototype._buildNewRender.call(this);return this._renderSelectButton(e),e},_renderSelectButton:function(e){if(e=e||this.$el,!this.multiselectActions().length)return null;if(!this.views.length)return this.hideSelectors(),e.find(".controls .actions .show-selectors-btn").remove(),null;var t=e.find(".controls .actions .show-selectors-btn");return t.length?t:a({title:d("Operations on multiple datasets"),classes:"show-selectors-btn",faIcon:"fa-check-square-o"}).prependTo(e.find(".controls .actions"))},_renderEmptyMessage:function(e){var t=this,s=t.$emptyMessage(e);return t.model.get("contents_active").active<=0?s.empty().append(t.emptyMsg).show():t.searchFor&&t.model.contents.haveSearchDetails()&&!t.views.length?s.empty().append(t.noneFoundMsg).show():(s.hide(),$())},$scrollContainer:function(e){return this.$list(e)},_toggleContentsLoadingIndicator:function(e){e?this.$list().html('
                            '):this.$list().find(".contents-loading-indicator").remove()},renderItems:function(e){e=e||this.$el;var t=this,s=t.$list(e);$(".tooltip").remove(),s.empty(),t.views=[];var i=t._filterCollection();return i.length?(t._renderPagination(e),t.views=t._renderSomeItems(i,s)):e.find("> .controls .list-pagination").empty(),t._renderEmptyMessage(e).toggle(!i.length),t.trigger("views:ready",t.views),t.views},_renderPagination:function(e){var t=e.find("> .controls .list-pagination");return this.searchFor||!this.model.contents.shouldPaginate()?t.empty():(t.html(this.templates.pagination({current:this.model.contents.currentPage+1,last:this.model.contents.getLastPage()+1},this)),t.find("select.pages").tooltip(),t)},_renderSomeItems:function(e,t){var s=this,i=[];return t.append(e.map(function(e){var t=s._createItemView(e);return i.push(t),s._renderItemView$el(t)})),i},_filterItem:function(e){var t=this,s=t.model.contents;return(s.includeHidden||!e.hidden())&&(s.includeDeleted||!e.isDeletedOrPurged())&&h.prototype._filterItem.call(t,e)},_getItemViewClass:function(e){var t=e.get("history_content_type");switch(t){case"dataset":return this.HDAViewClass;case"dataset_collection":return this.HDCAViewClass}throw new TypeError("Unknown history_content_type: "+t)},_getItemViewOptions:function(e){var t=h.prototype._getItemViewOptions.call(this,e);return _.extend(t,{linkTarget:this.linkTarget,expanded:this.model.contents.storage.isExpanded(e.id),hasUser:this.model.ownedByCurrUser()})},_setUpItemViewListeners:function(e){var t=this;return h.prototype._setUpItemViewListeners.call(t,e),t.listenTo(e,{expanded:function(e){t.model.contents.storage.addExpanded(e.model)},collapsed:function(e){t.model.contents.storage.removeExpanded(e.model)}})},collapseAll:function(){this.model.contents.storage.clearExpanded(),h.prototype.collapseAll.call(this)},getSelectedModels:function(){var e=h.prototype.getSelectedModels.call(this);return e.historyId=this.collection.historyId,e},events:_.extend(_.clone(h.prototype.events),{"click .show-selectors-btn":"toggleSelectors","click > .controls .prev":"_clickPrevPage","click > .controls .next":"_clickNextPage","change > .controls .pages":"_changePageSelect","click .messages [class$=message]":"clearMessages"}),_clickPrevPage:function(e){this.model.clearUpdateTimeout(),this.model.contents.fetchPrevPage()},_clickNextPage:function(e){this.model.clearUpdateTimeout(),this.model.contents.fetchNextPage()},_changePageSelect:function(e){this.model.clearUpdateTimeout();var t=$(e.currentTarget).val();this.model.contents.fetchPage(t)},toggleShowDeleted:function(e,t){e=void 0!==e?e:!this.model.contents.includeDeleted;var s=this,i=s.model.contents;return i.setIncludeDeleted(e,t),s.trigger("show-deleted",e),i.fetchCurrentPage({renderAll:!0}),e},toggleShowHidden:function(e,t,s){e=void 0!==e?e:!this.model.contents.includeHidden;var i=this,n=i.model.contents;return n.setIncludeHidden(e,s),i.trigger("show-hidden",e),n.fetchCurrentPage({renderAll:!0}),e},_firstSearch:function(e){var t=this;if(this.log("onFirstSearch",e),t.model.contents.haveSearchDetails())return void t.searchItems(e);t.$("> .controls .search-input").searchInput("toggle-loading"),t.searchFor=e;t.model.contents.progressivelyFetchDetails({silent:!0}).progress(function(e,s,i){t.renderItems(),t.trigger("search:loading-progress",s,i)}).always(function(){t.$el.find("> .controls .search-input").searchInput("toggle-loading")}).done(function(){t.searchItems(e,"force")})},clearSearch:function(e){var t=this;return t.searchFor?(t.searchFor="",t.trigger("search:clear",t),t.$("> .controls .search-query").val(""),t.model.contents.fetchCurrentPage({silent:!0}).done(function(){t.renderItems()}),t):t},errorHandler:function(e,t,s){if(!t||0!==t.status||0!==t.readyState){if(this.error(e,t,s),_.isString(e)&&_.isString(t)){var i=e,n=t;return l.errorModal(i,n,s)}return t&&502===t.status?l.badGatewayErrorModal():l.ajaxErrorModal(e,t,s)}},clearMessages:function(e){return(_.isUndefined(e)?this.$messages().children('[class$="message"]'):$(e.currentTarget)).fadeOut(this.fxSpeed,function(){$(this).remove()}),this},scrollToHid:function(e){return this.scrollToItem(_.first(this.viewsWhereModel({hid:e})))},ordinalIndicator:function(e){var t=e+"";switch(t.charAt(t.length-1)){case"1":return t+"st";case"2":return t+"nd";case"3":return t+"rd";default:return t+"th"}},toString:function(){return"HistoryView("+(this.model?this.model.get("name"):"")+")"}});return u.prototype.templates=function(){var e=c.wrapTemplate(["
                            ",'
                            ','
                              ','
                              ',"
                              "]),t=c.wrapTemplate(['
                              ','
                              ','
                              <%- history.name %>
                              ',"
                              ",'
                              ','
                              <%- history.nice_size %>
                              ','
                              ','
                              ',"<% if( history.deleted && history.purged ){ %>",'
                              ',d("This history has been purged and deleted"),"
                              ","<% } else if( history.deleted ){ %>",'
                              ',d("This history has been deleted"),"
                              ","<% } else if( history.purged ){ %>",'
                              ',d("This history has been purged"),"
                              ","<% } %>","<% if( history.message ){ %>",'
                              messagesmall">',"<%= history.message.text %>","
                              ","<% } %>","
                              ",'
                              ','
                              ','",'
                              ','
                              ','",'","
                              ",'
                              ',"
                              ","
                              ",'
                              ',"
                              "],"history"),s=c.wrapTemplate(['','",''],"pages");return _.extend(_.clone(h.prototype.templates),{el:e,controls:t,pagination:s})}(),{HistoryView:u}}); +//# sourceMappingURL=../../../maps/mvc/history/history-view.js.map diff --git a/static/scripts/mvc/history/job-dag.js b/static/scripts/mvc/history/job-dag.js index 079f6d1faac..d9c7e4fc60c 100644 --- a/static/scripts/mvc/history/job-dag.js +++ b/static/scripts/mvc/history/job-dag.js @@ -1,2 +1,2 @@ -define(["utils/graph","utils/add-logging"],function(a,b){"use strict";var c=a.Graph,d=function(a){a=a||{};var b=this;b.filters=[],b._jobsData=[],b._historyContentsMap={},b._toolMap={},b._outputIdToJobMap={},b.noInputJobs=[],b.noOutputJobs=[],b.filteredSetMetadata=[],b.filteredErroredJobs=[],b.dataKeys=["jobs","historyContents","tools"],c.call(b,!0,_.pick(a,b.dataKeys),_.omit(a,b.dataKeys))};return d.prototype=new a.Graph,d.prototype.constructor=d,b(d),d.prototype.init=function(a){a=a||{};var b=this;return b.options=_.defaults(a,{excludeSetMetadata:!1}),b.filters=b._initFilters(),c.prototype.init.call(b,a),b},d.prototype._initFilters=function(){var a=this,b=[];return a.options.excludeSetMetadata&&(a.filteredSetMetadata=[],b.push(function(b){return"__SET_METADATA__"!==b.job.tool_id?!0:(a.filteredSetMetadata.push(b.job.id),!1)})),a.options.excludeErroredJobs&&(a.filteredErroredJobs=[],b.push(function(b){return"error"!==b.job.state?!0:(a.filteredErroredJobs.push(b.job.id),!1)})),_.isArray(a.options.filters)&&(b=b.concat(a.options.filters)),a.debug("filters len:",b.length),b},d.prototype.read=function(a){var b=this;return _.has(a,"historyContents")&&_.has(a,"jobs")&&_.has(a,"tools")?(b.preprocessHistoryContents(a.historyContents||[]).preprocessTools(a.tools||{}).preprocessJobs(a.jobs||[]),b.createGraph(b._filterJobs()),b):c.prototype.read.call(this,a)},d.prototype.preprocessHistoryContents=function(a){this.info("processing history");var b=this;return b._historyContentsMap={},a.forEach(function(a){b._historyContentsMap[a.id]=_.clone(a)}),b},d.prototype.preprocessTools=function(a){this.info("processing tools");var b=this;return b._toolMap={},_.each(a,function(a,c){b._toolMap[c]=_.clone(a)}),b},d.prototype.preprocessJobs=function(a){this.info("processing jobs");var b=this;return b._outputIdToJobMap={},b._jobsData=b.sort(a).map(function(a){return b.preprocessJob(_.clone(a))}),b},d.prototype.sort=function(a){function b(a,b){return a.create_time>b.create_time?1:a.create_timed?1:d>c?-1:0}),new Graph(a.directed,b)})},d.prototype._jobsDataMap=function(){var a={};return this._jobsData.forEach(function(b){a[b.job.id]=b}),a},d}); -//# sourceMappingURL=../../../maps/mvc/history/job-dag.js.map \ No newline at end of file +define(["utils/graph","utils/add-logging"],function(t,o){"use strict";var e=t.Graph,r=function(t){t=t||{};var o=this;o.filters=[],o._jobsData=[],o._historyContentsMap={},o._toolMap={},o._outputIdToJobMap={},o.noInputJobs=[],o.noOutputJobs=[],o.filteredSetMetadata=[],o.filteredErroredJobs=[],o.dataKeys=["jobs","historyContents","tools"],e.call(o,!0,_.pick(t,o.dataKeys),_.omit(t,o.dataKeys))};return r.prototype=new t.Graph,r.prototype.constructor=r,o(r),r.prototype.init=function(t){t=t||{};var o=this;return o.options=_.defaults(t,{excludeSetMetadata:!1}),o.filters=o._initFilters(),e.prototype.init.call(o,t),o},r.prototype._initFilters=function(){var t=this,o=[];return t.options.excludeSetMetadata&&(t.filteredSetMetadata=[],o.push(function(o){return"__SET_METADATA__"!==o.job.tool_id||(t.filteredSetMetadata.push(o.job.id),!1)})),t.options.excludeErroredJobs&&(t.filteredErroredJobs=[],o.push(function(o){return"error"!==o.job.state||(t.filteredErroredJobs.push(o.job.id),!1)})),_.isArray(t.options.filters)&&(o=o.concat(t.options.filters)),t.debug("filters len:",o.length),o},r.prototype.read=function(t){var o=this;return _.has(t,"historyContents")&&_.has(t,"jobs")&&_.has(t,"tools")?(o.preprocessHistoryContents(t.historyContents||[]).preprocessTools(t.tools||{}).preprocessJobs(t.jobs||[]),o.createGraph(o._filterJobs()),o):e.prototype.read.call(this,t)},r.prototype.preprocessHistoryContents=function(t){this.info("processing history");var o=this;return o._historyContentsMap={},t.forEach(function(t,e){o._historyContentsMap[t.id]=_.clone(t)}),o},r.prototype.preprocessTools=function(t){this.info("processing tools");var o=this;return o._toolMap={},_.each(t,function(t,e){o._toolMap[e]=_.clone(t)}),o},r.prototype.preprocessJobs=function(t){this.info("processing jobs");var o=this;return o._outputIdToJobMap={},o._jobsData=o.sort(t).map(function(t){return o.preprocessJob(_.clone(t))}),o},r.prototype.sort=function(t){function o(t,o){return t.create_time>o.create_time?1:t.create_timer?1:ed?!1:c>b?!1:!0},$panel:function(){return this.$(".history-panel")},render:function(a){a=void 0!==a?a:"fast";var b=this.model?this.model.toJSON():{};return this.$el.html(this.template(b)),this.renderPanel(a),this.panel.$el.css("display","flex"),this.setUpBehaviors(),this},setUpBehaviors:function(){},template:function(a){return a=_.extend(a||{},{isCurrentHistory:this.currentHistory}),$(['
                              ',this.controlsLeftTemplate({history:a,view:this}),this.controlsRightTemplate({history:a,view:this}),"
                              ",'
                              ','
                              ',"
                              "].join(""))},renderPanel:function(a){return a=void 0!==a?a:"fast",this.panel.setElement(this.$panel()).render(a),this.currentHistory&&this.panel.$list().before(this.panel._renderDropTargetHelp()),this},events:{"click .switch-to.btn":function(){this.model.setAsCurrent()},"click .delete-history":function(){var a=this;this.model._delete().done(function(){a.render()})},"click .undelete-history":function(){var a=this;this.model.undelete().done(function(){a.render()})},"click .purge-history":function(){if(confirm(_l("This will permanently remove the data. Are you sure?"))){var a=this;this.model.purge().done(function(){a.render()})}},"click .copy-history":"copy"},copy:function(){c(this.model)},controlsLeftTemplate:_.template(['
                              ',"<% if( data.history.isCurrentHistory ){ %>",'',_l("Current History"),"","<% } else { %>",'","<% } %>","
                              "].join(""),{variable:"data"}),controlsRightTemplate:_.template(['
                              ',"<% if( !data.history.purged ){ %>",'
                              ','",'","
                              ","<% } %>","
                              "].join(""),{variable:"data"}),toString:function(){return"HistoryViewColumn("+(this.panel?this.panel:"")+")"}}),i=Backbone.View.extend(e.LoggableMixin).extend({_logNamespace:g,className:"multi-panel-history",initialize:function(a){a=a||{},this.log(this+".init",a),this.$el.addClass(this.className),this.options={columnWidth:312,borderWidth:1,columnGap:8,headerHeight:29,footerHeight:0,controlsHeight:20},this.perPage=a.perPage||10,this.hdaQueue=new f.NamedAjaxQueue([],!1),this.collection=null,this.columnMap={},this.columnOptions=a.columnOptions||{},this.historySearch=null,this.datasetSearch=null,this.setCollection(a.histories),this.setUpListeners()},setUpListeners:function(){var a=this;this.on("end-of-scroll",function(){a.collection.fetchMore()})},setCollection:function(b){return this.stopListening(this.collection),this.collection=b||new a.HistoryCollection,this.setUpCollectionListeners(),this.createColumns(),this.hdaQueue.clear(),this.trigger("new-collection",this),this},addModels:function(a,b,c){c=c||{};var d=this;return a=_.isArray(a)?a:[a],a.forEach(function(a){d.addColumn(a,!1)}),this},setUpCollectionListeners:function(){var a=this;a.listenTo(a.collection,{error:a.errorHandler,add:a.addModels,"all-fetched":a._postFetchAll,"new-current":a.addAsCurrentColumn,"set-as-current":a.setCurrentHistory,"change:deleted change:purged":a.handleDeletedHistory,sort:function(){a.renderColumns(0)}})},_postFetchAll:function(){if(this.$(".histories-loading-indicator").remove(),!this.historySearch){var a=this.$(".outer-middle");a.scrollLeft(a.scrollLeft()+24)}},setCurrentHistory:function(a){this.log("setCurrentHistory:",a);var b=_.findWhere(this.columnMap,{currentHistory:!0});b&&(b.currentHistory=!1,b.$el.height(""));var c=this.columnMap[this.collection.currentHistoryId];return c.currentHistory=!0,this.collection.sort(),this._recalcFirstColumnHeight(),c},handleDeletedHistory:function(a){if(a.get("deleted")||a.get("purged")){this.log("handleDeletedHistory",this.collection.includeDeleted,a);var b=this,c=b.columnMap[a.id];if(!c)return;c.model.id===this.collection.currentHistoryId||b.collection.includeDeleted||b.removeColumn(c)}},errorHandler:function(a,b,c){if(!b||0!==b.status||0!==b.readyState){if(this.error(a,b,c),_.isString(a)&&_.isString(b)){var e=a,f=b;return d.errorModal(e,f,c)}return b&&502===b.status?d.badGatewayErrorModal():d.ajaxErrorModal(a,b,c)}},_ajaxErrorHandler:function(){d.ajaxErrorModal.apply(null,_.toArray(arguments))},create:function(){return this.collection.create({current:!0})},createColumns:function(a,b){b=b||this.options.columnOptions;var c=this;c.columnMap={},c.collection.each(function(a){var d=c.createColumn(a,b);c.columnMap[a.id]=d})},createColumn:function(a,b){b=_.extend({},b,{model:a,purgeAllowed:Galaxy.config.allow_user_dataset_purge});var c=new h(b);return a.id===this.collection.currentHistoryId&&(c.currentHistory=!0),this.setUpColumnListeners(c),this.datasetSearch&&(c.panel.searchItems(this.datasetSearch),this.queueHdaFetchDetails(c)),c},addColumn:function(a,b){b=void 0!==b?b:!0;var c=this.createColumn(a);return this.columnMap[a.id]=c,b&&this.renderColumns(),c},addAsCurrentColumn:function(a){var b=this,c=this.addColumn(a,!1);return this.setCurrentHistory(a),c.once("rendered",function(){b.queueHdaFetch(c)}),c},removeColumn:function(a,b){if(b=void 0!==b?b:!0,this.log("removeColumn",a),a){var c=this,d=this.options.columnWidth+this.options.columnGap;a.$el.fadeOut("fast",function(){b&&($(this).remove(),c.$(".middle").width(c.$(".middle").width()-d),c.checkColumnsInView(),c._recalcFirstColumnHeight()),c.stopListening(a.panel),c.stopListening(a),delete c.columnMap[a.model.id],a.remove()})}},setUpColumnListeners:function(a){var b=this;b.listenTo(a,{"in-view":b.queueHdaFetch}),b.listenTo(a.panel,{"view:draggable:dragstart":function(a){b._dropData=JSON.parse(a.dataTransfer.getData("text")),b.currentColumnDropTargetOn()},"view:draggable:dragend":function(){b._dropData=null,b.currentColumnDropTargetOff()},"droptarget:drop":function(a,c,d){var e=b._dropData.filter(function(a){return d.model.contents.isCopyable(a)});b._dropData=null;var g=new f.NamedAjaxQueue;0!==d.model.contents.currentPage&&g.add({name:"fetch-front-page",fn:function(){return d.model.contents.fetchPage(0)}}),e.reverse().forEach(function(a){g.add({name:"copy-"+a.id,fn:function(){return d.model.contents.copy(a)}})}),g.start(),g.done(function(){d.model.fetch()})}})},columnMapLength:function(){return Object.keys(this.columnMap).length},sortedFilteredColumns:function(a){if(a=a||this.filters,!a||!a.length)return this.sortedColumns();var b=this;return b.sortedColumns().filter(function(b){var c=b.currentHistory||_.every(a.map(function(a){return a.call(b)}));return c})},sortedColumns:function(){var a=this,b=this.collection.map(function(b){return a.columnMap[b.id]});return b},render:function(a){a=void 0!==a?a:this.fxSpeed;var b=this;return b.log(b+".render"),b.$el.html(b.mainTemplate(b)),b.renderColumns(a),b.setUpBehaviors(),b.trigger("rendered",b),b},renderColumns:function(a){a=_.isNumber(a)?a:this.fxSpeed;var b=this,c=b.sortedFilteredColumns(),d=b.$(".middle").empty();return b._addColumns(c,a),b.collection.allFetched||d.append(b.loadingIndicatorTemplate(b)),b.trigger("columns-rendered",c,b),b.datasetSearch&&c.length<=1||(b.checkColumnsInView(),b._recalcFirstColumnHeight()),c},_addColumns:function(a,b){b=_.isNumber(b)?b:this.fxSpeed;var c=this.$(".middle"),d=c.children(".history-column").length;c.width(this._calcMiddleWidth(a.length+d)),a.forEach(function(a){a.delegateEvents().render(b).$el.appendTo(c)})},_calcMiddleWidth:function(a){var b=16;return a*(this.options.columnWidth+this.options.columnGap)+this.options.columnGap+b},queueHdaFetch:function(a){var b=a.model.contents;if(0===b.length&&a.model.contentsShown()){var c={silent:!0},d=_.values(b.storage.allExpanded()).join();d&&(c.details=d),this.hdaQueue.add({name:a.model.id,fn:function(){return b.fetchCurrentPage(c).done(function(){a.panel.renderItems()})}}),this.hdaQueue.running||this.hdaQueue.start()}},queueHdaFetchDetails:function(a){var b=a.model.contents,c=0===b.length&&a.model.contentsShown();(c||!b.haveDetails())&&(this.hdaQueue.add({name:a.model.id,fn:function(){return b.progressivelyFetchDetails().done(function(){a.panel._renderEmptyMessage()})}}),this.hdaQueue.running||this.hdaQueue.start())},renderInfo:function(a){return this.$(".header .header-info").text(a)},events:{"click .done.btn":"close","click .create-new.btn":"create","click #include-deleted":"_clickToggleDeletedHistories","click .order .set-order":"_chooseOrder","click #toggle-deleted":"_clickToggleDeletedDatasets","click #toggle-hidden":"_clickToggleHiddenDatasets"},close:function(){window.location=Galaxy.root},_clickToggleDeletedHistories:function(a){this.toggleDeletedHistories($(a.currentTarget).is(":checked")),this.toggleOptionsPopover()},toggleDeletedHistories:function(a){window.location=a?Galaxy.root+"history/view_multiple?include_deleted_histories=True":Galaxy.root+"history/view_multiple"},_clickToggleDeletedDatasets:function(a){this.toggleDeletedDatasets($(a.currentTarget).is(":checked")),this.toggleOptionsPopover()},toggleDeletedDatasets:function(a){a=void 0!==a?a:!1;var b=this;b.sortedFilteredColumns().forEach(function(b,c){_.delay(function(){b.panel.toggleShowDeleted(a,!1)},200*c)})},_clickToggleHiddenDatasets:function(a){this.toggleHiddenDatasets($(a.currentTarget).is(":checked")),this.toggleOptionsPopover()},toggleHiddenDatasets:function(a){a=void 0!==a?a:!1;var b=this;b.sortedFilteredColumns().forEach(function(b,c){_.delay(function(){b.panel.toggleShowHidden(a,!1)},200*c)})},_chooseOrder:function(a){var b=this,c=b.collection,d=$(a.currentTarget).data("order");b.$(".current-order").text(b.orderDescriptions[d]),b.toggleOptionsPopover(),c.setOrder(d);var e=c.slice(0,1);c.fetchFirst().done(function(){c.unshift(e,{silent:!0}),b.createColumns(),b.hdaQueue.clear(),b.render()}),b.once("columns-rendered",b._scrollLeft)},_scrollLeft:function(a){a=_.isNumber(a)?a:0,this.$(".outer-middle").scrollLeft(a)},setUpBehaviors:function(){var a=this;a._moreOptionsPopover(),a.$("#search-histories").searchInput({name:"search-histories",placeholder:_l("search histories"),onfirstsearch:function(){a.$("#search-histories").searchInput("toggle-loading"),a.renderInfo(_l("loading all histories for search")),a.collection.fetchAll().done(function(){a.$("#search-histories").searchInput("toggle-loading"),a.renderInfo("")})},onsearch:function(b){a.historySearch=b,a.filters=[function(){return this.model.matchesAll(a.historySearch)}],a.renderColumns(0)},onclear:function(){a.historySearch=null,a.filters=[],a.renderColumns(0)}}),a.$("#search-datasets").searchInput({name:"search-datasets",placeholder:_l("search all datasets"),onfirstsearch:function(b){a.hdaQueue.clear(),a.$("#search-datasets").searchInput("toggle-loading"),a.datasetSearch=b,a.sortedFilteredColumns().forEach(function(c){c.panel.searchItems(b),a.queueHdaFetchDetails(c)}),a.hdaQueue.progress(function(b){a.renderInfo([_l("searching"),b.curr+1,_l("of"),b.total].join(" "))}),a.hdaQueue.deferred.done(function(){a.renderInfo(""),a.$("#search-datasets").searchInput("toggle-loading")})},onsearch:function(b){a.datasetSearch=b,a.sortedFilteredColumns().forEach(function(a){a.panel.searchItems(b)})},onclear:function(){a.datasetSearch=null,a.sortedFilteredColumns().forEach(function(a){a.panel.clearSearch()})}}),$(window).resize(function(){a._recalcFirstColumnHeight()});var b=_.debounce(function(){var b=a._viewport();a.checkColumnsInView(b),a.checkForEndOfScroll(b)},100);this.$(".middle").parent().scroll(b)},_moreOptionsPopover:function(){return this.$(".open-more-options.btn").popover({container:".header",placement:"bottom",html:!0,content:$(this.optionsPopoverTemplate(this))})},toggleOptionsPopover:function(){this.$(".open-more-options.btn").popover("toggle")},_recalcFirstColumnHeight:function(){var a=this.$(".history-column").first(),b=this.$(".middle").height(),c=a.find(".panel-controls").height();a.height(b).find(".inner").height(b-c)},_viewport:function(){var a=this.$(".middle").parent(),b=a.offset().left,c=a.width();return{left:b,right:b+c}},columnsInView:function(a){var b=a||this._viewport();return this.sortedFilteredColumns().filter(function(a){return a.currentHistory||a.inView(b.left,b.right)})},checkColumnsInView:function(){this.columnsInView().forEach(function(a){a.trigger("in-view",a)})},checkForEndOfScroll:function(a){a=a||this._viewport();var b=16,c=this.$(".middle"),d=c.parent().scrollLeft()+a.right;d>=c.width()-b&&this.trigger("end-of-scroll")},currentColumnDropTargetOn:function(){var a=this.columnMap[this.collection.currentHistoryId];a&&(a.panel.dataDropped=function(){},a.panel.dropTargetOn())},currentColumnDropTargetOff:function(){var a=this.columnMap[this.collection.currentHistoryId];a&&(a.panel.dataDropped=b.HistoryViewEdit.prototype.dataDrop,a.panel.dropTarget=!1,a.panel.$(".history-drop-target").remove())},toString:function(){return"MultiPanelColumns("+(this.columns?this.columns.length:0)+")"},mainTemplate:_.template(['
                              ','
                              ','",'
                              ','
                              ','','',"","
                              ",'
                              ','
                              ',"
                              ","
                              ",'
                              ',' ","
                              ","
                              ",'
                              ','
                              ',"
                              ",''].join(""),{variable:"view"}),loadingIndicatorTemplate:_.template(['
                              ','',_l("Loading histories"),"...","
                              "].join(""),{variable:"view"}),orderDescriptions:{update_time:_l("most recent first"),"update_time-asc":_l("least recent first"),name:_l("name, a to z"),"name-dsc":_l("name, z to a"),size:_l("size, large to small"),"size-asc":_l("size, small to large")},optionsPopoverTemplate:_.template(['
                              ','
                              ','",'","
                              ",'
                              ","
                              ",'
                              ",'
                              ","
                              "].join(""),{variable:"view"})});return{MultiPanelColumns:i}}); -//# sourceMappingURL=../../../maps/mvc/history/multi-panel.js.map \ No newline at end of file +define(["mvc/history/history-model","mvc/history/history-view-edit","mvc/history/copy-dialog","mvc/ui/error-modal","mvc/base-mvc","utils/ajax-queue","ui/mode-button","ui/search-input"],function(e,t,n,i,o,r){"use strict";var l=Backbone.View.extend(o.LoggableMixin).extend({_logNamespace:"history",tagName:"div",className:"history-column flex-column flex-row-container",id:function(){return this.model?"history-column-"+this.model.get("id"):""},initialize:function(e){e=e||{},this.purgeAllowed=!_.isUndefined(e.purgeAllowed)&&e.purgeAllowed,this.panel=e.panel||this.createPanel(e),this.setUpListeners()},createPanel:function(e){return new t.HistoryViewEdit(_.defaults(e,{model:this.model,purgeAllowed:this.purgeAllowed,dragItems:!0,$scrollContainer:function(){return this.$el}}))},setUpListeners:function(){var e=this;this.once("rendered",function(){e.trigger("rendered:initial",e)}),this.setUpPanelListeners()},setUpPanelListeners:function(){var e=this;this.listenTo(this.panel,{rendered:function(){e.trigger("rendered",e)},"view:expanded view:rendered":function(e){e.$(".rerun-btn").off()}},this)},inView:function(e,t){var n=this.$el.offset().left;return!(n+this.$el.width()t)},$panel:function(){return this.$(".history-panel")},render:function(e){e=void 0!==e?e:"fast";var t=this.model?this.model.toJSON():{};return this.$el.html(this.template(t)),this.renderPanel(e),this.panel.$el.css("display","flex"),this.setUpBehaviors(),this},setUpBehaviors:function(){},template:function(e){return e=_.extend(e||{},{isCurrentHistory:this.currentHistory}),$(['
                              ',this.controlsLeftTemplate({history:e,view:this}),this.controlsRightTemplate({history:e,view:this}),"
                              ",'
                              ','
                              ',"
                              "].join(""))},renderPanel:function(e){return e=void 0!==e?e:"fast",this.panel.setElement(this.$panel()).render(e),this.currentHistory&&this.panel.$list().before(this.panel._renderDropTargetHelp()),this},events:{"click .switch-to.btn":function(){this.model.setAsCurrent()},"click .delete-history":function(){var e=this;this.model._delete().done(function(t){e.render()})},"click .undelete-history":function(){var e=this;this.model.undelete().done(function(t){e.render()})},"click .purge-history":function(){if(confirm(_l("This will permanently remove the data. Are you sure?"))){var e=this;this.model.purge().done(function(t){e.render()})}},"click .copy-history":"copy"},copy:function(){n(this.model)},controlsLeftTemplate:_.template(['
                              ',"<% if( data.history.isCurrentHistory ){ %>",'',_l("Current History"),"","<% } else { %>",'","<% } %>","
                              "].join(""),{variable:"data"}),controlsRightTemplate:_.template(['
                              ',"<% if( !data.history.purged ){ %>",'
                              ','",'","
                              ","<% } %>","
                              "].join(""),{variable:"data"}),toString:function(){return"HistoryViewColumn("+(this.panel?this.panel:"")+")"}});return{MultiPanelColumns:Backbone.View.extend(o.LoggableMixin).extend({_logNamespace:"history",className:"multi-panel-history",initialize:function(e){e=e||{},this.log(this+".init",e),this.$el.addClass(this.className),this.options={columnWidth:312,borderWidth:1,columnGap:8,headerHeight:29,footerHeight:0,controlsHeight:20},this.perPage=e.perPage||10,this.hdaQueue=new r.NamedAjaxQueue([],!1),this.collection=null,this.columnMap={},this.columnOptions=e.columnOptions||{},this.historySearch=null,this.datasetSearch=null,this.setCollection(e.histories),this.setUpListeners()},setUpListeners:function(){var e=this;this.on("end-of-scroll",function(){e.collection.fetchMore()})},setCollection:function(t){return this.stopListening(this.collection),this.collection=t||new e.HistoryCollection,this.setUpCollectionListeners(),this.createColumns(),this.hdaQueue.clear(),this.trigger("new-collection",this),this},addModels:function(e,t,n){n=n||{};var i=this;return e=_.isArray(e)?e:[e],e.forEach(function(e){i.addColumn(e,!1)}),this},setUpCollectionListeners:function(){var e=this;e.listenTo(e.collection,{error:e.errorHandler,add:e.addModels,"all-fetched":e._postFetchAll,"new-current":e.addAsCurrentColumn,"set-as-current":e.setCurrentHistory,"change:deleted change:purged":e.handleDeletedHistory,sort:function(){e.renderColumns(0)}})},_postFetchAll:function(e){if(this.$(".histories-loading-indicator").remove(),!this.historySearch){var t=this.$(".outer-middle");t.scrollLeft(t.scrollLeft()+24)}},setCurrentHistory:function(e){this.log("setCurrentHistory:",e);var t=_.findWhere(this.columnMap,{currentHistory:!0});t&&(t.currentHistory=!1,t.$el.height(""));var n=this.columnMap[this.collection.currentHistoryId];return n.currentHistory=!0,this.collection.sort(),this._recalcFirstColumnHeight(),n},handleDeletedHistory:function(e){if(e.get("deleted")||e.get("purged")){this.log("handleDeletedHistory",this.collection.includeDeleted,e);var t=this,n=t.columnMap[e.id];if(!n)return;n.model.id===this.collection.currentHistoryId||t.collection.includeDeleted||t.removeColumn(n)}},errorHandler:function(e,t,n){if(!t||0!==t.status||0!==t.readyState){if(this.error(e,t,n),_.isString(e)&&_.isString(t)){var o=e,r=t;return i.errorModal(o,r,n)}return t&&502===t.status?i.badGatewayErrorModal():i.ajaxErrorModal(e,t,n)}},_ajaxErrorHandler:function(){i.ajaxErrorModal.apply(null,_.toArray(arguments))},create:function(e){return this.collection.create({current:!0})},createColumns:function(e,t){t=t||this.options.columnOptions;var n=this;n.columnMap={},n.collection.each(function(e,i){var o=n.createColumn(e,t);n.columnMap[e.id]=o})},createColumn:function(e,t){t=_.extend({},t,{model:e,purgeAllowed:Galaxy.config.allow_user_dataset_purge});var n=new l(t);return e.id===this.collection.currentHistoryId&&(n.currentHistory=!0),this.setUpColumnListeners(n),this.datasetSearch&&(n.panel.searchItems(this.datasetSearch),this.queueHdaFetchDetails(n)),n},addColumn:function(e,t){t=void 0===t||t;var n=this.createColumn(e);return this.columnMap[e.id]=n,t&&this.renderColumns(),n},addAsCurrentColumn:function(e,t,n){var i=this,o=this.addColumn(e,!1);return this.setCurrentHistory(e),o.once("rendered",function(){i.queueHdaFetch(o)}),o},removeColumn:function(e,t){if(t=void 0===t||t,this.log("removeColumn",e),e){var n=this,i=this.options.columnWidth+this.options.columnGap;e.$el.fadeOut("fast",function(){t&&($(this).remove(),n.$(".middle").width(n.$(".middle").width()-i),n.checkColumnsInView(),n._recalcFirstColumnHeight()),n.stopListening(e.panel),n.stopListening(e),delete n.columnMap[e.model.id],e.remove()})}},setUpColumnListeners:function(e){var t=this;t.listenTo(e,{"in-view":t.queueHdaFetch}),t.listenTo(e.panel,{"view:draggable:dragstart":function(e,n,i,o){t._dropData=JSON.parse(e.dataTransfer.getData("text")),t.currentColumnDropTargetOn()},"view:draggable:dragend":function(e,n,i,o){t._dropData=null,t.currentColumnDropTargetOff()},"droptarget:drop":function(e,n,i){var o=t._dropData.filter(function(e){return i.model.contents.isCopyable(e)});t._dropData=null;var l=new r.NamedAjaxQueue;0!==i.model.contents.currentPage&&l.add({name:"fetch-front-page",fn:function(){return i.model.contents.fetchPage(0)}}),o.reverse().forEach(function(e){l.add({name:"copy-"+e.id,fn:function(){return i.model.contents.copy(e)}})}),l.start(),l.done(function(e){i.model.fetch()})}})},columnMapLength:function(){return Object.keys(this.columnMap).length},sortedFilteredColumns:function(e){return(e=e||this.filters)&&e.length?this.sortedColumns().filter(function(t,n){return t.currentHistory||_.every(e.map(function(e){return e.call(t)}))}):this.sortedColumns()},sortedColumns:function(){var e=this;return this.collection.map(function(t,n){return e.columnMap[t.id]})},render:function(e){e=void 0!==e?e:this.fxSpeed;var t=this;return t.log(t+".render"),t.$el.html(t.mainTemplate(t)),t.renderColumns(e),t.setUpBehaviors(),t.trigger("rendered",t),t},renderColumns:function(e){e=_.isNumber(e)?e:this.fxSpeed;var t=this,n=t.sortedFilteredColumns(),i=t.$(".middle").empty();return t._addColumns(n,e),t.collection.allFetched||i.append(t.loadingIndicatorTemplate(t)),t.trigger("columns-rendered",n,t),t.datasetSearch&&n.length<=1||(t.checkColumnsInView(),t._recalcFirstColumnHeight()),n},_addColumns:function(e,t){t=_.isNumber(t)?t:this.fxSpeed;var n=this.$(".middle"),i=n.children(".history-column").length;n.width(this._calcMiddleWidth(e.length+i)),e.forEach(function(e,i){e.delegateEvents().render(t).$el.appendTo(n)})},_calcMiddleWidth:function(e){return e*(this.options.columnWidth+this.options.columnGap)+this.options.columnGap+16},queueHdaFetch:function(e){var t=e.model.contents;if(0===t.length&&e.model.contentsShown()){var n={silent:!0},i=_.values(t.storage.allExpanded()).join();i&&(n.details=i),this.hdaQueue.add({name:e.model.id,fn:function(){return t.fetchCurrentPage(n).done(function(){e.panel.renderItems()})}}),this.hdaQueue.running||this.hdaQueue.start()}},queueHdaFetchDetails:function(e){var t=e.model.contents;!(0===t.length&&e.model.contentsShown())&&t.haveDetails()||(this.hdaQueue.add({name:e.model.id,fn:function(){return t.progressivelyFetchDetails().done(function(){e.panel._renderEmptyMessage()})}}),this.hdaQueue.running||this.hdaQueue.start())},renderInfo:function(e){return this.$(".header .header-info").text(e)},events:{"click .done.btn":"close","click .create-new.btn":"create","click #include-deleted":"_clickToggleDeletedHistories","click .order .set-order":"_chooseOrder","click #toggle-deleted":"_clickToggleDeletedDatasets","click #toggle-hidden":"_clickToggleHiddenDatasets"},close:function(e){window.location=Galaxy.root},_clickToggleDeletedHistories:function(e){this.toggleDeletedHistories($(e.currentTarget).is(":checked")),this.toggleOptionsPopover()},toggleDeletedHistories:function(e){window.location=e?Galaxy.root+"history/view_multiple?include_deleted_histories=True":Galaxy.root+"history/view_multiple"},_clickToggleDeletedDatasets:function(e){this.toggleDeletedDatasets($(e.currentTarget).is(":checked")),this.toggleOptionsPopover()},toggleDeletedDatasets:function(e){e=void 0!==e&&e,this.sortedFilteredColumns().forEach(function(t,n){_.delay(function(){t.panel.toggleShowDeleted(e,!1)},200*n)})},_clickToggleHiddenDatasets:function(e){this.toggleHiddenDatasets($(e.currentTarget).is(":checked")),this.toggleOptionsPopover()},toggleHiddenDatasets:function(e){e=void 0!==e&&e,this.sortedFilteredColumns().forEach(function(t,n){_.delay(function(){t.panel.toggleShowHidden(e,!1)},200*n)})},_chooseOrder:function(e){var t=this,n=t.collection,i=$(e.currentTarget).data("order");t.$(".current-order").text(t.orderDescriptions[i]),t.toggleOptionsPopover(),n.setOrder(i);var o=n.slice(0,1);n.fetchFirst().done(function(){n.unshift(o,{silent:!0}),t.createColumns(),t.hdaQueue.clear(),t.render()}),t.once("columns-rendered",t._scrollLeft)},_scrollLeft:function(e){e=_.isNumber(e)?e:0,this.$(".outer-middle").scrollLeft(e)},setUpBehaviors:function(){var e=this;e._moreOptionsPopover(),e.$("#search-histories").searchInput({name:"search-histories",placeholder:_l("search histories"),onfirstsearch:function(t){e.$("#search-histories").searchInput("toggle-loading"),e.renderInfo(_l("loading all histories for search")),e.collection.fetchAll().done(function(){e.$("#search-histories").searchInput("toggle-loading"),e.renderInfo("")})},onsearch:function(t){e.historySearch=t,e.filters=[function(){return this.model.matchesAll(e.historySearch)}],e.renderColumns(0)},onclear:function(t){e.historySearch=null,e.filters=[],e.renderColumns(0)}}),e.$("#search-datasets").searchInput({name:"search-datasets",placeholder:_l("search all datasets"),onfirstsearch:function(t){e.hdaQueue.clear(),e.$("#search-datasets").searchInput("toggle-loading"),e.datasetSearch=t,e.sortedFilteredColumns().forEach(function(n){n.panel.searchItems(t),e.queueHdaFetchDetails(n)}),e.hdaQueue.progress(function(t){e.renderInfo([_l("searching"),t.curr+1,_l("of"),t.total].join(" "))}),e.hdaQueue.deferred.done(function(){e.renderInfo(""),e.$("#search-datasets").searchInput("toggle-loading")})},onsearch:function(t){e.datasetSearch=t,e.sortedFilteredColumns().forEach(function(e){e.panel.searchItems(t)})},onclear:function(t){e.datasetSearch=null,e.sortedFilteredColumns().forEach(function(e){e.panel.clearSearch()})}}),$(window).resize(function(){e._recalcFirstColumnHeight()});var t=_.debounce(function(){var t=e._viewport();e.checkColumnsInView(t),e.checkForEndOfScroll(t)},100);this.$(".middle").parent().scroll(t)},_moreOptionsPopover:function(){return this.$(".open-more-options.btn").popover({container:".header",placement:"bottom",html:!0,content:$(this.optionsPopoverTemplate(this))})},toggleOptionsPopover:function(e){this.$(".open-more-options.btn").popover("toggle")},_recalcFirstColumnHeight:function(){var e=this.$(".history-column").first(),t=this.$(".middle").height(),n=e.find(".panel-controls").height();e.height(t).find(".inner").height(t-n)},_viewport:function(){var e=this.$(".middle").parent(),t=e.offset().left;return{left:t,right:t+e.width()}},columnsInView:function(e){var t=e||this._viewport();return this.sortedFilteredColumns().filter(function(e){return e.currentHistory||e.inView(t.left,t.right)})},checkColumnsInView:function(){this.columnsInView().forEach(function(e){e.trigger("in-view",e)})},checkForEndOfScroll:function(e){e=e||this._viewport();var t=this.$(".middle");t.parent().scrollLeft()+e.right>=t.width()-16&&this.trigger("end-of-scroll")},currentColumnDropTargetOn:function(){var e=this.columnMap[this.collection.currentHistoryId];e&&(e.panel.dataDropped=function(e){},e.panel.dropTargetOn())},currentColumnDropTargetOff:function(){var e=this.columnMap[this.collection.currentHistoryId];e&&(e.panel.dataDropped=t.HistoryViewEdit.prototype.dataDrop,e.panel.dropTarget=!1,e.panel.$(".history-drop-target").remove())},toString:function(){return"MultiPanelColumns("+(this.columns?this.columns.length:0)+")"},mainTemplate:_.template(['
                              ','
                              ','",'
                              ','
                              ','','',"","
                              ",'
                              ','
                              ',"
                              ","
                              ",'
                              ',' ","
                              ","
                              ",'
                              ','
                              ',"
                              ",''].join(""),{variable:"view"}),loadingIndicatorTemplate:_.template(['
                              ','',_l("Loading histories"),"...","
                              "].join(""),{variable:"view"}),orderDescriptions:{update_time:_l("most recent first"),"update_time-asc":_l("least recent first"),name:_l("name, a to z"),"name-dsc":_l("name, z to a"),size:_l("size, large to small"),"size-asc":_l("size, small to large")},optionsPopoverTemplate:_.template(['
                              ','
                              ','",'","
                              ",'
                              ","
                              ",'
                              ",'
                              ","
                              "].join(""),{variable:"view"})})}}); +//# sourceMappingURL=../../../maps/mvc/history/multi-panel.js.map diff --git a/static/scripts/mvc/history/options-menu.js b/static/scripts/mvc/history/options-menu.js index 93ea6a71e61..452438491ec 100644 --- a/static/scripts/mvc/history/options-menu.js +++ b/static/scripts/mvc/history/options-menu.js @@ -1,2 +1,2 @@ -define(["mvc/ui/popup-menu","mvc/history/copy-dialog","mvc/base-mvc","utils/localization","mvc/webhooks"],function(a,b,c,d,e){"use strict";function f(a,b,c){return _.clone(g).filter(function(d){return a&&!d.anon?!1:!b&&d.purge?!1:(d.href&&(d.href=c+d.href,d.target="galaxy_main"),d.confirm&&(d.func=function(){confirm(d.confirm)&&(galaxy_main.location=d.href)}),!0)})}var g=[{html:d("History Lists"),header:!0},{html:d("Saved Histories"),href:"history/list"},{html:d("Histories Shared with Me"),href:"history/list_shared"},{html:d("Current History"),header:!0,anon:!0},{html:d("Create New"),func:function(){Galaxy&&Galaxy.currHistoryPanel&&Galaxy.currHistoryPanel.createNewHistory()}},{html:d("Copy History"),func:function(){b(Galaxy.currHistoryPanel.model).done(function(){Galaxy.currHistoryPanel.loadCurrentHistory()})}},{html:d("Share or Publish"),href:"history/sharing"},{html:d("Show Structure"),href:"history/display_structured",anon:!0},{html:d("Extract Workflow"),href:"workflow/build_from_current_history"},{html:d("Delete"),anon:!0,func:function(){Galaxy&&Galaxy.currHistoryPanel&&confirm(d("Really delete the current history?"))&&(galaxy_main.window.location.href="history/delete?id="+Galaxy.currHistoryPanel.model.id)}},{html:d("Delete Permanently"),purge:!0,anon:!0,func:function(){Galaxy&&Galaxy.currHistoryPanel&&confirm(d("Really delete the current history permanently? This cannot be undone."))&&(galaxy_main.window.location.href="history/delete?purge=True&id="+Galaxy.currHistoryPanel.model.id)}},{html:d("Dataset Actions"),header:!0,anon:!0},{html:d("Copy Datasets"),href:"dataset/copy_datasets"},{html:d("Dataset Security"),href:"root/history_set_default_permissions"},{html:d("Resume Paused Jobs"),href:"history/resume_paused_jobs?current=True",anon:!0},{html:d("Collapse Expanded Datasets"),func:function(){Galaxy&&Galaxy.currHistoryPanel&&Galaxy.currHistoryPanel.collapseAll()}},{html:d("Unhide Hidden Datasets"),anon:!0,func:function(){Galaxy&&Galaxy.currHistoryPanel&&confirm(d("Really unhide all hidden datasets?"))&&$.post(Galaxy.root+"history/adjust_hidden",{user_action:"unhide"},function(){Galaxy.currHistoryPanel.loadCurrentHistory()})}},{html:d("Delete Hidden Datasets"),anon:!0,func:function(){Galaxy&&Galaxy.currHistoryPanel&&confirm(d("Really delete all hidden datasets?"))&&$.post(Galaxy.root+"history/adjust_hidden",{user_action:"delete"},function(){Galaxy.currHistoryPanel.loadCurrentHistory()})}},{html:d("Purge Deleted Datasets"),confirm:d("Really delete all deleted datasets permanently? This cannot be undone."),href:"history/purge_deleted_datasets",purge:!0,anon:!0},{html:d("Downloads"),header:!0},{html:d("Export Tool Citations"),href:"history/citations",anon:!0},{html:d("Export History to File"),href:"history/export_archive?preview=True",anon:!0},{html:d("Other Actions"),header:!0},{html:d("Import from File"),href:"history/import_archive"}];e.add({url:"api/webhooks/history-menu/all",async:!1,callback:function(a){var b=[];$.each(a.models,function(a,c){var e=c.toJSON();e.activate&&b.push({html:d(e.config.title),anon:!0})}),b.length>0&&(b.unshift({html:d("Webhooks"),header:!0}),$.merge(g,b))}});var h=function(b,c){c=c||{};var d=void 0===c.anonymous?!0:c.anonymous,e=c.purgeAllowed||!1,g=f(d,e,Galaxy.root);return new a(b,g)};return h}); -//# sourceMappingURL=../../../maps/mvc/history/options-menu.js.map \ No newline at end of file +define(["mvc/ui/popup-menu","mvc/history/copy-dialog","mvc/base-mvc","utils/localization","mvc/webhooks"],function(e,t,r,a,o){"use strict";function n(e,t,r){return _.clone(l).filter(function(a){return!(e&&!a.anon)&&(!(!t&&a.purge)&&(a.href&&(a.href=r+a.href,a.target="galaxy_main"),a.confirm&&(a.func=function(){confirm(a.confirm)&&(galaxy_main.location=a.href)}),!0))})}var l=[{html:a("History Lists"),header:!0},{html:a("Saved Histories"),href:"history/list"},{html:a("Histories Shared with Me"),href:"history/list_shared"},{html:a("Current History"),header:!0,anon:!0},{html:a("Create New"),func:function(){Galaxy&&Galaxy.currHistoryPanel&&Galaxy.currHistoryPanel.createNewHistory()}},{html:a("Copy History"),func:function(){t(Galaxy.currHistoryPanel.model).done(function(){Galaxy.currHistoryPanel.loadCurrentHistory()})}},{html:a("Share or Publish"),href:"history/sharing"},{html:a("Show Structure"),href:"history/display_structured",anon:!0},{html:a("Extract Workflow"),href:"workflow/build_from_current_history"},{html:a("Delete"),anon:!0,func:function(){Galaxy&&Galaxy.currHistoryPanel&&confirm(a("Really delete the current history?"))&&(galaxy_main.window.location.href="history/delete?id="+Galaxy.currHistoryPanel.model.id)}},{html:a("Delete Permanently"),purge:!0,anon:!0,func:function(){Galaxy&&Galaxy.currHistoryPanel&&confirm(a("Really delete the current history permanently? This cannot be undone."))&&(galaxy_main.window.location.href="history/delete?purge=True&id="+Galaxy.currHistoryPanel.model.id)}},{html:a("Dataset Actions"),header:!0,anon:!0},{html:a("Copy Datasets"),href:"dataset/copy_datasets"},{html:a("Dataset Security"),href:"root/history_set_default_permissions"},{html:a("Resume Paused Jobs"),href:"history/resume_paused_jobs?current=True",anon:!0},{html:a("Collapse Expanded Datasets"),func:function(){Galaxy&&Galaxy.currHistoryPanel&&Galaxy.currHistoryPanel.collapseAll()}},{html:a("Unhide Hidden Datasets"),anon:!0,func:function(){Galaxy&&Galaxy.currHistoryPanel&&confirm(a("Really unhide all hidden datasets?"))&&$.post(Galaxy.root+"history/adjust_hidden",{user_action:"unhide"},function(){Galaxy.currHistoryPanel.loadCurrentHistory()})}},{html:a("Delete Hidden Datasets"),anon:!0,func:function(){Galaxy&&Galaxy.currHistoryPanel&&confirm(a("Really delete all hidden datasets?"))&&$.post(Galaxy.root+"history/adjust_hidden",{user_action:"delete"},function(){Galaxy.currHistoryPanel.loadCurrentHistory()})}},{html:a("Purge Deleted Datasets"),confirm:a("Really delete all deleted datasets permanently? This cannot be undone."),href:"history/purge_deleted_datasets",purge:!0,anon:!0},{html:a("Downloads"),header:!0},{html:a("Export Tool Citations"),href:"history/citations",anon:!0},{html:a("Export History to File"),href:"history/export_archive?preview=True",anon:!0},{html:a("Other Actions"),header:!0},{html:a("Import from File"),href:"history/import_archive"}];return o.add({url:"api/webhooks/history-menu/all",async:!1,callback:function(e){var t=[];$.each(e.models,function(e,r){var o=r.toJSON();o.activate&&t.push({html:a(o.config.title),anon:!0})}),t.length>0&&(t.unshift({html:a("Webhooks"),header:!0}),$.merge(l,t))}}),function(t,r){r=r||{};var a=void 0===r.anonymous||r.anonymous,o=r.purgeAllowed||!1,l=n(a,o,Galaxy.root);return new e(t,l)}}); +//# sourceMappingURL=../../../maps/mvc/history/options-menu.js.map diff --git a/static/scripts/mvc/job/job-li.js b/static/scripts/mvc/job/job-li.js index e9657d144ec..bb18dfbfe01 100644 --- a/static/scripts/mvc/job/job-li.js +++ b/static/scripts/mvc/job/job-li.js @@ -1,2 +1,2 @@ -define(["mvc/list/list-item","mvc/dataset/dataset-list","mvc/base-mvc","utils/localization"],function(a,b,c,d){var e=a.FoldoutListItemView,f=e.extend({className:e.prototype.className+" job",id:function(){return["job",this.model.get("id")].join("-")},foldoutPanelClass:b.DatasetList,initialize:function(a){a.logger&&(this.logger=this.model.logger=a.logger),this.log(this+".initialize:",a),e.prototype.initialize.call(this,a),this.tool=a.tool||{},this.jobData=a.jobData||{},this.linkTarget=a.linkTarget||"_blank"},_swapNewRender:function(a){return e.prototype._swapNewRender.call(this,a),this.model.has("state")&&this.$el.addClass("state-"+this.model.get("state")),this.$el},_getFoldoutPanelOptions:function(){var a=e.prototype._getFoldoutPanelOptions.call(this);return _.extend(a,{collection:this.model.outputCollection,selecting:!1})},_labelParamMap:function(){var a=this.model.get("params"),b={};return _.each(this.tool.inputs,function(c){c.label&&"DataToolParameter"!==c.model_class&&(b[c.label]=a[c.name])}),b},_labelInputMap:function(){var a=this,b={};return _.each(this.jobData.inputs,function(c){var d=a._findToolInput(c.name);d&&(b[d.label]=c)}),b},_findToolInput:function(a){var b=this.tool.inputs,c=_.findWhere(b,{name:a});return c?c:this._findRepeatToolInput(a,b)},_findRepeatToolInput:function(a,b){b=b||this.tool.inputs;var c=_.find(b,function(b){return 0===a.indexOf(b.name)});if(!c)return void 0;var d=_.find(c.inputs,function(b){return-1!==a.indexOf(b.name)});return d},toString:function(){return"JobListItemView("+this.model+")"}});return f.prototype.templates=function(){var a=(c.wrapTemplate(['
                              ','
                              <%- model.id %>
                              ','
                              ','
                              ','',"
                              ",'
                              ','
                              ','
                              ',"
                              "]),c.wrapTemplate(['
                              ','
                              ','<%- view.tool.name %>',"
                              ",'
                              ','<%- view.tool.description %>'," ",d("Created"),": <%= new Date( job.create_time ).toString() %>, ","","
                              "],"job")),b=c.wrapTemplate(['
                              ','<%- view.tool.description %>"],"job"),f=c.wrapTemplate(['
                              ','
                              ',"<% _.each( view._labelInputMap(), function( input, label ){ %>",'
                              ','','<%- input.content.name %>',"
                              ","<% }) %>","<% _.each( view._labelParamMap(), function( param, label ){ %>",'
                              ','','<%- param %>',"
                              ","<% }) %>","
                              ","
                              "],"job");return _.extend({},e.prototype.templates,{titleBar:a,subtitle:b,details:f})}(),{JobListItemView:f}}); -//# sourceMappingURL=../../../maps/mvc/job/job-li.js.map \ No newline at end of file +define(["mvc/list/list-item","mvc/dataset/dataset-list","mvc/base-mvc","utils/localization"],function(t,a,e,i){var s=t.FoldoutListItemView,l=s.extend({className:s.prototype.className+" job",id:function(){return["job",this.model.get("id")].join("-")},foldoutPanelClass:a.DatasetList,initialize:function(t){t.logger&&(this.logger=this.model.logger=t.logger),this.log(this+".initialize:",t),s.prototype.initialize.call(this,t),this.tool=t.tool||{},this.jobData=t.jobData||{},this.linkTarget=t.linkTarget||"_blank"},_swapNewRender:function(t){return s.prototype._swapNewRender.call(this,t),this.model.has("state")&&this.$el.addClass("state-"+this.model.get("state")),this.$el},_getFoldoutPanelOptions:function(){var t=s.prototype._getFoldoutPanelOptions.call(this);return _.extend(t,{collection:this.model.outputCollection,selecting:!1})},_labelParamMap:function(){var t=this.model.get("params"),a={};return _.each(this.tool.inputs,function(e){e.label&&"DataToolParameter"!==e.model_class&&(a[e.label]=t[e.name])}),a},_labelInputMap:function(){var t=this,a={};return _.each(this.jobData.inputs,function(e){var i=t._findToolInput(e.name);i&&(a[i.label]=e)}),a},_findToolInput:function(t){var a=this.tool.inputs,e=_.findWhere(a,{name:t});return e||this._findRepeatToolInput(t,a)},_findRepeatToolInput:function(t,a){a=a||this.tool.inputs;var e=_.find(a,function(a){return 0===t.indexOf(a.name)});if(e){return _.find(e.inputs,function(a){return-1!==t.indexOf(a.name)})}},toString:function(){return"JobListItemView("+this.model+")"}});return l.prototype.templates=function(){var t=(e.wrapTemplate(['
                              ','
                              <%- model.id %>
                              ','
                              ','
                              ','',"
                              ",'
                              ','
                              ','
                              ',"
                              "]),e.wrapTemplate(['
                              ','
                              ','<%- view.tool.name %>',"
                              ",'
                              ','<%- view.tool.description %>'," ",i("Created"),": <%= new Date( job.create_time ).toString() %>, ","","
                              "],"job")),a=e.wrapTemplate(['
                              ','<%- view.tool.description %>"],"job"),l=e.wrapTemplate(['
                              ','
                              ',"<% _.each( view._labelInputMap(), function( input, label ){ %>",'
                              ','','<%- input.content.name %>',"
                              ","<% }) %>","<% _.each( view._labelParamMap(), function( param, label ){ %>",'
                              ','','<%- param %>',"
                              ","<% }) %>","
                              ","
                              "],"job");return _.extend({},s.prototype.templates,{titleBar:t,subtitle:a,details:l})}(),{JobListItemView:l}}); +//# sourceMappingURL=../../../maps/mvc/job/job-li.js.map diff --git a/static/scripts/mvc/job/job-model.js b/static/scripts/mvc/job/job-model.js index a6b29a32bd0..76c192b6318 100644 --- a/static/scripts/mvc/job/job-model.js +++ b/static/scripts/mvc/job/job-model.js @@ -1,2 +1,2 @@ -define(["mvc/history/history-contents","mvc/dataset/states","utils/ajax-queue","mvc/base-mvc","utils/localization"],function(a,b,c,d){var e="jobs",f=d.SearchableModelMixin,g=Backbone.Model.extend(d.LoggableMixin).extend(d.mixin(f,{_logNamespace:e,defaults:{model_class:"Job",tool_id:null,exit_code:null,inputs:{},outputs:{},params:{},create_time:null,update_time:null,state:b.NEW},parse:function(a){return a.params=this.parseParams(a.params),a},parseParams:function(a){var b={};return _.each(a,function(a,c){b[c]=JSON.parse(a)}),b},initialize:function(b,c){this.debug(this+"(Job).initialize",b,c),this.set("params",this.parseParams(this.get("params")),{silent:!0}),this.outputCollection=b.outputCollection||new a.HistoryContents([]),this._setUpListeners()},_setUpListeners:function(){this.on("change:state",function(a,b){this.log(this+" has changed state:",a,b),this.inReadyState()&&this.trigger("state:ready",a,b,this.previous("state"))})},inReadyState:function(){return _.contains(b.READY_STATES,this.get("state"))},hasDetails:function(){return!_.isEmpty(this.get("outputs"))},urlRoot:Galaxy.root+"api/jobs",toString:function(){return["Job(",this.get("id"),":",this.get("tool_id"),")"].join("")}})),h=Backbone.Collection.extend(d.LoggableMixin).extend({_logNamespace:e,model:g,urlRoot:Galaxy.root+"api/jobs",url:function(){return this.urlRoot},intialize:function(a,b){console.debug(a,b)},ids:function(){return this.map(function(a){return a.get("id")})},notReady:function(){return this.filter(function(a){return!a.inReadyState()})},haveDetails:function(){return this.all(function(a){return a.hasDetails()})},queueDetailFetching:function(){var a=this,b=new c.AjaxQueue(this.map(function(a){return function(){return a.fetch({silent:!0})}}));return b.done(function(){a.trigger("details-loaded")}),b},matches:function(a){return this.filter(function(b){return b.matches(a)})},toString:function(){return["JobCollection(",this.length,")"].join("")}},{fromHistory:function(a){console.debug(this);var b=this,c=new b([]);return c.fetch({data:{history_id:a}}).done(function(){window.queue=c.queueDetailFetching()}),c}});return{Job:g,JobCollection:h}}); -//# sourceMappingURL=../../../maps/mvc/job/job-model.js.map \ No newline at end of file +define(["mvc/history/history-contents","mvc/dataset/states","utils/ajax-queue","mvc/base-mvc","utils/localization"],function(t,e,n,i,o){var s=i.SearchableModelMixin,a=Backbone.Model.extend(i.LoggableMixin).extend(i.mixin(s,{_logNamespace:"jobs",defaults:{model_class:"Job",tool_id:null,exit_code:null,inputs:{},outputs:{},params:{},create_time:null,update_time:null,state:e.NEW},parse:function(t,e){return t.params=this.parseParams(t.params),t},parseParams:function(t){var e={};return _.each(t,function(t,n){e[n]=JSON.parse(t)}),e},initialize:function(e,n){this.debug(this+"(Job).initialize",e,n),this.set("params",this.parseParams(this.get("params")),{silent:!0}),this.outputCollection=e.outputCollection||new t.HistoryContents([]),this._setUpListeners()},_setUpListeners:function(){this.on("change:state",function(t,e){this.log(this+" has changed state:",t,e),this.inReadyState()&&this.trigger("state:ready",t,e,this.previous("state"))})},inReadyState:function(){return _.contains(e.READY_STATES,this.get("state"))},hasDetails:function(){return!_.isEmpty(this.get("outputs"))},urlRoot:Galaxy.root+"api/jobs",toString:function(){return["Job(",this.get("id"),":",this.get("tool_id"),")"].join("")}}));return{Job:a,JobCollection:Backbone.Collection.extend(i.LoggableMixin).extend({_logNamespace:"jobs",model:a,urlRoot:Galaxy.root+"api/jobs",url:function(){return this.urlRoot},intialize:function(t,e){console.debug(t,e)},ids:function(){return this.map(function(t){return t.get("id")})},notReady:function(){return this.filter(function(t){return!t.inReadyState()})},haveDetails:function(){return this.all(function(t){return t.hasDetails()})},queueDetailFetching:function(){var t=this,e=new n.AjaxQueue(this.map(function(t){return function(){return t.fetch({silent:!0})}}));return e.done(function(){t.trigger("details-loaded")}),e},matches:function(t){return this.filter(function(e){return e.matches(t)})},toString:function(){return["JobCollection(",this.length,")"].join("")}},{fromHistory:function(t){console.debug(this);var e=this,n=new e([]);return n.fetch({data:{history_id:t}}).done(function(){window.queue=n.queueDetailFetching()}),n}})}}); +//# sourceMappingURL=../../../maps/mvc/job/job-model.js.map diff --git a/static/scripts/mvc/library/library-dataset-view.js b/static/scripts/mvc/library/library-dataset-view.js index b0299c92fda..c227170eaaf 100644 --- a/static/scripts/mvc/library/library-dataset-view.js +++ b/static/scripts/mvc/library/library-dataset-view.js @@ -1,2 +1,2 @@ -define(["libs/toastr","mvc/library/library-model","utils/utils","mvc/ui/ui-select"],function(a,b,c,d){var e=Backbone.View.extend({el:"#center",model:null,options:{},events:{"click .toolbtn_modify_dataset":"enableModification","click .toolbtn_cancel_modifications":"render","click .toolbtn-download-dataset":"downloadDataset","click .toolbtn-import-dataset":"importIntoHistory","click .toolbtn-share-dataset":"shareDataset","click .btn-copy-link-to-clipboard":"copyToClipboard","click .btn-make-private":"makeDatasetPrivate","click .btn-remove-restrictions":"removeDatasetRestrictions","click .toolbtn_save_permissions":"savePermissions","click .toolbtn_save_modifications":"comingSoon"},select_genome:null,select_extension:null,list_extensions:[],auto:{id:"auto",text:"Auto-detect",description:"This system will try to detect the file type automatically. If your file is not detected properly as one of the known formats, it most likely means that it has some format problems (e.g., different number of columns on different rows). You can still coerce the system to set your data to the format you think it should be. You can also upload compressed files, which will automatically be decompressed."},list_genomes:[],initialize:function(a){this.options=_.extend(this.options,a),this.fetchExtAndGenomes(),this.options.id&&this.fetchDataset()},fetchDataset:function(c){this.options=_.extend(this.options,c),this.model=new b.Item({id:this.options.id});var d=this;this.model.fetch({success:function(){d.options.show_permissions?d.showPermissions():d.options.show_version?d.fetchVersion():d.render()},error:function(b,c){"undefined"!=typeof c.responseJSON?a.error(c.responseJSON.err_msg+" Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}}):a.error("An error ocurred. Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}})}})},render:function(a){this.options=_.extend(this.options,a),$(".tooltip").remove();var b=this.templateDataset();this.$el.html(b({item:this.model})),$(".peek").html(this.model.get("peek")),$("#center [data-toggle]").tooltip()},fetchVersion:function(c){this.options=_.extend(this.options,c),that=this,this.options.ldda_id?(this.ldda=new b.Ldda({id:this.options.ldda_id}),this.ldda.url=this.ldda.urlRoot+this.model.id+"/versions/"+this.ldda.id,this.ldda.fetch({success:function(){that.renderVersion()},error:function(b,c){a.error("undefined"!=typeof c.responseJSON?c.responseJSON.err_msg:"An error ocurred.")}})):(this.render(),a.error("Library dataset version requested but no id provided."))},renderVersion:function(){$(".tooltip").remove();var a=this.templateVersion();this.$el.html(a({item:this.model,ldda:this.ldda})),$(".peek").html(this.ldda.get("peek"))},enableModification:function(){$(".tooltip").remove();var a=this.templateModifyDataset();this.$el.html(a({item:this.model})),this.renderSelectBoxes({genome_build:this.model.get("genome_build"),file_ext:this.model.get("file_ext")}),$(".peek").html(this.model.get("peek")),$("#center [data-toggle]").tooltip()},downloadDataset:function(){var a=Galaxy.root+"api/libraries/datasets/download/uncompressed",b={ld_ids:this.id};this.processDownload(a,b)},processDownload:function(b,c,d){if(b&&c){c="string"==typeof c?c:$.param(c);var e="";$.each(c.split("&"),function(){var a=this.split("=");e+=''}),$('
                              '+e+"
                              ").appendTo("body").submit().remove(),a.info("Your download will begin soon.")}},importIntoHistory:function(){this.refreshUserHistoriesList(function(a){var b=a.templateBulkImportInModal();a.modal=Galaxy.modal,a.modal.show({closing_events:!0,title:"Import into History",body:b({histories:a.histories.models}),buttons:{Import:function(){a.importCurrentIntoHistory()},Close:function(){Galaxy.modal.hide()}}})})},refreshUserHistoriesList:function(c){var d=this;this.histories=new b.GalaxyHistories,this.histories.fetch({success:function(b){0===b.length?a.warning("You have to create history first. Click this to do so.","",{onclick:function(){window.location=Galaxy.root}}):c(d)},error:function(b,c){a.error("undefined"!=typeof c.responseJSON?c.responseJSON.err_msg:"An error ocurred.")}})},importCurrentIntoHistory:function(){this.modal.disableButton("Import");var b=this.modal.$("input[name=history_name]").val(),c=this;if(""!==b)$.post(Galaxy.root+"api/histories",{name:b}).done(function(a){c.processImportToHistory(a.id)}).fail(function(){a.error("An error ocurred.")}).always(function(){c.modal.enableButton("Import")});else{var d=$(this.modal.$el).find("select[name=dataset_import_single] option:selected").val();this.processImportToHistory(d),this.modal.enableButton("Import")}},processImportToHistory:function(c){var d=new b.HistoryItem;d.url=d.urlRoot+c+"/contents",jQuery.getJSON(Galaxy.root+"history/set_as_current?id="+c),d.save({content:this.id,source:"library"},{success:function(){Galaxy.modal.hide(),a.success("Dataset imported. Click this to start analyzing it.","",{onclick:function(){window.location=Galaxy.root}})},error:function(b,c){a.error("undefined"!=typeof c.responseJSON?"Dataset not imported. "+c.responseJSON.err_msg:"An error occured. Dataset not imported. Please try again.")}})},shareDataset:function(){a.info("Feature coming soon.")},goBack:function(){Galaxy.libraries.library_router.back()},showPermissions:function(b){this.options=_.extend(this.options,b),$(".tooltip").remove(),void 0!==this.options.fetched_permissions&&this.model.set(0===this.options.fetched_permissions.access_dataset_roles.length?{is_unrestricted:!0}:{is_unrestricted:!1});var c=!1;Galaxy.user&&(c=Galaxy.user.isAdmin());var d=this.templateDatasetPermissions();this.$el.html(d({item:this.model,is_admin:c}));var e=this;$.get(Galaxy.root+"api/libraries/datasets/"+e.id+"/permissions?scope=current").done(function(a){e.prepareSelectBoxes({fetched_permissions:a,is_admin:c})}).fail(function(){a.error("An error occurred while attempting to fetch dataset permissions.")}),$("#center [data-toggle]").tooltip(),$("#center").css("overflow","auto")},_serializeRoles:function(a){for(var b=[],c=0;c=0;b--)ids_list.push(a[b].id);return ids_list},savePermissions:function(){var b=this,c=this._extractIds(this.accessSelectObject.$el.select2("data")),d=this._extractIds(this.manageSelectObject.$el.select2("data")),e=this._extractIds(this.modifySelectObject.$el.select2("data"));$.post(Galaxy.root+"api/libraries/datasets/"+b.id+"/permissions?action=set_permissions",{"access_ids[]":c,"manage_ids[]":d,"modify_ids[]":e}).done(function(c){b.showPermissions({fetched_permissions:c}),a.success("Permissions saved.")}).fail(function(){a.error("An error occurred while attempting to set dataset permissions.")})},fetchExtAndGenomes:function(){var a=this;c.get({url:Galaxy.root+"api/datatypes?extension_only=False",success:function(b){for(key in b)a.list_extensions.push({id:b[key].extension,text:b[key].extension,description:b[key].description,description_url:b[key].description_url});a.list_extensions.sort(function(a,b){return a.id>b.id?1:a.idb.id?1:a.id','
                              ','",'",'<% if (item.get("can_user_modify")) { %>','","<% } %>",'<% if (item.get("can_user_manage")) { %>','/datasets/<%- item.id %>/permissions">','","","<% } %>","
                              ",'",'<% if (item.get("is_unrestricted")) { %>','
                              ',"This dataset is unrestricted so everybody can access it. Just share the URL of this page. ",' ","
                              ","<% } %>",'
                              ','',"",'','',"",'<% if (item.get("file_ext")) { %>',"",'','',"","<% } %>",'<% if (item.get("genome_build")) { %>',"",'','',"","<% } %>",'<% if (item.get("file_size")) { %>',"",'','',"","<% } %>",'<% if (item.get("date_uploaded")) { %>',"",'','',"","<% } %>",'<% if (item.get("uploaded_by")) { %>',"",'','',"","<% } %>",'<% if (item.get("metadata_data_lines")) { %>',"",'','',"","<% } %>",'<% if (item.get("metadata_comment_lines")) { %>',"",'','',"","<% } %>",'<% if (item.get("metadata_columns")) { %>',"",'','',"","<% } %>",'<% if (item.get("metadata_column_types")) { %>',"",'','',"","<% } %>",'<% if (item.get("message")) { %>',"",'','',"","<% } %>",'<% if (item.get("misc_blurb")) { %>',"",'','',"","<% } %>",'<% if (item.get("misc_info")) { %>',"",'','',"","<% } %>","
                              ">Name<%= _.escape(item.get("name")) %>
                              Data type<%= _.escape(item.get("file_ext")) %>
                              Genome build<%= _.escape(item.get("genome_build")) %>
                              Size<%= _.escape(item.get("file_size")) %>
                              Date uploaded (UTC)<%= _.escape(item.get("date_uploaded")) %>
                              Uploaded by<%= _.escape(item.get("uploaded_by")) %>
                              Data Lines<%= _.escape(item.get("metadata_data_lines")) %>
                              Comment Lines<%= _.escape(item.get("metadata_comment_lines")) %>
                              Number of Columns<%= _.escape(item.get("metadata_columns")) %>
                              Column Types<%= _.escape(item.get("metadata_column_types")) %>
                              Message<%= _.escape(item.get("message")) %>
                              Miscellaneous blurb<%= _.escape(item.get("misc_blurb")) %>
                              Miscellaneous information<%= _.escape(item.get("misc_info")) %>
                              ","
                              ",'
                              ',"
                              ","
                              ",'<% if (item.get("has_versions")) { %>',"
                              ","

                              Expired versions:

                              ","
                              ","<% } %>","
                              ","
                              "].join(""))},templateVersion:function(){return _.template(['
                              ','",'",'
                              This is an expired version of the library dataset: <%= _.escape(item.get("name")) %>
                              ','
                              ','',"",'','',"",'<% if (ldda.get("file_ext")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("genome_build")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("file_size")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("date_uploaded")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("uploaded_by")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("metadata_data_lines")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("metadata_comment_lines")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("metadata_columns")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("metadata_column_types")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("message")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("misc_blurb")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("misc_info")) { %>',"",'','',"","<% } %>","
                              Name<%= _.escape(ldda.get("name")) %>
                              Data type<%= _.escape(ldda.get("file_ext")) %>
                              Genome build<%= _.escape(ldda.get("genome_build")) %>
                              Size<%= _.escape(ldda.get("file_size")) %>
                              Date uploaded (UTC)<%= _.escape(ldda.get("date_uploaded")) %>
                              Uploaded by<%= _.escape(ldda.get("uploaded_by")) %>
                              Data Lines<%= _.escape(ldda.get("metadata_data_lines")) %>
                              Comment Lines<%= _.escape(ldda.get("metadata_comment_lines")) %>
                              Number of Columns<%= _.escape(ldda.get("metadata_columns")) %>
                              Column Types<%= _.escape(ldda.get("metadata_column_types")) %>
                              Message<%= _.escape(ldda.get("message")) %>
                              Miscellaneous blurb<%= _.escape(ldda.get("misc_blurb")) %>
                              Miscellaneous information<%= _.escape(ldda.get("misc_info")) %>
                              ","
                              ",'
                              ',"
                              ","
                              ","
                              ","
                              "].join(""))},templateModifyDataset:function(){return _.template(['
                              ','
                              ','",'","
                              ",'",'
                              ','

                              For full editing options please import the dataset to history and use "Edit attributes" on it.

                              ','',"",'','',"","",'',"","","",'',"","","",'','',"","",'','',"","",'','',"",'','','',"",'','<% if (item.get("metadata_comment_lines") === "") { %>','',"<% } else { %>",'',"<% } %>","","",'','',"","",'','',"","",'','',"","",'','',"","",'','',"","
                              ">Name">
                              Data type",'',"
                              Genome build",'',"
                              Size<%= _.escape(item.get("file_size")) %>
                              Date uploaded (UTC)<%= _.escape(item.get("date_uploaded")) %>
                              Uploaded by<%= _.escape(item.get("uploaded_by")) %>
                              Data Lines<%= _.escape(item.get("metadata_data_lines")) %>
                              Comment Lines<%= _.escape(item.get("metadata_comment_lines")) %>unknown
                              Number of Columns<%= _.escape(item.get("metadata_columns")) %>
                              Column Types<%= _.escape(item.get("metadata_column_types")) %>
                              Message<%= _.escape(item.get("message")) %>
                              Miscellaneous information<%= _.escape(item.get("misc_info")) %>
                              Miscellaneous blurb<%= _.escape(item.get("misc_blurb")) %>
                              ","
                              ",'
                              ',"
                              ","
                              ","
                              ","
                              "].join(""))},templateDatasetPermissions:function(){return _.template(['
                              ','",'",'

                              Dataset: <%= _.escape(item.get("name")) %>

                              ','
                              ',"<% if (is_admin) { %>","You are logged in as an administrator therefore you can manage any dataset on this Galaxy instance. Please make sure you understand the consequences.","<% } else { %>","You can assign any number of roles to any of the following permission types. However please read carefully the implications of such actions.","<% } %>","
                              ",'
                              ',"

                              Library-related permissions

                              ","

                              Roles that can modify the library item

                              ",'
                              ','
                              User with any of these roles can modify name, metadata, and other information about this library item.
                              ',"
                              ","

                              Dataset-related permissions

                              ",'
                              Changes made below will affect every library item that was created from this dataset and also every history this dataset is part of.
                              ','<% if (!item.get("is_unrestricted")) { %>',"

                              You can remove all access restrictions on this dataset. ",'","

                              ","<% } else { %>","This dataset is unrestricted so everybody can access it. Just share the URL of this page.",'","

                              You can make this dataset private to you. ",'","

                              ","<% } %>","

                              Roles that can access the dataset

                              ",'
                              ','
                              ',"User has to have all these roles in order to access this dataset."," Users without access permission cannot have other permissions on this dataset."," If there are no access roles set on the dataset it is considered unrestricted.","
                              ","

                              Roles that can manage permissions on the dataset

                              ",'
                              ','
                              ',"User with any of these roles can manage permissions of this dataset. If you remove yourself you will loose the ability manage this dataset unless you are an admin.","
                              ",'","
                              ","
                              "].join(""))},templateBulkImportInModal:function(){return _.template(["
                              ",'
                              ',"Select history: ",'","
                              ",'
                              ',"or create new: ",'',"","
                              ","
                              "].join(""))},templateAccessSelect:function(){return _.template(['"].join(""))}});return{LibraryDatasetView:e}}); -//# sourceMappingURL=../../../maps/mvc/library/library-dataset-view.js.map \ No newline at end of file +define(["libs/toastr","mvc/library/library-model","utils/utils","mvc/ui/ui-select"],function(t,e,s,a){return{LibraryDatasetView:Backbone.View.extend({el:"#center",model:null,options:{},events:{"click .toolbtn_modify_dataset":"enableModification","click .toolbtn_cancel_modifications":"render","click .toolbtn-download-dataset":"downloadDataset","click .toolbtn-import-dataset":"importIntoHistory","click .toolbtn-share-dataset":"shareDataset","click .btn-copy-link-to-clipboard":"copyToClipboard","click .btn-make-private":"makeDatasetPrivate","click .btn-remove-restrictions":"removeDatasetRestrictions","click .toolbtn_save_permissions":"savePermissions","click .toolbtn_save_modifications":"comingSoon"},select_genome:null,select_extension:null,list_extensions:[],auto:{id:"auto",text:"Auto-detect",description:"This system will try to detect the file type automatically. If your file is not detected properly as one of the known formats, it most likely means that it has some format problems (e.g., different number of columns on different rows). You can still coerce the system to set your data to the format you think it should be. You can also upload compressed files, which will automatically be decompressed."},list_genomes:[],initialize:function(t){this.options=_.extend(this.options,t),this.fetchExtAndGenomes(),this.options.id&&this.fetchDataset()},fetchDataset:function(s){this.options=_.extend(this.options,s),this.model=new e.Item({id:this.options.id});var a=this;this.model.fetch({success:function(){a.options.show_permissions?a.showPermissions():a.options.show_version?a.fetchVersion():a.render()},error:function(e,s){void 0!==s.responseJSON?t.error(s.responseJSON.err_msg+" Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}}):t.error("An error ocurred. Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}})}})},render:function(t){this.options=_.extend(this.options,t),$(".tooltip").remove();var e=this.templateDataset();this.$el.html(e({item:this.model})),$(".peek").html(this.model.get("peek")),$("#center [data-toggle]").tooltip()},fetchVersion:function(s){this.options=_.extend(this.options,s),that=this,this.options.ldda_id?(this.ldda=new e.Ldda({id:this.options.ldda_id}),this.ldda.url=this.ldda.urlRoot+this.model.id+"/versions/"+this.ldda.id,this.ldda.fetch({success:function(){that.renderVersion()},error:function(e,s){void 0!==s.responseJSON?t.error(s.responseJSON.err_msg):t.error("An error ocurred.")}})):(this.render(),t.error("Library dataset version requested but no id provided."))},renderVersion:function(){$(".tooltip").remove();var t=this.templateVersion();this.$el.html(t({item:this.model,ldda:this.ldda})),$(".peek").html(this.ldda.get("peek"))},enableModification:function(){$(".tooltip").remove();var t=this.templateModifyDataset();this.$el.html(t({item:this.model})),this.renderSelectBoxes({genome_build:this.model.get("genome_build"),file_ext:this.model.get("file_ext")}),$(".peek").html(this.model.get("peek")),$("#center [data-toggle]").tooltip()},downloadDataset:function(){var t=Galaxy.root+"api/libraries/datasets/download/uncompressed",e={ld_ids:this.id};this.processDownload(t,e)},processDownload:function(e,s,a){if(e&&s){s="string"==typeof s?s:$.param(s);var i="";$.each(s.split("&"),function(){var t=this.split("=");i+=''}),$('
                              '+i+"
                              ").appendTo("body").submit().remove(),t.info("Your download will begin soon.")}},importIntoHistory:function(){this.refreshUserHistoriesList(function(t){var e=t.templateBulkImportInModal();t.modal=Galaxy.modal,t.modal.show({closing_events:!0,title:"Import into History",body:e({histories:t.histories.models}),buttons:{Import:function(){t.importCurrentIntoHistory()},Close:function(){Galaxy.modal.hide()}}})})},refreshUserHistoriesList:function(s){var a=this;this.histories=new e.GalaxyHistories,this.histories.fetch({success:function(e){0===e.length?t.warning("You have to create history first. Click this to do so.","",{onclick:function(){window.location=Galaxy.root}}):s(a)},error:function(e,s){void 0!==s.responseJSON?t.error(s.responseJSON.err_msg):t.error("An error ocurred.")}})},importCurrentIntoHistory:function(){this.modal.disableButton("Import");var e=this.modal.$("input[name=history_name]").val(),s=this;if(""!==e)$.post(Galaxy.root+"api/histories",{name:e}).done(function(t){s.processImportToHistory(t.id)}).fail(function(e,s,a){t.error("An error ocurred.")}).always(function(){s.modal.enableButton("Import")});else{var a=$(this.modal.$el).find("select[name=dataset_import_single] option:selected").val();this.processImportToHistory(a),this.modal.enableButton("Import")}},processImportToHistory:function(s){var a=new e.HistoryItem;a.url=a.urlRoot+s+"/contents",jQuery.getJSON(Galaxy.root+"history/set_as_current?id="+s),a.save({content:this.id,source:"library"},{success:function(){Galaxy.modal.hide(),t.success("Dataset imported. Click this to start analyzing it.","",{onclick:function(){window.location=Galaxy.root}})},error:function(e,s){void 0!==s.responseJSON?t.error("Dataset not imported. "+s.responseJSON.err_msg):t.error("An error occured. Dataset not imported. Please try again.")}})},shareDataset:function(){t.info("Feature coming soon.")},goBack:function(){Galaxy.libraries.library_router.back()},showPermissions:function(e){this.options=_.extend(this.options,e),$(".tooltip").remove(),void 0!==this.options.fetched_permissions&&(0===this.options.fetched_permissions.access_dataset_roles.length?this.model.set({is_unrestricted:!0}):this.model.set({is_unrestricted:!1}));var s=!1;Galaxy.user&&(s=Galaxy.user.isAdmin());var a=this.templateDatasetPermissions();this.$el.html(a({item:this.model,is_admin:s}));var i=this;$.get(Galaxy.root+"api/libraries/datasets/"+i.id+"/permissions?scope=current").done(function(t){i.prepareSelectBoxes({fetched_permissions:t,is_admin:s})}).fail(function(){t.error("An error occurred while attempting to fetch dataset permissions.")}),$("#center [data-toggle]").tooltip(),$("#center").css("overflow","auto")},_serializeRoles:function(t){for(var e=[],s=0;s=0;e--)ids_list.push(t[e].id);return ids_list},savePermissions:function(e){var s=this,a=this._extractIds(this.accessSelectObject.$el.select2("data")),i=this._extractIds(this.manageSelectObject.$el.select2("data")),o=this._extractIds(this.modifySelectObject.$el.select2("data"));$.post(Galaxy.root+"api/libraries/datasets/"+s.id+"/permissions?action=set_permissions",{"access_ids[]":a,"manage_ids[]":i,"modify_ids[]":o}).done(function(e){s.showPermissions({fetched_permissions:e}),t.success("Permissions saved.")}).fail(function(){t.error("An error occurred while attempting to set dataset permissions.")})},fetchExtAndGenomes:function(){var t=this;s.get({url:Galaxy.root+"api/datatypes?extension_only=False",success:function(e){for(key in e)t.list_extensions.push({id:e[key].extension,text:e[key].extension,description:e[key].description,description_url:e[key].description_url});t.list_extensions.sort(function(t,e){return t.id>e.id?1:t.ide.id?1:t.id','
                              ','",'",'<% if (item.get("can_user_modify")) { %>','","<% } %>",'<% if (item.get("can_user_manage")) { %>','/datasets/<%- item.id %>/permissions">','","","<% } %>","
                              ",'",'<% if (item.get("is_unrestricted")) { %>','
                              ',"This dataset is unrestricted so everybody can access it. Just share the URL of this page. ",' ","
                              ","<% } %>",'
                              ','',"",'','',"",'<% if (item.get("file_ext")) { %>',"",'','',"","<% } %>",'<% if (item.get("genome_build")) { %>',"",'','',"","<% } %>",'<% if (item.get("file_size")) { %>',"",'','',"","<% } %>",'<% if (item.get("date_uploaded")) { %>',"",'','',"","<% } %>",'<% if (item.get("uploaded_by")) { %>',"",'','',"","<% } %>",'<% if (item.get("metadata_data_lines")) { %>',"",'','',"","<% } %>",'<% if (item.get("metadata_comment_lines")) { %>',"",'','',"","<% } %>",'<% if (item.get("metadata_columns")) { %>',"",'','',"","<% } %>",'<% if (item.get("metadata_column_types")) { %>',"",'','',"","<% } %>",'<% if (item.get("message")) { %>',"",'','',"","<% } %>",'<% if (item.get("misc_blurb")) { %>',"",'','',"","<% } %>",'<% if (item.get("misc_info")) { %>',"",'','',"","<% } %>","
                              ">Name<%= _.escape(item.get("name")) %>
                              Data type<%= _.escape(item.get("file_ext")) %>
                              Genome build<%= _.escape(item.get("genome_build")) %>
                              Size<%= _.escape(item.get("file_size")) %>
                              Date uploaded (UTC)<%= _.escape(item.get("date_uploaded")) %>
                              Uploaded by<%= _.escape(item.get("uploaded_by")) %>
                              Data Lines<%= _.escape(item.get("metadata_data_lines")) %>
                              Comment Lines<%= _.escape(item.get("metadata_comment_lines")) %>
                              Number of Columns<%= _.escape(item.get("metadata_columns")) %>
                              Column Types<%= _.escape(item.get("metadata_column_types")) %>
                              Message<%= _.escape(item.get("message")) %>
                              Miscellaneous blurb<%= _.escape(item.get("misc_blurb")) %>
                              Miscellaneous information<%= _.escape(item.get("misc_info")) %>
                              ","
                              ",'
                              ',"
                              ","
                              ",'<% if (item.get("has_versions")) { %>',"
                              ","

                              Expired versions:

                              ","
                              ","<% } %>","
                              ","
                              "].join(""))},templateVersion:function(){return _.template(['
                              ','",'",'
                              This is an expired version of the library dataset: <%= _.escape(item.get("name")) %>
                              ','
                              ','',"",'','',"",'<% if (ldda.get("file_ext")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("genome_build")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("file_size")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("date_uploaded")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("uploaded_by")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("metadata_data_lines")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("metadata_comment_lines")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("metadata_columns")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("metadata_column_types")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("message")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("misc_blurb")) { %>',"",'','',"","<% } %>",'<% if (ldda.get("misc_info")) { %>',"",'','',"","<% } %>","
                              Name<%= _.escape(ldda.get("name")) %>
                              Data type<%= _.escape(ldda.get("file_ext")) %>
                              Genome build<%= _.escape(ldda.get("genome_build")) %>
                              Size<%= _.escape(ldda.get("file_size")) %>
                              Date uploaded (UTC)<%= _.escape(ldda.get("date_uploaded")) %>
                              Uploaded by<%= _.escape(ldda.get("uploaded_by")) %>
                              Data Lines<%= _.escape(ldda.get("metadata_data_lines")) %>
                              Comment Lines<%= _.escape(ldda.get("metadata_comment_lines")) %>
                              Number of Columns<%= _.escape(ldda.get("metadata_columns")) %>
                              Column Types<%= _.escape(ldda.get("metadata_column_types")) %>
                              Message<%= _.escape(ldda.get("message")) %>
                              Miscellaneous blurb<%= _.escape(ldda.get("misc_blurb")) %>
                              Miscellaneous information<%= _.escape(ldda.get("misc_info")) %>
                              ","
                              ",'
                              ',"
                              ","
                              ","
                              ","
                              "].join(""))},templateModifyDataset:function(){return _.template(['
                              ','
                              ','",'","
                              ",'",'
                              ','

                              For full editing options please import the dataset to history and use "Edit attributes" on it.

                              ','',"",'','',"","",'',"","","",'',"","","",'','',"","",'','',"","",'','',"",'','','',"",'','<% if (item.get("metadata_comment_lines") === "") { %>','',"<% } else { %>",'',"<% } %>","","",'','',"","",'','',"","",'','',"","",'','',"","",'','',"","
                              ">Name">
                              Data type",'',"
                              Genome build",'',"
                              Size<%= _.escape(item.get("file_size")) %>
                              Date uploaded (UTC)<%= _.escape(item.get("date_uploaded")) %>
                              Uploaded by<%= _.escape(item.get("uploaded_by")) %>
                              Data Lines<%= _.escape(item.get("metadata_data_lines")) %>
                              Comment Lines<%= _.escape(item.get("metadata_comment_lines")) %>unknown
                              Number of Columns<%= _.escape(item.get("metadata_columns")) %>
                              Column Types<%= _.escape(item.get("metadata_column_types")) %>
                              Message<%= _.escape(item.get("message")) %>
                              Miscellaneous information<%= _.escape(item.get("misc_info")) %>
                              Miscellaneous blurb<%= _.escape(item.get("misc_blurb")) %>
                              ","
                              ",'
                              ',"
                              ","
                              ","
                              ","
                              "].join(""))},templateDatasetPermissions:function(){return _.template(['
                              ','",'",'

                              Dataset: <%= _.escape(item.get("name")) %>

                              ','
                              ',"<% if (is_admin) { %>","You are logged in as an administrator therefore you can manage any dataset on this Galaxy instance. Please make sure you understand the consequences.","<% } else { %>","You can assign any number of roles to any of the following permission types. However please read carefully the implications of such actions.","<% } %>","
                              ",'
                              ',"

                              Library-related permissions

                              ","

                              Roles that can modify the library item

                              ",'
                              ','
                              User with any of these roles can modify name, metadata, and other information about this library item.
                              ',"
                              ","

                              Dataset-related permissions

                              ",'
                              Changes made below will affect every library item that was created from this dataset and also every history this dataset is part of.
                              ','<% if (!item.get("is_unrestricted")) { %>',"

                              You can remove all access restrictions on this dataset. ",'","

                              ","<% } else { %>","This dataset is unrestricted so everybody can access it. Just share the URL of this page.",'","

                              You can make this dataset private to you. ",'","

                              ","<% } %>","

                              Roles that can access the dataset

                              ",'
                              ','
                              ',"User has to have all these roles in order to access this dataset."," Users without access permission cannot have other permissions on this dataset."," If there are no access roles set on the dataset it is considered unrestricted.","
                              ","

                              Roles that can manage permissions on the dataset

                              ",'
                              ','
                              ',"User with any of these roles can manage permissions of this dataset. If you remove yourself you will loose the ability manage this dataset unless you are an admin.","
                              ",'","
                              ","
                              "].join(""))},templateBulkImportInModal:function(){return _.template(["
                              ",'
                              ',"Select history: ",'","
                              ",'
                              ',"or create new: ",'',"","
                              ","
                              "].join(""))},templateAccessSelect:function(){return _.template(['"].join(""))}})}}); +//# sourceMappingURL=../../../maps/mvc/library/library-dataset-view.js.map diff --git a/static/scripts/mvc/library/library-folder-view.js b/static/scripts/mvc/library/library-folder-view.js index e6dc509dddd..853d4dae604 100644 --- a/static/scripts/mvc/library/library-folder-view.js +++ b/static/scripts/mvc/library/library-folder-view.js @@ -1,2 +1,2 @@ -define(["libs/toastr","mvc/library/library-model","mvc/ui/ui-select"],function(a,b,c){var d=Backbone.View.extend({el:"#center",model:null,options:{},events:{"click .toolbtn_save_permissions":"savePermissions"},initialize:function(a){this.options=_.extend(this.options,a),this.options.id&&this.fetchFolder()},fetchFolder:function(c){this.options=_.extend(this.options,c),this.model=new b.FolderAsModel({id:this.options.id});var d=this;this.model.fetch({success:function(){d.options.show_permissions?d.showPermissions():d.render()},error:function(b,c){"undefined"!=typeof c.responseJSON?a.error(c.responseJSON.err_msg+" Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}}):a.error("An error ocurred. Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}})}})},render:function(a){$(".tooltip").remove(),this.options=_.extend(this.options,a);var b=this.templateFolder();this.$el.html(b({item:this.model})),$(".peek").html(this.model.get("peek")),$("#center [data-toggle]").tooltip()},shareFolder:function(){a.info("Feature coming soon.")},goBack:function(){Galaxy.libraries.library_router.back()},showPermissions:function(b){this.options=_.extend(this.options,b),$(".tooltip").remove();var c=!1;Galaxy.user&&(c=Galaxy.user.isAdmin());var d=this.templateFolderPermissions();this.$el.html(d({folder:this.model,is_admin:c}));var e=this;$.get(Galaxy.root+"api/folders/"+e.id+"/permissions?scope=current").done(function(a){e.prepareSelectBoxes({fetched_permissions:a})}).fail(function(){a.error("An error occurred while attempting to fetch folder permissions.")}),$("#center [data-toggle]").tooltip(),$("#center").css("overflow","auto")},_serializeRoles:function(a){for(var b=[],c=0;c=0;b--)ids_list.push(a[b].id);return ids_list},savePermissions:function(){var b=this,c=this._extractIds(this.addSelectObject.$el.select2("data")),d=this._extractIds(this.manageSelectObject.$el.select2("data")),e=this._extractIds(this.modifySelectObject.$el.select2("data"));$.post(Galaxy.root+"api/folders/"+b.id+"/permissions?action=set_permissions",{"add_ids[]":c,"manage_ids[]":d,"modify_ids[]":e}).done(function(c){b.showPermissions({fetched_permissions:c}),a.success("Permissions saved.")}).fail(function(){a.error("An error occurred while attempting to set folder permissions.")})},templateFolder:function(){return _.template(['
                              ','
                              ','",'/datasets/<%- item.id %>/permissions">','","",'","
                              ","

                              ","This dataset is unrestricted so everybody can access it. Just share the URL of this page. ",' ","

                              ",'
                              ','',"",'","","",'<% if (item.get("file_ext")) { %>',"",'',"","","<% } %>","
                              ">',"Name","",'<%= _.escape(item.get("name")) %>',"
                              Data type",'<%= _.escape(item.get("file_ext")) %>',"
                              ","
                              ","
                              "].join(""))},templateFolderPermissions:function(){return _.template(['
                              ','","

                              ",'Folder: <%= _.escape(folder.get("name")) %>',"

                              ",'
                              ',"<% if (is_admin) { %>","You are logged in as an administrator therefore you can manage any folder on this Galaxy instance. Please make sure you understand the consequences.","<% } else { %>","You can assign any number of roles to any of the following permission types. However please read carefully the implications of such actions.","<% }%>","
                              ",'
                              ',"

                              Folder permissions

                              ","

                              ","Roles that can manage permissions on this folder","

                              ",'
                              ','
                              ',"User with any of these roles can manage permissions on this folder.","
                              ","

                              ","Roles that can add items to this folder","

                              ",'
                              ','
                              ',"User with any of these roles can add items to this folder (folders and datasets).","
                              ","

                              ","Roles that can modify this folder","

                              ",'
                              ','
                              ',"User with any of these roles can modify this folder (name, etc.).","
                              ",'","
                              ","
                              "].join(""))}});return{FolderView:d}}); -//# sourceMappingURL=../../../maps/mvc/library/library-folder-view.js.map \ No newline at end of file +define(["libs/toastr","mvc/library/library-model","mvc/ui/ui-select"],function(t,e,s){return{FolderView:Backbone.View.extend({el:"#center",model:null,options:{},events:{"click .toolbtn_save_permissions":"savePermissions"},initialize:function(t){this.options=_.extend(this.options,t),this.options.id&&this.fetchFolder()},fetchFolder:function(s){this.options=_.extend(this.options,s),this.model=new e.FolderAsModel({id:this.options.id});var o=this;this.model.fetch({success:function(){o.options.show_permissions?o.showPermissions():o.render()},error:function(e,s){void 0!==s.responseJSON?t.error(s.responseJSON.err_msg+" Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}}):t.error("An error ocurred. Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}})}})},render:function(t){$(".tooltip").remove(),this.options=_.extend(this.options,t);var e=this.templateFolder();this.$el.html(e({item:this.model})),$(".peek").html(this.model.get("peek")),$("#center [data-toggle]").tooltip()},shareFolder:function(){t.info("Feature coming soon.")},goBack:function(){Galaxy.libraries.library_router.back()},showPermissions:function(e){this.options=_.extend(this.options,e),$(".tooltip").remove();var s=!1;Galaxy.user&&(s=Galaxy.user.isAdmin());var o=this.templateFolderPermissions();this.$el.html(o({folder:this.model,is_admin:s}));var i=this;$.get(Galaxy.root+"api/folders/"+i.id+"/permissions?scope=current").done(function(t){i.prepareSelectBoxes({fetched_permissions:t})}).fail(function(){t.error("An error occurred while attempting to fetch folder permissions.")}),$("#center [data-toggle]").tooltip(),$("#center").css("overflow","auto")},_serializeRoles:function(t){for(var e=[],s=0;s=0;e--)ids_list.push(t[e].id);return ids_list},savePermissions:function(e){var s=this,o=this._extractIds(this.addSelectObject.$el.select2("data")),i=this._extractIds(this.manageSelectObject.$el.select2("data")),a=this._extractIds(this.modifySelectObject.$el.select2("data"));$.post(Galaxy.root+"api/folders/"+s.id+"/permissions?action=set_permissions",{"add_ids[]":o,"manage_ids[]":i,"modify_ids[]":a}).done(function(e){s.showPermissions({fetched_permissions:e}),t.success("Permissions saved.")}).fail(function(){t.error("An error occurred while attempting to set folder permissions.")})},templateFolder:function(){return _.template(['
                              ','
                              ','",'/datasets/<%- item.id %>/permissions">','","",'","
                              ","

                              ","This dataset is unrestricted so everybody can access it. Just share the URL of this page. ",' ","

                              ",'
                              ','',"",'","","",'<% if (item.get("file_ext")) { %>',"",'',"","","<% } %>","
                              ">',"Name","",'<%= _.escape(item.get("name")) %>',"
                              Data type",'<%= _.escape(item.get("file_ext")) %>',"
                              ","
                              ","
                              "].join(""))},templateFolderPermissions:function(){return _.template(['
                              ','","

                              ",'Folder: <%= _.escape(folder.get("name")) %>',"

                              ",'
                              ',"<% if (is_admin) { %>","You are logged in as an administrator therefore you can manage any folder on this Galaxy instance. Please make sure you understand the consequences.","<% } else { %>","You can assign any number of roles to any of the following permission types. However please read carefully the implications of such actions.","<% }%>","
                              ",'
                              ',"

                              Folder permissions

                              ","

                              ","Roles that can manage permissions on this folder","

                              ",'
                              ','
                              ',"User with any of these roles can manage permissions on this folder.","
                              ","

                              ","Roles that can add items to this folder","

                              ",'
                              ','
                              ',"User with any of these roles can add items to this folder (folders and datasets).","
                              ","

                              ","Roles that can modify this folder","

                              ",'
                              ','
                              ',"User with any of these roles can modify this folder (name, etc.).","
                              ",'","
                              ","
                              "].join(""))}})}}); +//# sourceMappingURL=../../../maps/mvc/library/library-folder-view.js.map diff --git a/static/scripts/mvc/library/library-folderlist-view.js b/static/scripts/mvc/library/library-folderlist-view.js index 01c732caef7..51d6dbc6abe 100644 --- a/static/scripts/mvc/library/library-folderlist-view.js +++ b/static/scripts/mvc/library/library-folderlist-view.js @@ -1,2 +1,2 @@ -define(["layout/masthead","utils/utils","libs/toastr","mvc/library/library-model","mvc/library/library-folderrow-view","mvc/library/library-dataset-view"],function(a,b,c,d,e){var f=Backbone.View.extend({el:"#folder_items_element",progress:0,progressStep:1,folderContainer:null,sort:"asc",events:{"click #select-all-checkboxes":"selectAll","click .dataset_row":"selectClickedRow","click .folder_row":"selectClickedRow","click .sort-folder-link":"sortColumnClicked"},collection:null,defaults:{include_deleted:!1,page_count:null,show_page:null},initialize:function(a){this.options=_.defaults(this.options||{},this.defaults,a),this.modal=null,this.rowViews={},this.collection=new d.Folder,this.listenTo(this.collection,"add",this.renderOne),this.listenTo(this.collection,"remove",this.removeOne),this.listenTo(this.collection,"sort",this.rePaint),this.listenTo(this.collection,"reset",this.rePaint),this.fetchFolder()},fetchFolder:function(a){var a=a||{};this.options.include_deleted=a.include_deleted;var b=this;this.folderContainer=new d.FolderContainer({id:this.options.id}),this.folderContainer.url=this.folderContainer.attributes.urlRoot+this.options.id+"/contents",this.options.include_deleted&&(this.folderContainer.url=this.folderContainer.url+"?include_deleted=true"),this.folderContainer.fetch({success:function(a){b.folder_container=a,b.render()},error:function(a,b){"undefined"!=typeof b.responseJSON?c.error(b.responseJSON.err_msg+" Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}}):c.error("An error ocurred. Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}})}})},render:function(a){this.options=_.extend(this.options,a);var b=this.templateFolder();$(".tooltip").hide();var d,e=this.folderContainer.attributes.metadata.full_path;d=1===e.length?0:e[e.length-2][0],this.$el.html(b({path:this.folderContainer.attributes.metadata.full_path,parent_library_id:this.folderContainer.attributes.metadata.parent_library_id,id:this.options.id,upper_folder_id:d,order:this.sort})),this.options.dataset_id?(row=_.findWhere(that.rowViews,{id:this.options.dataset_id}),row?row.showDatasetDetails():c.error("Requested dataset not found. Showing folder instead.")):((null===this.options.show_page||this.options.show_page<1)&&(this.options.show_page=1),this.paginate()),$("#center [data-toggle]").tooltip(),$("#center").css("overflow","auto")},paginate:function(a){this.options=_.extend(this.options,a),(null===this.options.show_page||this.options.show_page<1)&&(this.options.show_page=1),this.options.total_items_count=this.folder_container.get("folder").models.length,this.options.page_count=Math.ceil(this.options.total_items_count/Galaxy.libraries.preferences.get("folder_page_size"));var b=Galaxy.libraries.preferences.get("folder_page_size")*(this.options.show_page-1),c=null;c=this.folder_container.get("folder").models.slice(b,b+Galaxy.libraries.preferences.get("folder_page_size")),this.options.items_shown=c.length,Galaxy.libraries.preferences.get("folder_page_size")*this.options.show_page>this.options.total_items_count+Galaxy.libraries.preferences.get("folder_page_size")&&(c=[]),Galaxy.libraries.folderToolbarView.renderPaginator(this.options),this.collection.reset(c)},rePaint:function(a){this.options=_.extend(this.options,a),this.removeAllRows(),this.renderAll(),this.checkEmptiness()},addAll:function(a){_.each(a,function(a){Galaxy.libraries.folderListView.collection.add(a,{sort:!1})}),$("#center [data-toggle]").tooltip(),this.checkEmptiness(),this.postRender()},postRender:function(){var a=this.folderContainer.attributes.metadata;a.contains_file_or_folder="undefined"!=typeof this.collection.findWhere({type:"file"})||"undefined"!=typeof this.collection.findWhere({type:"folder"}),Galaxy.libraries.folderToolbarView.configureElements(a)},renderAll:function(){var a=this;_.each(this.collection.models.reverse(),function(b){a.renderOne(b)}),this.postRender()},renderOne:function(a){this.options.contains_file_or_folder=!0,a.set("folder_id",this.id);var b=new e.FolderRowView({model:a});this.rowViews[a.get("id")]=b,this.$el.find("#first_folder_item").after(b.el)},removeOne:function(a){this.$el.find("tr").filter(function(){return $(this).data("id")&&$(this).data("id")===a.id}).remove()},removeAllRows:function(){$(".library-row").remove()},checkEmptiness:function(){0===this.$el.find(".dataset_row").length&&0===this.$el.find(".folder_row").length?this.$el.find(".empty-folder-message").show():this.$el.find(".empty-folder-message").hide()},sortColumnClicked:function(a){a.preventDefault(),"asc"===this.sort?(this.sortFolder("name","desc"),this.sort="desc"):(this.sortFolder("name","asc"),this.sort="asc"),this.renderSortIcon()},sortFolder:function(a,b){if("undefined"===a&&"undefined"===b)return this.collection.sortByNameAsc();if("name"===a){if("asc"===b)return this.collection.sortByNameAsc();if("desc"===b)return this.collection.sortByNameDesc()}},selectAll:function(a){var b=a.target.checked;that=this,$(":checkbox","#folder_list_body").each(function(){this.checked=b,$row=$(this.parentElement.parentElement),b?that.makeDarkRow($row):that.makeWhiteRow($row)})},selectClickedRow:function(a){var b,c,d="";"input"===a.target.localName?(d=a.target,b=$(a.target.parentElement.parentElement),c="input"):"td"===a.target.localName&&(b=$(a.target.parentElement),d=b.find(":checkbox")[0],c="td"),d.checked?"td"===c?(d.checked="",this.makeWhiteRow(b)):"input"===c&&this.makeDarkRow(b):"td"===c?(d.checked="selected",this.makeDarkRow(b)):"input"===c&&this.makeWhiteRow(b)},makeDarkRow:function(a){a.removeClass("light").addClass("dark"),a.find("a").removeClass("light").addClass("dark"),a.find(".fa-file-o").removeClass("fa-file-o").addClass("fa-file"),a.find(".fa-folder-o").removeClass("fa-folder-o").addClass("fa-folder")},makeWhiteRow:function(a){a.removeClass("dark").addClass("light"),a.find("a").removeClass("dark").addClass("light"),a.find(".fa-file").removeClass("fa-file").addClass("fa-file-o"),a.find(".fa-folder").removeClass("fa-folder").addClass("fa-folder-o")},renderSortIcon:function(){"asc"===this.sort?$(".sort-icon").removeClass("fa-sort-alpha-desc").addClass("fa-sort-alpha-asc"):$(".sort-icon").removeClass("fa-sort-alpha-asc").addClass("fa-sort-alpha-desc")},templateFolder:function(){return _.template(['",'',"",'','','','','','','',' ',"",'','',"","","","","","","","","","","
                              name descriptiondata typesizetime updated (UTC)
                              ",'" title="Go to parent folder" class="btn_open_folder btn btn-default btn-xs">..',"
                              ",'"].join(""))}});return{FolderListView:f}}); -//# sourceMappingURL=../../../maps/mvc/library/library-folderlist-view.js.map \ No newline at end of file +define(["layout/masthead","utils/utils","libs/toastr","mvc/library/library-model","mvc/library/library-folderrow-view","mvc/library/library-dataset-view"],function(e,t,i,o,s,r){return{FolderListView:Backbone.View.extend({el:"#folder_items_element",progress:0,progressStep:1,folderContainer:null,sort:"asc",events:{"click #select-all-checkboxes":"selectAll","click .dataset_row":"selectClickedRow","click .folder_row":"selectClickedRow","click .sort-folder-link":"sortColumnClicked"},collection:null,defaults:{include_deleted:!1,page_count:null,show_page:null},initialize:function(e){this.options=_.defaults(this.options||{},this.defaults,e),this.modal=null,this.rowViews={},this.collection=new o.Folder,this.listenTo(this.collection,"add",this.renderOne),this.listenTo(this.collection,"remove",this.removeOne),this.listenTo(this.collection,"sort",this.rePaint),this.listenTo(this.collection,"reset",this.rePaint),this.fetchFolder()},fetchFolder:function(e){var e=e||{};this.options.include_deleted=e.include_deleted;var t=this;this.folderContainer=new o.FolderContainer({id:this.options.id}),this.folderContainer.url=this.folderContainer.attributes.urlRoot+this.options.id+"/contents",this.options.include_deleted&&(this.folderContainer.url=this.folderContainer.url+"?include_deleted=true"),this.folderContainer.fetch({success:function(e){t.folder_container=e,t.render()},error:function(e,t){void 0!==t.responseJSON?i.error(t.responseJSON.err_msg+" Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}}):i.error("An error ocurred. Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}})}})},render:function(e){this.options=_.extend(this.options,e);var t=this.templateFolder();$(".tooltip").hide();var o,s=this.folderContainer.attributes.metadata.full_path;o=1===s.length?0:s[s.length-2][0],this.$el.html(t({path:this.folderContainer.attributes.metadata.full_path,parent_library_id:this.folderContainer.attributes.metadata.parent_library_id,id:this.options.id,upper_folder_id:o,order:this.sort})),this.options.dataset_id?(row=_.findWhere(that.rowViews,{id:this.options.dataset_id}),row?row.showDatasetDetails():i.error("Requested dataset not found. Showing folder instead.")):((null===this.options.show_page||this.options.show_page<1)&&(this.options.show_page=1),this.paginate()),$("#center [data-toggle]").tooltip(),$("#center").css("overflow","auto")},paginate:function(e){this.options=_.extend(this.options,e),(null===this.options.show_page||this.options.show_page<1)&&(this.options.show_page=1),this.options.total_items_count=this.folder_container.get("folder").models.length,this.options.page_count=Math.ceil(this.options.total_items_count/Galaxy.libraries.preferences.get("folder_page_size"));var t=Galaxy.libraries.preferences.get("folder_page_size")*(this.options.show_page-1),i=null;i=this.folder_container.get("folder").models.slice(t,t+Galaxy.libraries.preferences.get("folder_page_size")),this.options.items_shown=i.length,Galaxy.libraries.preferences.get("folder_page_size")*this.options.show_page>this.options.total_items_count+Galaxy.libraries.preferences.get("folder_page_size")&&(i=[]),Galaxy.libraries.folderToolbarView.renderPaginator(this.options),this.collection.reset(i)},rePaint:function(e){this.options=_.extend(this.options,e),this.removeAllRows(),this.renderAll(),this.checkEmptiness()},addAll:function(e){_.each(e,function(e){Galaxy.libraries.folderListView.collection.add(e,{sort:!1})}),$("#center [data-toggle]").tooltip(),this.checkEmptiness(),this.postRender()},postRender:function(){var e=this.folderContainer.attributes.metadata;e.contains_file_or_folder=void 0!==this.collection.findWhere({type:"file"})||void 0!==this.collection.findWhere({type:"folder"}),Galaxy.libraries.folderToolbarView.configureElements(e)},renderAll:function(){var e=this;_.each(this.collection.models.reverse(),function(t){e.renderOne(t)}),this.postRender()},renderOne:function(e){this.options.contains_file_or_folder=!0,e.set("folder_id",this.id);var t=new s.FolderRowView({model:e});this.rowViews[e.get("id")]=t,this.$el.find("#first_folder_item").after(t.el)},removeOne:function(e){this.$el.find("tr").filter(function(){return $(this).data("id")&&$(this).data("id")===e.id}).remove()},removeAllRows:function(){$(".library-row").remove()},checkEmptiness:function(){0===this.$el.find(".dataset_row").length&&0===this.$el.find(".folder_row").length?this.$el.find(".empty-folder-message").show():this.$el.find(".empty-folder-message").hide()},sortColumnClicked:function(e){e.preventDefault(),"asc"===this.sort?(this.sortFolder("name","desc"),this.sort="desc"):(this.sortFolder("name","asc"),this.sort="asc"),this.renderSortIcon()},sortFolder:function(e,t){if("undefined"===e&&"undefined"===t)return this.collection.sortByNameAsc();if("name"===e){if("asc"===t)return this.collection.sortByNameAsc();if("desc"===t)return this.collection.sortByNameDesc()}},selectAll:function(e){var t=e.target.checked;that=this,$(":checkbox","#folder_list_body").each(function(){this.checked=t,$row=$(this.parentElement.parentElement),t?that.makeDarkRow($row):that.makeWhiteRow($row)})},selectClickedRow:function(e){var t,i,o="";"input"===e.target.localName?(o=e.target,t=$(e.target.parentElement.parentElement),i="input"):"td"===e.target.localName&&(t=$(e.target.parentElement),o=t.find(":checkbox")[0],i="td"),o.checked?"td"===i?(o.checked="",this.makeWhiteRow(t)):"input"===i&&this.makeDarkRow(t):"td"===i?(o.checked="selected",this.makeDarkRow(t)):"input"===i&&this.makeWhiteRow(t)},makeDarkRow:function(e){e.removeClass("light").addClass("dark"),e.find("a").removeClass("light").addClass("dark"),e.find(".fa-file-o").removeClass("fa-file-o").addClass("fa-file"),e.find(".fa-folder-o").removeClass("fa-folder-o").addClass("fa-folder")},makeWhiteRow:function(e){e.removeClass("dark").addClass("light"),e.find("a").removeClass("dark").addClass("light"),e.find(".fa-file").removeClass("fa-file").addClass("fa-file-o"),e.find(".fa-folder").removeClass("fa-folder").addClass("fa-folder-o")},renderSortIcon:function(){"asc"===this.sort?$(".sort-icon").removeClass("fa-sort-alpha-desc").addClass("fa-sort-alpha-asc"):$(".sort-icon").removeClass("fa-sort-alpha-asc").addClass("fa-sort-alpha-desc")},templateFolder:function(){return _.template(['",'',"",'','','','','','','',' ',"",'','',"","","","","","","","","","","
                              name descriptiondata typesizetime updated (UTC)
                              ",'" title="Go to parent folder" class="btn_open_folder btn btn-default btn-xs">..',"
                              ",'"].join(""))}})}}); +//# sourceMappingURL=../../../maps/mvc/library/library-folderlist-view.js.map diff --git a/static/scripts/mvc/library/library-folderrow-view.js b/static/scripts/mvc/library/library-folderrow-view.js index fb697597de9..f349fc1b28d 100644 --- a/static/scripts/mvc/library/library-folderrow-view.js +++ b/static/scripts/mvc/library/library-folderrow-view.js @@ -1,2 +1,2 @@ -define(["libs/toastr","mvc/library/library-model","mvc/library/library-dataset-view"],function(a,b,c){var d=Backbone.View.extend({events:{"click .undelete_dataset_btn":"undeleteDataset","click .undelete_folder_btn":"undeleteFolder","click .edit_folder_btn":"startModifications","click .cancel_folder_btn":"cancelModifications","click .save_folder_btn":"saveModifications"},defaults:{type:null,visibility_config:{edit_folder_btn:!0,save_folder_btn:!1,cancel_folder_btn:!1,permission_folder_btn:!0},edit_mode:!1},initialize:function(a){this.options=_.defaults(a||{},this.defaults),this.render(this.options)},render:function(a){this.options=_.extend(this.options,a);var b=this.options.model,c=null;return"folder"===b.get("type")||"LibraryFolder"===b.get("model_class")?(this.options.type="folder",this.prepareButtons(b),c=b.get("deleted")?this.templateRowDeletedFolder():this.templateRowFolder()):"file"===b.get("type")||"LibraryDatasetDatasetAssociation"===b.get("model_class")||"LibraryDataset"===b.get("model_class")?(this.options.type="file",c=b.get("deleted")?this.templateRowDeletedFile():this.templateRowFile()):(Galaxy.emit.error("Unknown library item type found."),Galaxy.emit.error(b.get("type")||b.get("model_class"))),this.setElement(c({content_item:b,edit_mode:this.options.edit_mode,button_config:this.options.visibility_config})),this.$el.show(),this},prepareButtons:function(a){vis_config=this.options.visibility_config,this.options.edit_mode===!1?(vis_config.save_folder_btn=!1,vis_config.cancel_folder_btn=!1,a.get("deleted")===!0?(vis_config.edit_folder_btn=!1,vis_config.permission_folder_btn=!1):a.get("deleted")===!1&&(vis_config.save_folder_btn=!1,vis_config.cancel_folder_btn=!1,a.get("can_modify")===!0&&(vis_config.edit_folder_btn=!0),a.get("can_manage")===!0&&(vis_config.permission_folder_btn=!0))):this.options.edit_mode===!0&&(vis_config.edit_folder_btn=!1,vis_config.permission_folder_btn=!1,vis_config.save_folder_btn=!0,vis_config.cancel_folder_btn=!0),this.options.visibility_config=vis_config},showDatasetDetails:function(){Galaxy.libraries.datasetView=new c.LibraryDatasetView({id:this.id})},undeleteDataset:function(c){$(".tooltip").hide();var d=this,e=$(c.target).closest("tr").data("id"),f=Galaxy.libraries.folderListView.collection.get(e);f.url=f.urlRoot+f.id+"?undelete=true",f.destroy({success:function(c,f){Galaxy.libraries.folderListView.collection.remove(e);var g=new b.Item(f);Galaxy.libraries.folderListView.collection.add(g),Galaxy.libraries.folderListView.collection.sortByNameAsc(),a.success("Dataset undeleted. Click this to see it.","",{onclick:function(){var a=d.model.get("folder_id");window.location=Galaxy.root+"library/list#folders/"+a+"/datasets/"+d.id}})},error:function(b,c){a.error("undefined"!=typeof c.responseJSON?"Dataset was not undeleted. "+c.responseJSON.err_msg:"An error occured! Dataset was not undeleted. Please try again.")}})},undeleteFolder:function(c){$(".tooltip").hide();var d=$(c.target).closest("tr").data("id"),e=Galaxy.libraries.folderListView.collection.get(d);e.url=e.urlRoot+e.id+"?undelete=true",e.destroy({success:function(c,e){Galaxy.libraries.folderListView.collection.remove(d);var f=new b.FolderAsModel(e);Galaxy.libraries.folderListView.collection.add(f),Galaxy.libraries.folderListView.collection.sortByNameAsc(),a.success("Folder undeleted.")},error:function(b,c){a.error("undefined"!=typeof c.responseJSON?"Folder was not undeleted. "+c.responseJSON.err_msg:"An error occured! Folder was not undeleted. Please try again.")}})},startModifications:function(){this.options.edit_mode=!0,this.repaint()},cancelModifications:function(){this.options.edit_mode=!1,this.repaint()},saveModifications:function(){var b=Galaxy.libraries.folderListView.collection.get(this.$el.data("id")),c=!1,d=this.$el.find(".input_folder_name").val();if("undefined"!=typeof d&&d!==b.get("name")){if(!(d.length>2))return void a.warning("Folder name has to be at least 3 characters long.");b.set("name",d),c=!0}var e=this.$el.find(".input_folder_description").val();if("undefined"!=typeof e&&e!==b.get("description")&&(b.set("description",e),c=!0),c){var f=this;b.save(null,{patch:!0,success:function(b){f.options.edit_mode=!1,f.repaint(b),a.success("Changes to folder saved.")},error:function(b,c){a.error("undefined"!=typeof c.responseJSON?c.responseJSON.err_msg:"An error occured while attempting to update the folder.")}})}else this.options.edit_mode=!1,this.repaint(b),a.info("Nothing has changed.")},repaint:function(){$(".tooltip").hide();var a=this.$el;this.render(),a.replaceWith(this.$el),this.$el.find("[data-toggle]").tooltip()},templateRowFolder:function(){return _.template(['',"",'',"",'',"<% if(!edit_mode) { %>","",'<%- content_item.get("name") %>',"","",'<%- content_item.get("description") %>',"","<% } else if(edit_mode){ %>",'','',"<% } %>","folder","","",'<%= _.escape(content_item.get("update_time")) %>',"","","<% if(edit_mode) { %>",'",'","<% } else if (!edit_mode){%>",'",'','","","<% } %>","",""].join(""))},templateRowFile:function(){return _.template(['',"",'',"",'','',"","",'/datasets/<%- content_item.id %>" class="library-dataset">','<%- content_item.get("name") %>',"","",'<%- content_item.get("message") %>','<%= _.escape(content_item.get("file_ext")) %>','<%= _.escape(content_item.get("file_size")) %>','<%= _.escape(content_item.get("update_time")) %>',"",'<% if (content_item.get("is_unrestricted")) { %>','',"<% } %>",'<% if (content_item.get("is_private")) { %>','',"<% } %>",'<% if ((content_item.get("is_unrestricted") === false) && (content_item.get("is_private") === false)) { %>','',"<% } %>",'<% if (content_item.get("can_manage")) { %>','/datasets/<%- content_item.id %>/permissions">','","","<% } %>","",""].join(""))},templateRowDeletedFile:function(){return _.template(['',"",'',"","",'','<%- content_item.get("name") %>',"","",'<%- content_item.get("message") %>',"","",'<%= _.escape(content_item.get("file_ext")) %>',"","",'<%= _.escape(content_item.get("file_size")) %>',"","",'<%= _.escape(content_item.get("update_time")) %>',"","",'','","",""].join(""))},templateRowDeletedFolder:function(){return _.template(['',"",'',"","",'','<%- content_item.get("name") %>',"","",'<%- content_item.get("description") %>',"","","folder","","","",'<%= _.escape(content_item.get("update_time")) %>',"","",'','","",""].join(""))}});return{FolderRowView:d}}); -//# sourceMappingURL=../../../maps/mvc/library/library-folderrow-view.js.map \ No newline at end of file +define(["libs/toastr","mvc/library/library-model","mvc/library/library-dataset-view"],function(t,e,i){return{FolderRowView:Backbone.View.extend({events:{"click .undelete_dataset_btn":"undeleteDataset","click .undelete_folder_btn":"undeleteFolder","click .edit_folder_btn":"startModifications","click .cancel_folder_btn":"cancelModifications","click .save_folder_btn":"saveModifications"},defaults:{type:null,visibility_config:{edit_folder_btn:!0,save_folder_btn:!1,cancel_folder_btn:!1,permission_folder_btn:!0},edit_mode:!1},initialize:function(t){this.options=_.defaults(t||{},this.defaults),this.render(this.options)},render:function(t){this.options=_.extend(this.options,t);var e=this.options.model,i=null;return"folder"===e.get("type")||"LibraryFolder"===e.get("model_class")?(this.options.type="folder",this.prepareButtons(e),i=e.get("deleted")?this.templateRowDeletedFolder():this.templateRowFolder()):"file"===e.get("type")||"LibraryDatasetDatasetAssociation"===e.get("model_class")||"LibraryDataset"===e.get("model_class")?(this.options.type="file",i=e.get("deleted")?this.templateRowDeletedFile():this.templateRowFile()):(Galaxy.emit.error("Unknown library item type found."),Galaxy.emit.error(e.get("type")||e.get("model_class"))),this.setElement(i({content_item:e,edit_mode:this.options.edit_mode,button_config:this.options.visibility_config})),this.$el.show(),this},prepareButtons:function(t){vis_config=this.options.visibility_config,!1===this.options.edit_mode?(vis_config.save_folder_btn=!1,vis_config.cancel_folder_btn=!1,!0===t.get("deleted")?(vis_config.edit_folder_btn=!1,vis_config.permission_folder_btn=!1):!1===t.get("deleted")&&(vis_config.save_folder_btn=!1,vis_config.cancel_folder_btn=!1,!0===t.get("can_modify")&&(vis_config.edit_folder_btn=!0),!0===t.get("can_manage")&&(vis_config.permission_folder_btn=!0))):!0===this.options.edit_mode&&(vis_config.edit_folder_btn=!1,vis_config.permission_folder_btn=!1,vis_config.save_folder_btn=!0,vis_config.cancel_folder_btn=!0),this.options.visibility_config=vis_config},showDatasetDetails:function(){Galaxy.libraries.datasetView=new i.LibraryDatasetView({id:this.id})},undeleteDataset:function(i){$(".tooltip").hide();var o=this,a=$(i.target).closest("tr").data("id"),n=Galaxy.libraries.folderListView.collection.get(a);n.url=n.urlRoot+n.id+"?undelete=true",n.destroy({success:function(i,n){Galaxy.libraries.folderListView.collection.remove(a);var s=new e.Item(n);Galaxy.libraries.folderListView.collection.add(s),Galaxy.libraries.folderListView.collection.sortByNameAsc(),t.success("Dataset undeleted. Click this to see it.","",{onclick:function(){var t=o.model.get("folder_id");window.location=Galaxy.root+"library/list#folders/"+t+"/datasets/"+o.id}})},error:function(e,i){void 0!==i.responseJSON?t.error("Dataset was not undeleted. "+i.responseJSON.err_msg):t.error("An error occured! Dataset was not undeleted. Please try again.")}})},undeleteFolder:function(i){$(".tooltip").hide();var o=$(i.target).closest("tr").data("id"),a=Galaxy.libraries.folderListView.collection.get(o);a.url=a.urlRoot+a.id+"?undelete=true",a.destroy({success:function(i,a){Galaxy.libraries.folderListView.collection.remove(o);var n=new e.FolderAsModel(a);Galaxy.libraries.folderListView.collection.add(n),Galaxy.libraries.folderListView.collection.sortByNameAsc(),t.success("Folder undeleted.")},error:function(e,i){void 0!==i.responseJSON?t.error("Folder was not undeleted. "+i.responseJSON.err_msg):t.error("An error occured! Folder was not undeleted. Please try again.")}})},startModifications:function(){this.options.edit_mode=!0,this.repaint()},cancelModifications:function(){this.options.edit_mode=!1,this.repaint()},saveModifications:function(){var e=Galaxy.libraries.folderListView.collection.get(this.$el.data("id")),i=!1,o=this.$el.find(".input_folder_name").val();if(void 0!==o&&o!==e.get("name")){if(!(o.length>2))return void t.warning("Folder name has to be at least 3 characters long.");e.set("name",o),i=!0}var a=this.$el.find(".input_folder_description").val();if(void 0!==a&&a!==e.get("description")&&(e.set("description",a),i=!0),i){var n=this;e.save(null,{patch:!0,success:function(e){n.options.edit_mode=!1,n.repaint(e),t.success("Changes to folder saved.")},error:function(e,i){void 0!==i.responseJSON?t.error(i.responseJSON.err_msg):t.error("An error occured while attempting to update the folder.")}})}else this.options.edit_mode=!1,this.repaint(e),t.info("Nothing has changed.")},repaint:function(){$(".tooltip").hide();var t=this.$el;this.render(),t.replaceWith(this.$el),this.$el.find("[data-toggle]").tooltip()},templateRowFolder:function(){return _.template(['',"",'',"",'',"<% if(!edit_mode) { %>","",'<%- content_item.get("name") %>',"","",'<%- content_item.get("description") %>',"","<% } else if(edit_mode){ %>",'','',"<% } %>","folder","","",'<%= _.escape(content_item.get("update_time")) %>',"","","<% if(edit_mode) { %>",'",'","<% } else if (!edit_mode){%>",'",'','","","<% } %>","",""].join(""))},templateRowFile:function(){return _.template(['',"",'',"",'','',"","",'/datasets/<%- content_item.id %>" class="library-dataset">','<%- content_item.get("name") %>',"","",'<%- content_item.get("message") %>','<%= _.escape(content_item.get("file_ext")) %>','<%= _.escape(content_item.get("file_size")) %>','<%= _.escape(content_item.get("update_time")) %>',"",'<% if (content_item.get("is_unrestricted")) { %>','',"<% } %>",'<% if (content_item.get("is_private")) { %>','',"<% } %>",'<% if ((content_item.get("is_unrestricted") === false) && (content_item.get("is_private") === false)) { %>','',"<% } %>",'<% if (content_item.get("can_manage")) { %>','/datasets/<%- content_item.id %>/permissions">','","","<% } %>","",""].join(""))},templateRowDeletedFile:function(){return _.template(['',"",'',"","",'','<%- content_item.get("name") %>',"","",'<%- content_item.get("message") %>',"","",'<%= _.escape(content_item.get("file_ext")) %>',"","",'<%= _.escape(content_item.get("file_size")) %>',"","",'<%= _.escape(content_item.get("update_time")) %>',"","",'','","",""].join(""))},templateRowDeletedFolder:function(){return _.template(['',"",'',"","",'','<%- content_item.get("name") %>',"","",'<%- content_item.get("description") %>',"","","folder","","","",'<%= _.escape(content_item.get("update_time")) %>',"","",'','","",""].join(""))}})}}); +//# sourceMappingURL=../../../maps/mvc/library/library-folderrow-view.js.map diff --git a/static/scripts/mvc/library/library-foldertoolbar-view.js b/static/scripts/mvc/library/library-foldertoolbar-view.js index 49bfbb67f58..c0ab7e94466 100644 --- a/static/scripts/mvc/library/library-foldertoolbar-view.js +++ b/static/scripts/mvc/library/library-foldertoolbar-view.js @@ -1,4 +1,3 @@ -define(["layout/masthead","utils/utils","libs/toastr","mvc/library/library-model","mvc/ui/ui-select"],function(a,b,c,d,e){var f=Backbone.View.extend({el:"#center",events:{"click #toolbtn_create_folder":"createFolderFromModal","click #toolbtn_bulk_import":"modalBulkImport","click #include_deleted_datasets_chk":"checkIncludeDeleted","click #toolbtn_bulk_delete":"deleteSelectedItems","click .toolbtn-show-locinfo":"showLocInfo","click .page_size_prompt":"showPageSizePrompt"},defaults:{can_add_library_item:!1,contains_file_or_folder:!1,chain_call_control:{total_number:0,failed_number:0},disabled_jstree_element:"folders"},modal:null,jstree:null,histories:null,select_genome:null,select_extension:null,list_extensions:[],auto:{id:"auto",text:"Auto-detect",description:"This system will try to detect the file type automatically. If your file is not detected properly as one of the known formats, it most likely means that it has some format problems (e.g., different number of columns on different rows). You can still coerce the system to set your data to the format you think it should be. You can also upload compressed files, which will automatically be decompressed."},list_genomes:[],initialize:function(a){this.options=_.defaults(a||{},this.defaults),this.fetchExtAndGenomes(),this.render()},render:function(a){this.options=_.extend(this.options,a);var b=this.templateToolBar(),c={id:this.options.id,is_admin:!1,is_anonym:!0,mutiple_add_dataset_options:!1};Galaxy.user&&(c.is_admin=Galaxy.user.isAdmin(),c.is_anonym=Galaxy.user.isAnonymous(),(null!==Galaxy.config.user_library_import_dir||Galaxy.config.allow_library_path_paste!==!1||null!==Galaxy.config.library_import_dir)&&(c.mutiple_add_dataset_options=!0)),this.$el.html(b(c))},renderPaginator:function(a){this.options=_.extend(this.options,a);var b=this.templatePaginator();$("body").find(".folder-paginator").html(b({id:this.options.id,show_page:parseInt(this.options.show_page),page_count:parseInt(this.options.page_count),total_items_count:this.options.total_items_count,items_shown:this.options.items_shown}))},configureElements:function(a){this.options=_.extend(this.options,a),this.options.can_add_library_item===!0?$(".add-library-items").show():$(".add-library-items").hide(),this.options.contains_file_or_folder===!0&&Galaxy.user?Galaxy.user.isAnonymous()?($(".dataset-manipulation").show(),$(".logged-dataset-manipulation").hide()):($(".logged-dataset-manipulation").show(),$(".dataset-manipulation").show()):($(".logged-dataset-manipulation").hide(),$(".dataset-manipulation").hide()),this.$el.find("[data-toggle]").tooltip()},createFolderFromModal:function(a){a.preventDefault(),a.stopPropagation();var b=this,c=this.templateNewFolderInModal();this.modal=Galaxy.modal,this.modal.show({closing_events:!0,title:"Create New Folder",body:c(),buttons:{Create:function(){b.create_new_folder_event()},Close:function(){Galaxy.modal.hide()}}})},create_new_folder_event:function(){var a=this.serialize_new_folder();if(this.validate_new_folder(a)){var b=new d.FolderAsModel;url_items=Backbone.history.fragment.split("/"),current_folder_id=url_items[url_items.length-1],b.url=b.urlRoot+current_folder_id,b.save(a,{success:function(a){Galaxy.modal.hide(),c.success("Folder created."),a.set({type:"folder"}),Galaxy.libraries.folderListView.collection.add(a)},error:function(a,b){Galaxy.modal.hide(),c.error("undefined"!=typeof b.responseJSON?b.responseJSON.err_msg:"An error ocurred.")}})}else c.error("Folder's name is missing.");return!1},serialize_new_folder:function(){return{name:$("input[name='Name']").val(),description:$("input[name='Description']").val()}},validate_new_folder:function(a){return""!==a.name},modalBulkImport:function(){var a=$("#folder_table").find(":checked");0===a.length?c.info("You must select some datasets first."):this.refreshUserHistoriesList(function(a){var b=a.templateBulkImportInModal();a.modal=Galaxy.modal,a.modal.show({closing_events:!0,title:"Import into History",body:b({histories:a.histories.models}),buttons:{Import:function(){a.importAllIntoHistory()},Close:function(){Galaxy.modal.hide()}}})})},refreshUserHistoriesList:function(a){var b=this;this.histories=new d.GalaxyHistories,this.histories.fetch({success:function(){a(b)},error:function(a,b){c.error("undefined"!=typeof b.responseJSON?b.responseJSON.err_msg:"An error ocurred.")}})},importAllIntoHistory:function(){this.modal.disableButton("Import");var a=this.modal.$("input[name=history_name]").val(),b=this;if(""!==a)$.post(Galaxy.root+"api/histories",{name:a}).done(function(a){b.options.last_used_history_id=a.id,b.processImportToHistory(a.id,a.name)}).fail(function(){c.error("An error ocurred.")}).always(function(){b.modal.enableButton("Import")});else{var d=$("select[name=dataset_import_bulk] option:selected").val();this.options.last_used_history_id=d;var e=$("select[name=dataset_import_bulk] option:selected").text();this.processImportToHistory(d,e),this.modal.enableButton("Import")}},processImportToHistory:function(a,b){var c=[],e=[];$("#folder_table").find(":checked").each(function(){""!==$(this.parentElement.parentElement).data("id")&&this.parentElement.parentElement.classList.contains("dataset_row")?c.push($(this.parentElement.parentElement).data("id")):""!==$(this.parentElement.parentElement).data("id")&&this.parentElement.parentElement.classList.contains("folder_row")&&e.push($(this.parentElement.parentElement).data("id"))});for(var f=[],g=c.length-1;g>=0;g--){var h=c[g],i=new d.HistoryItem;i.url=i.urlRoot+a+"/contents",i.content=h,i.source="library",f.push(i)}for(var g=e.length-1;g>=0;g--){var j=e[g],i=new d.HistoryItem;i.url=i.urlRoot+a+"/contents",i.content=j,i.source="library_folder",f.push(i)}this.initChainCallControl({length:f.length,action:"to_history",history_name:b}),jQuery.getJSON(Galaxy.root+"history/set_as_current?id="+a),this.chainCallImportingIntoHistory(f,b)},updateProgress:function(){this.progress+=this.progressStep,$(".progress-bar-import").width(Math.round(this.progress)+"%"),txt_representation=Math.round(this.progress)+"% Complete",$(".completion_span").text(txt_representation)},download:function(a,b){var c=[],d=[];$("#folder_table").find(":checked").each(function(){""!==$(this.parentElement.parentElement).data("id")&&this.parentElement.parentElement.classList.contains("dataset_row")?c.push($(this.parentElement.parentElement).data("id")):""!==$(this.parentElement.parentElement).data("id")&&this.parentElement.parentElement.classList.contains("folder_row")&&d.push($(this.parentElement.parentElement).data("id"))});var e=Galaxy.root+"api/libraries/datasets/download/"+b,f={ld_ids:c,folder_ids:d};this.processDownload(e,f,"get")},processDownload:function(a,b,d){if(a&&b){b="string"==typeof b?b:$.param(b);var e="";$.each(b.split("&"),function(){var a=this.split("=");e+=''}),$('
                              '+e+"
                              ").appendTo("body").submit().remove(),c.info("Your download will begin soon.")}else c.error("An error occurred.")},addFilesFromHistoryModal:function(){this.refreshUserHistoriesList(function(a){a.modal=Galaxy.modal;var b=a.templateAddFilesFromHistory(),d=a.options.full_path[a.options.full_path.length-1][1];a.modal.show({closing_events:!0,title:"Adding datasets from your history to folder "+d,body:b({histories:a.histories.models}),buttons:{Add:function(){a.addAllDatasetsFromHistory()},Close:function(){Galaxy.modal.hide()}},closing_callback:function(){Galaxy.libraries.library_router.back()}}),a.histories.models.length>0?(a.fetchAndDisplayHistoryContents(a.histories.models[0].id),$("#dataset_add_bulk").change(function(b){a.fetchAndDisplayHistoryContents(b.target.value)})):c.error("An error ocurred.")})},importFilesFromPathModal:function(){var a=this;this.modal=Galaxy.modal;var b=this.templateImportPathModal();this.modal.show({closing_events:!0,title:"Please enter paths to import",body:b({}),buttons:{Import:function(){a.importFromPathsClicked(a)},Close:function(){Galaxy.modal.hide()}},closing_callback:function(){Galaxy.libraries.library_router.navigate("folders/"+a.id,{trigger:!0})}}),this.renderSelectBoxes()},fetchExtAndGenomes:function(){var a=this;b.get({url:Galaxy.root+"api/datatypes?extension_only=False",success:function(b){a.list_extensions=[];for(key in b)a.list_extensions.push({id:b[key].extension,text:b[key].extension,description:b[key].description,description_url:b[key].description_url});a.list_extensions.sort(function(a,b){return a.id>b.id?1:a.idb.id?1:a.id=0;h--)trimmed=f[h].trim(),0!==trimmed.length&&g.push(trimmed);this.initChainCallControl({length:g.length,action:"adding_datasets"}),this.chainCallImportingFolders({paths:g,preserve_dirs:a,link_data:b,source:"admin_path",file_type:d,dbkey:e})}else c.info("Please enter a path relative to Galaxy root.")},initChainCallControl:function(a){var b;switch(a.action){case"adding_datasets":b=this.templateAddingDatasetsProgressBar(),this.modal.$el.find(".modal-body").html(b({folder_name:this.options.folder_name}));break;case"deleting_datasets":b=this.templateDeletingItemsProgressBar(),this.modal.$el.find(".modal-body").html(b());break;case"to_history":b=this.templateImportIntoHistoryProgressBar(),this.modal.$el.find(".modal-body").html(b({history_name:a.history_name}));break;default:Galaxy.emit.error("Wrong action specified.","datalibs")}this.progress=0,this.progressStep=100/a.length,this.options.chain_call_control.total_number=a.length,this.options.chain_call_control.failed_number=0},importFromJstreePath:function(a,b){var d=$("#jstree_browser").jstree().get_selected(!0);selected_nodes=_.filter(d,function(a){return 0==a.state.disabled});var e=this.modal.$el.find(".preserve-checkbox").is(":checked"),f=this.modal.$el.find(".link-checkbox").is(":checked"),g=this.select_extension.value(),h=this.select_genome.value(),i=selected_nodes[0].type,j=[];if(selected_nodes.length<1)c.info("Please select some items first.");else{this.modal.disableButton("Import");for(var k=selected_nodes.length-1;k>=0;k--)void 0!==selected_nodes[k].li_attr.full_path&&j.push(selected_nodes[k].li_attr.full_path);if(this.initChainCallControl({length:j.length,action:"adding_datasets"}),"folder"===i){var l=b.source+"_folder";this.chainCallImportingFolders({paths:j,preserve_dirs:e,link_data:f,source:l,file_type:g,dbkey:h})}else if("file"===i){var l=b.source+"_file";this.chainCallImportingUserdirFiles({paths:j,file_type:g,dbkey:h,source:l})}}},fetchAndDisplayHistoryContents:function(a){var b=new d.HistoryContents({id:a}),e=this;b.fetch({success:function(b){var c=e.templateHistoryContents();e.histories.get(a).set({contents:b}),e.modal.$el.find("#selected_history_content").html(c({history_contents:b.models.reverse()}))},error:function(a,b){c.error("undefined"!=typeof b.responseJSON?b.responseJSON.err_msg:"An error ocurred.")}})},addAllDatasetsFromHistory:function(){var a=this.modal.$el.find("#selected_history_content").find(":checked"),b=[],e=[],f=[];if(a.length<1)c.info("You must select some datasets first.");else{this.modal.disableButton("Add"),a.each(function(){var a=$(this.parentElement).data("id");if(a){var c=$(this.parentElement).data("name");b.push(a),e.push(c)}});for(var g=b.length-1;g>=0;g--){history_item_id=b[g];var h=new d.Item;h.url=Galaxy.root+"api/folders/"+this.options.id+"/contents",h.set("collection"===e[g]?{from_hdca_id:history_item_id}:{from_hda_id:history_item_id}),f.push(h)}this.initChainCallControl({length:f.length,action:"adding_datasets"}),this.chainCallAddingHdas(f)}},chainCallImportingIntoHistory:function(a,b){var d=this,e=a.pop();if("undefined"==typeof e)return 0===this.options.chain_call_control.failed_number?c.success("Selected datasets imported into history. Click this to start analyzing it.","",{onclick:function(){window.location=Galaxy.root}}):this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number?c.error("There was an error and no datasets were imported into history."):this.options.chain_call_control.failed_number=0;i--){var j=new d.Item({id:e[i]});h.push(j)}for(var i=f.length-1;i>=0;i--){var k=new d.FolderAsModel({id:f[i]});h.push(k)}this.options.chain_call_control.total_number=g.length,this.chainCallDeletingItems(h)}},showLocInfo:function(){var a=null,b=this;null!==Galaxy.libraries.libraryListView?(a=Galaxy.libraries.libraryListView.collection.get(this.options.parent_library_id),this.showLocInfoModal(a)):(a=new d.Library({id:this.options.parent_library_id}),a.fetch({success:function(){b.showLocInfoModal(a)},error:function(a,b){c.error("undefined"!=typeof b.responseJSON?b.responseJSON.err_msg:"An error ocurred.")}}))},showLocInfoModal:function(a){var b=this,c=this.templateLocInfoInModal();this.modal=Galaxy.modal,this.modal.show({closing_events:!0,title:"Location Details",body:c({library:a,options:b.options}),buttons:{Close:function(){Galaxy.modal.hide()}}})},showImportModal:function(a){switch(a.source){case"history":this.addFilesFromHistoryModal();break;case"importdir":this.importFilesFromGalaxyFolderModal({source:"importdir"});break;case"path":this.importFilesFromPathModal();break;case"userdir":this.importFilesFromGalaxyFolderModal({source:"userdir"});break;default:Galaxy.libraries.library_router.back(),c.error("Invalid import source.")}},showPageSizePrompt:function(){var a=prompt("How many items per page do you want to see?",Galaxy.libraries.preferences.get("folder_page_size"));null!=a&&a==parseInt(a)&&(Galaxy.libraries.preferences.set({folder_page_size:parseInt(a)}),Galaxy.libraries.folderListView.render({id:this.options.id,show_page:1}))},templateToolBar:function(){return _.template(['
                              ','
                              ','
                              ',"DATA LIBRARIES",'','",'","<% if(mutiple_add_dataset_options) { %>",'","<% } else { %>",'","<% } %>",'",'",'','",'','','","","","
                              ","",'
                              ',"
                              ",'
                              ',"
                              "].join(""))},templateLocInfoInModal:function(){return _.template(["
                              ",'',"",'',"","","","","",'',"",'<% if(library.get("description") !== "") { %>',"","",'',"","<% } %>",'<% if(library.get("synopsis") !== "") { %>',"","",'',"","<% } %>",'<% if(library.get("create_time_pretty") !== "") { %>',"","",'',"","<% } %>","","",'',"","","
                              library
                              name<%- library.get("name") %>
                              description<%- library.get("description") %>
                              synopsis<%- library.get("synopsis") %>
                              created"><%- library.get("create_time_pretty") %>
                              id<%- library.get("id") %>
                              ",'',"",'',"","","","","","","",'<% if(options.folder_description !== "") { %>',"","","","","<% } %>","","","","","","
                              folder
                              name<%- options.folder_name %>
                              description<%- options.folder_description %>
                              id<%- options.id %>
                              ","
                              "].join(""))},templateNewFolderInModal:function(){return _.template(['
                              ',"
                              ",'','',"
                              ","
                              "].join(""))},templateBulkImportInModal:function(){return _.template(["
                              ",'
                              ',"Select history: ",'","
                              ",'
                              ',"or create new: ",'',"","
                              ","
                              "].join(""))},templateImportIntoHistoryProgressBar:function(){return _.template(['
                              ',"Importing selected items to history <%= _.escape(history_name) %>","
                              ",'
                              ','
                              ','0% Complete',"
                              ","
                              "].join(""))},templateAddingDatasetsProgressBar:function(){return _.template(['
                              ',"Adding selected datasets to library folder <%= _.escape(folder_name) %>","
                              ",'
                              ','
                              ','0% Complete',"
                              ","
                              "].join(""))},templateDeletingItemsProgressBar:function(){return _.template(['
                              ',"
                              ",'
                              ','
                              ','0% Complete',"
                              ","
                              "].join(""))},templateBrowserModal:function(){return _.template(['
                              ','
                              All files you select will be imported into the current folder ignoring their folder structure.
                              ','','
                              ','",'","
                              ",'
                              ','",'","
                              ",'",'","
                              ",'
                              ',"
                              ","
                              ","

                              You can set extension type and genome for all imported datasets at once:

                              ","
                              ",'Type: ','Genome: ',"
                              ","
                              "].join(""))},templateImportPathModal:function(){return _.template(['
                              ','
                              All files within the given folders and their subfolders will be imported into the current folder.
                              ','
                              ','",'","
                              ",'',"
                              ","

                              You can set extension type and genome for all imported datasets at once:

                              ","
                              ",'Type: ','Genome: ',"
                              ","
                              "].join(""))},templateAddFilesFromHistory:function(){return _.template(['
                              ',"
                              ","Select history: ",'","
                              ","
                              ",'
                              ',"
                              ","
                              "].join("")); - -},templateHistoryContents:function(){return _.template(["Choose the datasets to import:","
                                ","<% _.each(history_contents, function(history_item) { %>",'<% if (history_item.get("deleted") != true ) { %>','<% if (history_item.get("type") === "collection") { %>','<% var collection_type = history_item.get("collection_type") %>','<% if (collection_type === "list") { %>','
                              • " data-name="<%= _.escape(history_item.get("type")) %>">',' <%= _.escape(history_item.get("hid")) %>: <%= _.escape(history_item.get("name")) %> (Dataset Collection)',"
                              • ","<% } else { %>",'
                              • ','',' <%= _.escape(history_item.get("hid")) %>: <%= _.escape(history_item.get("name")) %> (Dataset Collection of type <%= _.escape(collection_type) %> not supported.)',"","
                              • ","<% } %>",'<% } else if (history_item.get("visible") === true && history_item.get("state") === "ok") { %>','
                              • " data-name="<%= _.escape(history_item.get("type")) %>">',' <%= _.escape(history_item.get("hid")) %>: <%= _.escape(history_item.get("name")) %>',"
                              • ","<% } %>","<% } %>","<% }); %>","
                              "].join(""))},templatePaginator:function(){return _.template(['",""," showing ",'',"<%- items_shown %>",""," of <%- total_items_count %> items",""].join(""))}});return{FolderToolbarView:f}}); -//# sourceMappingURL=../../../maps/mvc/library/library-foldertoolbar-view.js.map \ No newline at end of file +define(["layout/masthead","utils/utils","libs/toastr","mvc/library/library-model","mvc/ui/ui-select"],function(e,t,i,o,s){return{FolderToolbarView:Backbone.View.extend({el:"#center",events:{"click #toolbtn_create_folder":"createFolderFromModal","click #toolbtn_bulk_import":"modalBulkImport","click #include_deleted_datasets_chk":"checkIncludeDeleted","click #toolbtn_bulk_delete":"deleteSelectedItems","click .toolbtn-show-locinfo":"showLocInfo","click .page_size_prompt":"showPageSizePrompt"},defaults:{can_add_library_item:!1,contains_file_or_folder:!1,chain_call_control:{total_number:0,failed_number:0},disabled_jstree_element:"folders"},modal:null,jstree:null,histories:null,select_genome:null,select_extension:null,list_extensions:[],auto:{id:"auto",text:"Auto-detect",description:"This system will try to detect the file type automatically. If your file is not detected properly as one of the known formats, it most likely means that it has some format problems (e.g., different number of columns on different rows). You can still coerce the system to set your data to the format you think it should be. You can also upload compressed files, which will automatically be decompressed."},list_genomes:[],initialize:function(e){this.options=_.defaults(e||{},this.defaults),this.fetchExtAndGenomes(),this.render()},render:function(e){this.options=_.extend(this.options,e);var t=this.templateToolBar(),i={id:this.options.id,is_admin:!1,is_anonym:!0,mutiple_add_dataset_options:!1};Galaxy.user&&(i.is_admin=Galaxy.user.isAdmin(),i.is_anonym=Galaxy.user.isAnonymous(),null===Galaxy.config.user_library_import_dir&&!1===Galaxy.config.allow_library_path_paste&&null===Galaxy.config.library_import_dir||(i.mutiple_add_dataset_options=!0)),this.$el.html(t(i))},renderPaginator:function(e){this.options=_.extend(this.options,e);var t=this.templatePaginator();$("body").find(".folder-paginator").html(t({id:this.options.id,show_page:parseInt(this.options.show_page),page_count:parseInt(this.options.page_count),total_items_count:this.options.total_items_count,items_shown:this.options.items_shown}))},configureElements:function(e){this.options=_.extend(this.options,e),!0===this.options.can_add_library_item?$(".add-library-items").show():$(".add-library-items").hide(),!0===this.options.contains_file_or_folder&&Galaxy.user?Galaxy.user.isAnonymous()?($(".dataset-manipulation").show(),$(".logged-dataset-manipulation").hide()):($(".logged-dataset-manipulation").show(),$(".dataset-manipulation").show()):($(".logged-dataset-manipulation").hide(),$(".dataset-manipulation").hide()),this.$el.find("[data-toggle]").tooltip()},createFolderFromModal:function(e){e.preventDefault(),e.stopPropagation();var t=this,i=this.templateNewFolderInModal();this.modal=Galaxy.modal,this.modal.show({closing_events:!0,title:"Create New Folder",body:i(),buttons:{Create:function(){t.create_new_folder_event()},Close:function(){Galaxy.modal.hide()}}})},create_new_folder_event:function(){var e=this.serialize_new_folder();if(this.validate_new_folder(e)){var t=new o.FolderAsModel;url_items=Backbone.history.fragment.split("/"),current_folder_id=url_items[url_items.length-1],t.url=t.urlRoot+current_folder_id,t.save(e,{success:function(e){Galaxy.modal.hide(),i.success("Folder created."),e.set({type:"folder"}),Galaxy.libraries.folderListView.collection.add(e)},error:function(e,t){Galaxy.modal.hide(),void 0!==t.responseJSON?i.error(t.responseJSON.err_msg):i.error("An error ocurred.")}})}else i.error("Folder's name is missing.");return!1},serialize_new_folder:function(){return{name:$("input[name='Name']").val(),description:$("input[name='Description']").val()}},validate_new_folder:function(e){return""!==e.name},modalBulkImport:function(){0===$("#folder_table").find(":checked").length?i.info("You must select some datasets first."):this.refreshUserHistoriesList(function(e){var t=e.templateBulkImportInModal();e.modal=Galaxy.modal,e.modal.show({closing_events:!0,title:"Import into History",body:t({histories:e.histories.models}),buttons:{Import:function(){e.importAllIntoHistory()},Close:function(){Galaxy.modal.hide()}}})})},refreshUserHistoriesList:function(e){var t=this;this.histories=new o.GalaxyHistories,this.histories.fetch({success:function(){e(t)},error:function(e,t){void 0!==t.responseJSON?i.error(t.responseJSON.err_msg):i.error("An error ocurred.")}})},importAllIntoHistory:function(){this.modal.disableButton("Import");var e=this.modal.$("input[name=history_name]").val(),t=this;if(""!==e)$.post(Galaxy.root+"api/histories",{name:e}).done(function(e){t.options.last_used_history_id=e.id,t.processImportToHistory(e.id,e.name)}).fail(function(e,t,o){i.error("An error ocurred.")}).always(function(){t.modal.enableButton("Import")});else{var o=$("select[name=dataset_import_bulk] option:selected").val();this.options.last_used_history_id=o;var s=$("select[name=dataset_import_bulk] option:selected").text();this.processImportToHistory(o,s),this.modal.enableButton("Import")}},processImportToHistory:function(e,t){var i=[],s=[];$("#folder_table").find(":checked").each(function(){""!==$(this.parentElement.parentElement).data("id")&&this.parentElement.parentElement.classList.contains("dataset_row")?i.push($(this.parentElement.parentElement).data("id")):""!==$(this.parentElement.parentElement).data("id")&&this.parentElement.parentElement.classList.contains("folder_row")&&s.push($(this.parentElement.parentElement).data("id"))});for(var a=[],r=i.length-1;r>=0;r--){var l=i[r],n=new o.HistoryItem;n.url=n.urlRoot+e+"/contents",n.content=l,n.source="library",a.push(n)}for(var r=s.length-1;r>=0;r--){var d=s[r],n=new o.HistoryItem;n.url=n.urlRoot+e+"/contents",n.content=d,n.source="library_folder",a.push(n)}this.initChainCallControl({length:a.length,action:"to_history",history_name:t}),jQuery.getJSON(Galaxy.root+"history/set_as_current?id="+e),this.chainCallImportingIntoHistory(a,t)},updateProgress:function(){this.progress+=this.progressStep,$(".progress-bar-import").width(Math.round(this.progress)+"%"),txt_representation=Math.round(this.progress)+"% Complete",$(".completion_span").text(txt_representation)},download:function(e,t){var i=[],o=[];$("#folder_table").find(":checked").each(function(){""!==$(this.parentElement.parentElement).data("id")&&this.parentElement.parentElement.classList.contains("dataset_row")?i.push($(this.parentElement.parentElement).data("id")):""!==$(this.parentElement.parentElement).data("id")&&this.parentElement.parentElement.classList.contains("folder_row")&&o.push($(this.parentElement.parentElement).data("id"))});var s=Galaxy.root+"api/libraries/datasets/download/"+t,a={ld_ids:i,folder_ids:o};this.processDownload(s,a,"get")},processDownload:function(e,t,o){if(e&&t){t="string"==typeof t?t:$.param(t);var s="";$.each(t.split("&"),function(){var e=this.split("=");s+=''}),$('
                              '+s+"
                              ").appendTo("body").submit().remove(),i.info("Your download will begin soon.")}else i.error("An error occurred.")},addFilesFromHistoryModal:function(){this.refreshUserHistoriesList(function(e){e.modal=Galaxy.modal;var t=e.templateAddFilesFromHistory(),o=e.options.full_path[e.options.full_path.length-1][1];e.modal.show({closing_events:!0,title:"Adding datasets from your history to folder "+o,body:t({histories:e.histories.models}),buttons:{Add:function(){e.addAllDatasetsFromHistory()},Close:function(){Galaxy.modal.hide()}},closing_callback:function(){Galaxy.libraries.library_router.back()}}),e.histories.models.length>0?(e.fetchAndDisplayHistoryContents(e.histories.models[0].id),$("#dataset_add_bulk").change(function(t){e.fetchAndDisplayHistoryContents(t.target.value)})):i.error("An error ocurred.")})},importFilesFromPathModal:function(){var e=this;this.modal=Galaxy.modal;var t=this.templateImportPathModal();this.modal.show({closing_events:!0,title:"Please enter paths to import",body:t({}),buttons:{Import:function(){e.importFromPathsClicked(e)},Close:function(){Galaxy.modal.hide()}},closing_callback:function(){Galaxy.libraries.library_router.navigate("folders/"+e.id,{trigger:!0})}}),this.renderSelectBoxes()},fetchExtAndGenomes:function(){var e=this;t.get({url:Galaxy.root+"api/datatypes?extension_only=False",success:function(t){e.list_extensions=[];for(key in t)e.list_extensions.push({id:t[key].extension,text:t[key].extension,description:t[key].description,description_url:t[key].description_url});e.list_extensions.sort(function(e,t){return e.id>t.id?1:e.idt.id?1:e.id=0;l--)trimmed=a[l].trim(),0!==trimmed.length&&r.push(trimmed);this.initChainCallControl({length:r.length,action:"adding_datasets"}),this.chainCallImportingFolders({paths:r,preserve_dirs:e,link_data:t,source:"admin_path",file_type:o,dbkey:s})}else i.info("Please enter a path relative to Galaxy root.")},initChainCallControl:function(e){var t;switch(e.action){case"adding_datasets":t=this.templateAddingDatasetsProgressBar(),this.modal.$el.find(".modal-body").html(t({folder_name:this.options.folder_name}));break;case"deleting_datasets":t=this.templateDeletingItemsProgressBar(),this.modal.$el.find(".modal-body").html(t());break;case"to_history":t=this.templateImportIntoHistoryProgressBar(),this.modal.$el.find(".modal-body").html(t({history_name:e.history_name}));break;default:Galaxy.emit.error("Wrong action specified.","datalibs")}this.progress=0,this.progressStep=100/e.length,this.options.chain_call_control.total_number=e.length,this.options.chain_call_control.failed_number=0},importFromJstreePath:function(e,t){var o=$("#jstree_browser").jstree().get_selected(!0);selected_nodes=_.filter(o,function(e){return 0==e.state.disabled});var s=this.modal.$el.find(".preserve-checkbox").is(":checked"),a=this.modal.$el.find(".link-checkbox").is(":checked"),r=this.select_extension.value(),l=this.select_genome.value(),n=selected_nodes[0].type,d=[];if(selected_nodes.length<1)i.info("Please select some items first.");else{this.modal.disableButton("Import");for(var c=selected_nodes.length-1;c>=0;c--)void 0!==selected_nodes[c].li_attr.full_path&&d.push(selected_nodes[c].li_attr.full_path);if(this.initChainCallControl({length:d.length,action:"adding_datasets"}),"folder"===n){var p=t.source+"_folder";this.chainCallImportingFolders({paths:d,preserve_dirs:s,link_data:a,source:p,file_type:r,dbkey:l})}else if("file"===n){var p=t.source+"_file";this.chainCallImportingUserdirFiles({paths:d,file_type:r,dbkey:l,source:p})}}},fetchAndDisplayHistoryContents:function(e){var t=new o.HistoryContents({id:e}),s=this;t.fetch({success:function(t){var i=s.templateHistoryContents();s.histories.get(e).set({contents:t}),s.modal.$el.find("#selected_history_content").html(i({history_contents:t.models.reverse()}))},error:function(e,t){void 0!==t.responseJSON?i.error(t.responseJSON.err_msg):i.error("An error ocurred.")}})},addAllDatasetsFromHistory:function(){var e=this.modal.$el.find("#selected_history_content").find(":checked"),t=[],s=[],a=[];if(e.length<1)i.info("You must select some datasets first.");else{this.modal.disableButton("Add"),e.each(function(){var e=$(this.parentElement).data("id");if(e){var i=$(this.parentElement).data("name");t.push(e),s.push(i)}});for(var r=t.length-1;r>=0;r--){history_item_id=t[r];var l=new o.Item;l.url=Galaxy.root+"api/folders/"+this.options.id+"/contents","collection"===s[r]?l.set({from_hdca_id:history_item_id}):l.set({from_hda_id:history_item_id}),a.push(l)}this.initChainCallControl({length:a.length,action:"adding_datasets"}),this.chainCallAddingHdas(a)}},chainCallImportingIntoHistory:function(e,t){var o=this,s=e.pop();if(void 0===s)return 0===this.options.chain_call_control.failed_number?i.success("Selected datasets imported into history. Click this to start analyzing it.","",{onclick:function(){window.location=Galaxy.root}}):this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number?i.error("There was an error and no datasets were imported into history."):this.options.chain_call_control.failed_number=0;n--){var d=new o.Item({id:s[n]});l.push(d)}for(var n=a.length-1;n>=0;n--){var c=new o.FolderAsModel({id:a[n]});l.push(c)}this.options.chain_call_control.total_number=r.length,this.chainCallDeletingItems(l)}},showLocInfo:function(){var e=null,t=this;null!==Galaxy.libraries.libraryListView?(e=Galaxy.libraries.libraryListView.collection.get(this.options.parent_library_id),this.showLocInfoModal(e)):(e=new o.Library({id:this.options.parent_library_id}),e.fetch({success:function(){t.showLocInfoModal(e)},error:function(e,t){void 0!==t.responseJSON?i.error(t.responseJSON.err_msg):i.error("An error ocurred.")}}))},showLocInfoModal:function(e){var t=this,i=this.templateLocInfoInModal();this.modal=Galaxy.modal,this.modal.show({closing_events:!0,title:"Location Details",body:i({library:e,options:t.options}),buttons:{Close:function(){Galaxy.modal.hide()}}})},showImportModal:function(e){switch(e.source){case"history":this.addFilesFromHistoryModal();break;case"importdir":this.importFilesFromGalaxyFolderModal({source:"importdir"});break;case"path":this.importFilesFromPathModal();break;case"userdir":this.importFilesFromGalaxyFolderModal({source:"userdir"});break;default:Galaxy.libraries.library_router.back(),i.error("Invalid import source.")}},showPageSizePrompt:function(){var e=prompt("How many items per page do you want to see?",Galaxy.libraries.preferences.get("folder_page_size"));null!=e&&e==parseInt(e)&&(Galaxy.libraries.preferences.set({folder_page_size:parseInt(e)}),Galaxy.libraries.folderListView.render({id:this.options.id,show_page:1}))},templateToolBar:function(){return _.template(['
                              ','
                              ','
                              ',"DATA LIBRARIES",'','",'","<% if(mutiple_add_dataset_options) { %>",'","<% } else { %>",'","<% } %>",'",'",'','",'','','","","","
                              ","",'
                              ',"
                              ",'
                              ',"
                              "].join(""))},templateLocInfoInModal:function(){return _.template(["
                              ",'',"",'',"","","","","",'',"",'<% if(library.get("description") !== "") { %>',"","",'',"","<% } %>",'<% if(library.get("synopsis") !== "") { %>',"","",'',"","<% } %>",'<% if(library.get("create_time_pretty") !== "") { %>',"","",'',"","<% } %>","","",'',"","","
                              library
                              name<%- library.get("name") %>
                              description<%- library.get("description") %>
                              synopsis<%- library.get("synopsis") %>
                              created"><%- library.get("create_time_pretty") %>
                              id<%- library.get("id") %>
                              ",'',"",'',"","","","","","","",'<% if(options.folder_description !== "") { %>',"","","","","<% } %>","","","","","","
                              folder
                              name<%- options.folder_name %>
                              description<%- options.folder_description %>
                              id<%- options.id %>
                              ","
                              "].join(""))},templateNewFolderInModal:function(){return _.template(['
                              ',"
                              ",'','',"
                              ","
                              "].join(""))},templateBulkImportInModal:function(){return _.template(["
                              ",'
                              ',"Select history: ",'","
                              ",'
                              ',"or create new: ",'',"","
                              ","
                              "].join(""))},templateImportIntoHistoryProgressBar:function(){return _.template(['
                              ',"Importing selected items to history <%= _.escape(history_name) %>","
                              ",'
                              ','
                              ','0% Complete',"
                              ","
                              "].join(""))},templateAddingDatasetsProgressBar:function(){return _.template(['
                              ',"Adding selected datasets to library folder <%= _.escape(folder_name) %>","
                              ",'
                              ','
                              ','0% Complete',"
                              ","
                              "].join(""))},templateDeletingItemsProgressBar:function(){return _.template(['
                              ',"
                              ",'
                              ','
                              ','0% Complete',"
                              ","
                              "].join(""))},templateBrowserModal:function(){return _.template(['
                              ','
                              All files you select will be imported into the current folder ignoring their folder structure.
                              ','','
                              ','",'","
                              ",'
                              ','",'","
                              ",'",'","
                              ",'
                              ',"
                              ","
                              ","

                              You can set extension type and genome for all imported datasets at once:

                              ","
                              ",'Type: ','Genome: ',"
                              ","
                              "].join(""))},templateImportPathModal:function(){return _.template(['
                              ','
                              All files within the given folders and their subfolders will be imported into the current folder.
                              ','
                              ','",'","
                              ",'',"
                              ","

                              You can set extension type and genome for all imported datasets at once:

                              ","
                              ",'Type: ','Genome: ',"
                              ","
                              "].join(""))},templateAddFilesFromHistory:function(){ +return _.template(['
                              ',"
                              ","Select history: ",'","
                              ","
                              ",'
                              ',"
                              ","
                              "].join(""))},templateHistoryContents:function(){return _.template(["Choose the datasets to import:","
                                ","<% _.each(history_contents, function(history_item) { %>",'<% if (history_item.get("deleted") != true ) { %>','<% if (history_item.get("type") === "collection") { %>','<% var collection_type = history_item.get("collection_type") %>','<% if (collection_type === "list") { %>','
                              • " data-name="<%= _.escape(history_item.get("type")) %>">',' <%= _.escape(history_item.get("hid")) %>: <%= _.escape(history_item.get("name")) %> (Dataset Collection)',"
                              • ","<% } else { %>",'
                              • ','',' <%= _.escape(history_item.get("hid")) %>: <%= _.escape(history_item.get("name")) %> (Dataset Collection of type <%= _.escape(collection_type) %> not supported.)',"","
                              • ","<% } %>",'<% } else if (history_item.get("visible") === true && history_item.get("state") === "ok") { %>','
                              • " data-name="<%= _.escape(history_item.get("type")) %>">',' <%= _.escape(history_item.get("hid")) %>: <%= _.escape(history_item.get("name")) %>',"
                              • ","<% } %>","<% } %>","<% }); %>","
                              "].join(""))},templatePaginator:function(){return _.template(['",""," showing ",'',"<%- items_shown %>",""," of <%- total_items_count %> items",""].join(""))}})}}); +//# sourceMappingURL=../../../maps/mvc/library/library-foldertoolbar-view.js.map diff --git a/static/scripts/mvc/library/library-library-view.js b/static/scripts/mvc/library/library-library-view.js index d1cd7420c1c..e06887ff269 100644 --- a/static/scripts/mvc/library/library-library-view.js +++ b/static/scripts/mvc/library/library-library-view.js @@ -1,2 +1,2 @@ -define(["libs/toastr","mvc/library/library-model","mvc/ui/ui-select"],function(a,b,c){var d=Backbone.View.extend({el:"#center",model:null,options:{},events:{"click .toolbtn_save_permissions":"savePermissions"},initialize:function(a){this.options=_.extend(this.options,a),this.options.id&&this.fetchLibrary()},fetchLibrary:function(c){this.options=_.extend(this.options,c),this.model=new b.Library({id:this.options.id});var d=this;this.model.fetch({success:function(){d.options.show_permissions?d.showPermissions():d.render()},error:function(b,c){"undefined"!=typeof c.responseJSON?a.error(c.responseJSON.err_msg+" Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}}):a.error("An error ocurred. Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}})}})},render:function(a){$(".tooltip").remove(),this.options=_.extend(this.options,a);var b=this.templateLibrary();this.$el.html(b({item:this.model})),$("#center [data-toggle]").tooltip()},shareDataset:function(){a.info("Feature coming soon.")},goBack:function(){Galaxy.libraries.library_router.back()},showPermissions:function(b){this.options=_.extend(this.options,b),$(".tooltip").remove(),void 0!==this.options.fetched_permissions&&this.model.set(0===this.options.fetched_permissions.access_library_role_list.length?{is_unrestricted:!0}:{is_unrestricted:!1});var c=!1;Galaxy.user&&(c=Galaxy.user.isAdmin());var d=this.templateLibraryPermissions();this.$el.html(d({library:this.model,is_admin:c}));var e=this;$.get(Galaxy.root+"api/libraries/"+e.id+"/permissions?scope=current").done(function(a){e.prepareSelectBoxes({fetched_permissions:a})}).fail(function(){a.error("An error occurred while attempting to fetch library permissions.")}),$("#center [data-toggle]").tooltip(),$("#center").css("overflow","auto")},_serializeRoles:function(a){for(var b=[],c=0;c=0;b--)ids_list.push(a[b].id);return ids_list},savePermissions:function(){var b=this,c=this._extractIds(this.accessSelectObject.$el.select2("data")),d=this._extractIds(this.addSelectObject.$el.select2("data")),e=this._extractIds(this.manageSelectObject.$el.select2("data")),f=this._extractIds(this.modifySelectObject.$el.select2("data"));$.post(Galaxy.root+"api/libraries/"+b.id+"/permissions?action=set_permissions",{"access_ids[]":c,"add_ids[]":d,"manage_ids[]":e,"modify_ids[]":f}).done(function(c){b.showPermissions({fetched_permissions:c}),a.success("Permissions saved.")}).fail(function(){a.error("An error occurred while attempting to set library permissions.")})},templateLibrary:function(){return _.template(['
                              ','
                              ','",'/datasets/<%- item.id %>/permissions">','","",'","
                              ","

                              ","This dataset is unrestricted so everybody can access it. Just share the URL of this page. ",' ","

                              ",'
                              ','',"",'","","",'<% if (item.get("file_ext")) { %>',"",'',"","","<% } %>","
                              ">',"Name","",'<%= _.escape(item.get("name")) %>',"
                              Data type",'<%= _.escape(item.get("file_ext")) %>',"
                              ","
                              ","
                              "].join(""))},templateLibraryPermissions:function(){return _.template(['
                              ','","

                              ",'Library: <%= _.escape(library.get("name")) %>',"

                              ",'
                              ',"<% if (is_admin) { %>","You are logged in as an administrator therefore you can manage any library on this Galaxy instance. Please make sure you understand the consequences.","<% } else { %>","You can assign any number of roles to any of the following permission types. However please read carefully the implications of such actions.","<% }%>","
                              ",'
                              ',"

                              Library permissions

                              ","

                              Roles that can access the library

                              ",'
                              ','
                              ',"User with any of these roles can access this library. If there are no access roles set on the library it is considered unrestricted.","
                              ","

                              Roles that can manage permissions on this library

                              ",'
                              ','
                              ',"User with any of these roles can manage permissions on this library (includes giving access).","
                              ","

                              Roles that can add items to this library

                              ",'
                              ','
                              ',"User with any of these roles can add items to this library (folders and datasets).","
                              ","

                              Roles that can modify this library

                              ",'
                              ','
                              ',"User with any of these roles can modify this library (name, synopsis, etc.).","
                              ",'","
                              ","
                              "].join(""))}});return{LibraryView:d}}); -//# sourceMappingURL=../../../maps/mvc/library/library-library-view.js.map \ No newline at end of file +define(["libs/toastr","mvc/library/library-model","mvc/ui/ui-select"],function(t,e,s){return{LibraryView:Backbone.View.extend({el:"#center",model:null,options:{},events:{"click .toolbtn_save_permissions":"savePermissions"},initialize:function(t){this.options=_.extend(this.options,t),this.options.id&&this.fetchLibrary()},fetchLibrary:function(s){this.options=_.extend(this.options,s),this.model=new e.Library({id:this.options.id});var i=this;this.model.fetch({success:function(){i.options.show_permissions?i.showPermissions():i.render()},error:function(e,s){void 0!==s.responseJSON?t.error(s.responseJSON.err_msg+" Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}}):t.error("An error ocurred. Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}})}})},render:function(t){$(".tooltip").remove(),this.options=_.extend(this.options,t);var e=this.templateLibrary();this.$el.html(e({item:this.model})),$("#center [data-toggle]").tooltip()},shareDataset:function(){t.info("Feature coming soon.")},goBack:function(){Galaxy.libraries.library_router.back()},showPermissions:function(e){this.options=_.extend(this.options,e),$(".tooltip").remove(),void 0!==this.options.fetched_permissions&&(0===this.options.fetched_permissions.access_library_role_list.length?this.model.set({is_unrestricted:!0}):this.model.set({is_unrestricted:!1}));var s=!1;Galaxy.user&&(s=Galaxy.user.isAdmin());var i=this.templateLibraryPermissions();this.$el.html(i({library:this.model,is_admin:s}));var a=this;$.get(Galaxy.root+"api/libraries/"+a.id+"/permissions?scope=current").done(function(t){a.prepareSelectBoxes({fetched_permissions:t})}).fail(function(){t.error("An error occurred while attempting to fetch library permissions.")}),$("#center [data-toggle]").tooltip(),$("#center").css("overflow","auto")},_serializeRoles:function(t){for(var e=[],s=0;s=0;e--)ids_list.push(t[e].id);return ids_list},savePermissions:function(e){var s=this,i=this._extractIds(this.accessSelectObject.$el.select2("data")),a=this._extractIds(this.addSelectObject.$el.select2("data")),o=this._extractIds(this.manageSelectObject.$el.select2("data")),r=this._extractIds(this.modifySelectObject.$el.select2("data"));$.post(Galaxy.root+"api/libraries/"+s.id+"/permissions?action=set_permissions",{"access_ids[]":i,"add_ids[]":a,"manage_ids[]":o,"modify_ids[]":r}).done(function(e){s.showPermissions({fetched_permissions:e}),t.success("Permissions saved.")}).fail(function(){t.error("An error occurred while attempting to set library permissions.")})},templateLibrary:function(){return _.template(['
                              ','
                              ','",'/datasets/<%- item.id %>/permissions">','","",'","
                              ","

                              ","This dataset is unrestricted so everybody can access it. Just share the URL of this page. ",' ","

                              ",'
                              ','',"",'","","",'<% if (item.get("file_ext")) { %>',"",'',"","","<% } %>","
                              ">',"Name","",'<%= _.escape(item.get("name")) %>',"
                              Data type",'<%= _.escape(item.get("file_ext")) %>',"
                              ","
                              ","
                              "].join(""))},templateLibraryPermissions:function(){return _.template(['
                              ','","

                              ",'Library: <%= _.escape(library.get("name")) %>',"

                              ",'
                              ',"<% if (is_admin) { %>","You are logged in as an administrator therefore you can manage any library on this Galaxy instance. Please make sure you understand the consequences.","<% } else { %>","You can assign any number of roles to any of the following permission types. However please read carefully the implications of such actions.","<% }%>","
                              ",'
                              ',"

                              Library permissions

                              ","

                              Roles that can access the library

                              ",'
                              ','
                              ',"User with any of these roles can access this library. If there are no access roles set on the library it is considered unrestricted.","
                              ","

                              Roles that can manage permissions on this library

                              ",'
                              ','
                              ',"User with any of these roles can manage permissions on this library (includes giving access).","
                              ","

                              Roles that can add items to this library

                              ",'
                              ','
                              ',"User with any of these roles can add items to this library (folders and datasets).","
                              ","

                              Roles that can modify this library

                              ",'
                              ','
                              ',"User with any of these roles can modify this library (name, synopsis, etc.).","
                              ",'","
                              ","
                              "].join(""))}})}}); +//# sourceMappingURL=../../../maps/mvc/library/library-library-view.js.map diff --git a/static/scripts/mvc/library/library-librarylist-view.js b/static/scripts/mvc/library/library-librarylist-view.js index aebdd93cf7f..1527af07c87 100644 --- a/static/scripts/mvc/library/library-librarylist-view.js +++ b/static/scripts/mvc/library/library-librarylist-view.js @@ -1,2 +1,2 @@ -define(["layout/masthead","mvc/base-mvc","utils/utils","libs/toastr","mvc/library/library-model","mvc/library/library-libraryrow-view","libs/underscore"],function(a,b,c,d,e,f,g){var h=Backbone.View.extend({el:"#libraries_element",events:{"click .sort-libraries-link":"sort_clicked"},defaults:{page_count:null,show_page:null,all_fetched:!1},initialize:function(a){this.options=g.defaults(this.options||{},a,this.defaults);var b=this;this.modal=null,this.collection=new e.Libraries,this.collection.url=this.collection.urlRoot+"?deleted=false",this.collection.fetch({success:function(){b.render()},error:function(a,b){d.error("undefined"!=typeof b.responseJSON?b.responseJSON.err_msg:"An error ocurred.")}})},render:function(a){this.options=g.extend(this.options,a),this.setElement("#libraries_element");var b=this.templateLibraryList(),c=null,d=null;if($(".tooltip").hide(),"undefined"!=typeof a&&(d="undefined"!=typeof a.models?a.models:null),null!==this.collection&&null===d)this.sortLibraries(),c=Galaxy.libraries.preferences.get("with_deleted")?this.collection.models:this.collection.where({deleted:!1});else if(null!==d)if(Galaxy.libraries.preferences.get("with_deleted"))c=d;else{var e=function(a){return a.get("deleted")===!1};c=g.filter(d,e)}else c=[];(null===this.options.show_page||this.options.show_page<1)&&(this.options.show_page=1),this.options.total_libraries_count=c.length;var f=Galaxy.libraries.preferences.get("library_page_size")*(this.options.show_page-1);this.options.page_count=Math.ceil(this.options.total_libraries_count/Galaxy.libraries.preferences.get("library_page_size")),this.options.total_libraries_count>0&&fthis.options.total_libraries_count+Galaxy.libraries.preferences.get("library_page_size")&&(c=[]),this.$el.html(b({length:1,order:Galaxy.libraries.preferences.get("sort_order"),search_term:Galaxy.libraries.libraryToolbarView.options.search_term})),Galaxy.libraries.libraryToolbarView.renderPaginator(this.options),this.renderRows(c)):(this.$el.html(b({length:0,order:Galaxy.libraries.preferences.get("sort_order"),search_term:Galaxy.libraries.libraryToolbarView.options.search_term})),Galaxy.libraries.libraryToolbarView.renderPaginator(this.options)),$("#center [data-toggle]").tooltip(),$("#center").css("overflow","auto")},fetchDeleted:function(){if(this.options.all_fetched)this.render();else{var a=this;this.collection.url=this.collection.urlRoot+"?deleted=true",this.collection.fetch({remove:!1,success:function(){a.options.all_fetched=!0,a.render()},error:function(a,b){d.error("undefined"!=typeof b.responseJSON?b.responseJSON.err_msg:"An error ocurred.")}})}},renderRows:function(a){for(var b=0;b',"<% if(length === 0) { %>","<% if(search_term.length > 0) { %>","
                              ","There are no libraries matching your search. Try different keyword.","
                              ","<% } else{ %>","
                              ","There are no libraries visible to you here. If you expected some to show up please consult the",' library security wikipage',' or visit the Galaxy support site.',"
                              ","<% }%>","<% } else{ %>",'',"",'",'',' ','',"",'',"","
                              ','',"name","",'',"descriptionsynopsis
                              ","<% }%>","
                              "].join(""))}});return{LibraryListView:h}}); -//# sourceMappingURL=../../../maps/mvc/library/library-librarylist-view.js.map \ No newline at end of file +define(["layout/masthead","mvc/base-mvc","utils/utils","libs/toastr","mvc/library/library-model","mvc/library/library-libraryrow-view","libs/underscore"],function(e,r,i,t,s,o,l){return{LibraryListView:Backbone.View.extend({el:"#libraries_element",events:{"click .sort-libraries-link":"sort_clicked"},defaults:{page_count:null,show_page:null,all_fetched:!1},initialize:function(e){this.options=l.defaults(this.options||{},e,this.defaults);var r=this;this.modal=null,this.collection=new s.Libraries,this.collection.url=this.collection.urlRoot+"?deleted=false",this.collection.fetch({success:function(){r.render()},error:function(e,r){void 0!==r.responseJSON?t.error(r.responseJSON.err_msg):t.error("An error ocurred.")}})},render:function(e){this.options=l.extend(this.options,e),this.setElement("#libraries_element");var r=this.templateLibraryList(),i=null,t=null;if($(".tooltip").hide(),void 0!==e&&(t=void 0!==e.models?e.models:null),null!==this.collection&&null===t)this.sortLibraries(),i=Galaxy.libraries.preferences.get("with_deleted")?this.collection.models:this.collection.where({deleted:!1});else if(null!==t)if(Galaxy.libraries.preferences.get("with_deleted"))i=t;else{var s=function(e){return!1===e.get("deleted")};i=l.filter(t,s)}else i=[];(null===this.options.show_page||this.options.show_page<1)&&(this.options.show_page=1),this.options.total_libraries_count=i.length;var o=Galaxy.libraries.preferences.get("library_page_size")*(this.options.show_page-1);this.options.page_count=Math.ceil(this.options.total_libraries_count/Galaxy.libraries.preferences.get("library_page_size")),this.options.total_libraries_count>0&&othis.options.total_libraries_count+Galaxy.libraries.preferences.get("library_page_size")&&(i=[]),this.$el.html(r({length:1,order:Galaxy.libraries.preferences.get("sort_order"),search_term:Galaxy.libraries.libraryToolbarView.options.search_term})),Galaxy.libraries.libraryToolbarView.renderPaginator(this.options),this.renderRows(i)):(this.$el.html(r({length:0,order:Galaxy.libraries.preferences.get("sort_order"),search_term:Galaxy.libraries.libraryToolbarView.options.search_term})),Galaxy.libraries.libraryToolbarView.renderPaginator(this.options)),$("#center [data-toggle]").tooltip(),$("#center").css("overflow","auto")},fetchDeleted:function(){if(this.options.all_fetched)this.render();else{var e=this;this.collection.url=this.collection.urlRoot+"?deleted=true",this.collection.fetch({remove:!1,success:function(){e.options.all_fetched=!0,e.render()},error:function(e,r){void 0!==r.responseJSON?t.error(r.responseJSON.err_msg):t.error("An error ocurred.")}})}},renderRows:function(e){for(var r=0;r',"<% if(length === 0) { %>","<% if(search_term.length > 0) { %>","
                              ","There are no libraries matching your search. Try different keyword.","
                              ","<% } else{ %>","
                              ","There are no libraries visible to you here. If you expected some to show up please consult the",' library security wikipage',' or visit the Galaxy support site.',"
                              ","<% }%>","<% } else{ %>",'',"",'",'',' ','',"",'',"","
                              ','',"name","",'',"descriptionsynopsis
                              ","<% }%>","
                              "].join(""))}})}}); +//# sourceMappingURL=../../../maps/mvc/library/library-librarylist-view.js.map diff --git a/static/scripts/mvc/library/library-libraryrow-view.js b/static/scripts/mvc/library/library-libraryrow-view.js index 70019c2b995..9cea2aaf8de 100644 --- a/static/scripts/mvc/library/library-libraryrow-view.js +++ b/static/scripts/mvc/library/library-libraryrow-view.js @@ -1,2 +1,2 @@ -define(["layout/masthead","utils/utils","libs/toastr"],function(a,b,c){var d=Backbone.View.extend({events:{"click .edit_library_btn":"edit_button_clicked","click .cancel_library_btn":"cancel_library_modification","click .save_library_btn":"save_library_modification","click .delete_library_btn":"delete_library","click .undelete_library_btn":"undelete_library"},edit_mode:!1,element_visibility_config:{upload_library_btn:!1,edit_library_btn:!1,permission_library_btn:!1,save_library_btn:!1,cancel_library_btn:!1,delete_library_btn:!1,undelete_library_btn:!1},initialize:function(a){this.render(a)},render:function(a){"undefined"==typeof a&&(a=Galaxy.libraries.libraryListView.collection.get(this.$el.data("id"))),this.prepareButtons(a);var b=this.templateRow();return this.setElement(b({library:a,button_config:this.element_visibility_config,edit_mode:this.edit_mode})),this.$el.show(),this},repaint:function(){$(".tooltip").hide();var a=this.$el;this.render(),a.replaceWith(this.$el),this.$el.find("[data-toggle]").tooltip()},prepareButtons:function(a){vis_config=this.element_visibility_config,this.edit_mode===!1?(vis_config.save_library_btn=!1,vis_config.cancel_library_btn=!1,vis_config.delete_library_btn=!1,a.get("deleted")===!0?(vis_config.undelete_library_btn=!0,vis_config.upload_library_btn=!1,vis_config.edit_library_btn=!1,vis_config.permission_library_btn=!1):a.get("deleted")===!1&&(vis_config.save_library_btn=!1,vis_config.cancel_library_btn=!1,vis_config.undelete_library_btn=!1,a.get("can_user_add")===!0&&(vis_config.upload_library_btn=!0),a.get("can_user_modify")===!0&&(vis_config.edit_library_btn=!0),a.get("can_user_manage")===!0&&(vis_config.permission_library_btn=!0))):this.edit_mode===!0&&(vis_config.upload_library_btn=!1,vis_config.edit_library_btn=!1,vis_config.permission_library_btn=!1,vis_config.save_library_btn=!0,vis_config.cancel_library_btn=!0,vis_config.delete_library_btn=!0,vis_config.undelete_library_btn=!1),this.element_visibility_config=vis_config},edit_button_clicked:function(){this.edit_mode=!0,this.repaint()},cancel_library_modification:function(){this.edit_mode=!1,this.repaint()},save_library_modification:function(){var a=Galaxy.libraries.libraryListView.collection.get(this.$el.data("id")),b=!1,d=this.$el.find(".input_library_name").val();if("undefined"!=typeof d&&d!==a.get("name")){if(!(d.length>2))return void c.warning("Library name has to be at least 3 characters long.");a.set("name",d),b=!0}var e=this.$el.find(".input_library_description").val();"undefined"!=typeof e&&e!==a.get("description")&&(a.set("description",e),b=!0);var f=this.$el.find(".input_library_synopsis").val();if("undefined"!=typeof f&&f!==a.get("synopsis")&&(a.set("synopsis",f),b=!0),b){var g=this;a.save(null,{patch:!0,success:function(a){g.edit_mode=!1,g.repaint(a),c.success("Changes to library saved.")},error:function(a,b){c.error("undefined"!=typeof b.responseJSON?b.responseJSON.err_msg:"An error occured while attempting to update the library.")}})}else this.edit_mode=!1,this.repaint(a),c.info("Nothing has changed.")},delete_library:function(){var a=Galaxy.libraries.libraryListView.collection.get(this.$el.data("id")),b=this;a.destroy({success:function(a){a.set("deleted",!0),Galaxy.libraries.libraryListView.collection.add(a),b.edit_mode=!1,Galaxy.libraries.preferences.get("with_deleted")===!1?($(".tooltip").hide(),b.repaint(a),b.$el.remove()):Galaxy.libraries.preferences.get("with_deleted")===!0&&b.repaint(a),c.success("Library has been marked deleted.")},error:function(a,b){c.error("undefined"!=typeof b.responseJSON?b.responseJSON.err_msg:"An error occured during deleting the library.")}})},undelete_library:function(){var a=Galaxy.libraries.libraryListView.collection.get(this.$el.data("id")),b=this;a.url=a.urlRoot+a.id+"?undelete=true",a.destroy({success:function(a){a.set("deleted",!1),Galaxy.libraries.libraryListView.collection.add(a),b.edit_mode=!1,b.repaint(a),c.success("Library has been undeleted.")},error:function(a,b){c.error("undefined"!=typeof b.responseJSON?b.responseJSON.err_msg:"An error occured while undeleting the library.")}})},templateRow:function(){return _.template(['" style="display:none;" data-id="<%- library.get("id") %>">',"<% if(!edit_mode) { %>",'<% if(library.get("deleted")) { %>',' <%- library.get("name") %>',"<% } else { %>",'"><%- library.get("name") %>',"<% } %>",'<% if(library.get("description")) { %>','<% if( (library.get("description")).length> 80 ) { %>','"><%= _.escape(library.get("description")).substring(0, 80) + "..." %>',"<% } else { %>",'<%= _.escape(library.get("description"))%>',"<% } %>","<% } else { %>","","<% } %>",'<% if(library.get("synopsis")) { %>','<% if( (library.get("synopsis")).length> 120 ) { %>','"><%= _.escape(library.get("synopsis")).substring(0, 120) + "..." %>',"<% } else { %>",'<%= _.escape(library.get("synopsis"))%>',"<% } %>","<% } else { %>","","<% } %>","<% } else if(edit_mode){ %>",'','','',"<% } %>",'','<% if( (library.get("public")) && (library.get("deleted") === false) ) { %>',' ',"<% }%>",'','/permissions">','','','','',"",""].join(""))}});return{LibraryRowView:d}}); -//# sourceMappingURL=../../../maps/mvc/library/library-libraryrow-view.js.map \ No newline at end of file +define(["layout/masthead","utils/utils","libs/toastr"],function(t,e,i){return{LibraryRowView:Backbone.View.extend({events:{"click .edit_library_btn":"edit_button_clicked","click .cancel_library_btn":"cancel_library_modification","click .save_library_btn":"save_library_modification","click .delete_library_btn":"delete_library","click .undelete_library_btn":"undelete_library"},edit_mode:!1,element_visibility_config:{upload_library_btn:!1,edit_library_btn:!1,permission_library_btn:!1,save_library_btn:!1,cancel_library_btn:!1,delete_library_btn:!1,undelete_library_btn:!1},initialize:function(t){this.render(t)},render:function(t){void 0===t&&(t=Galaxy.libraries.libraryListView.collection.get(this.$el.data("id"))),this.prepareButtons(t);var e=this.templateRow();return this.setElement(e({library:t,button_config:this.element_visibility_config,edit_mode:this.edit_mode})),this.$el.show(),this},repaint:function(t){$(".tooltip").hide();var e=this.$el;this.render(),e.replaceWith(this.$el),this.$el.find("[data-toggle]").tooltip()},prepareButtons:function(t){vis_config=this.element_visibility_config,!1===this.edit_mode?(vis_config.save_library_btn=!1,vis_config.cancel_library_btn=!1,vis_config.delete_library_btn=!1,!0===t.get("deleted")?(vis_config.undelete_library_btn=!0,vis_config.upload_library_btn=!1,vis_config.edit_library_btn=!1,vis_config.permission_library_btn=!1):!1===t.get("deleted")&&(vis_config.save_library_btn=!1,vis_config.cancel_library_btn=!1,vis_config.undelete_library_btn=!1,!0===t.get("can_user_add")&&(vis_config.upload_library_btn=!0),!0===t.get("can_user_modify")&&(vis_config.edit_library_btn=!0),!0===t.get("can_user_manage")&&(vis_config.permission_library_btn=!0))):!0===this.edit_mode&&(vis_config.upload_library_btn=!1,vis_config.edit_library_btn=!1,vis_config.permission_library_btn=!1,vis_config.save_library_btn=!0,vis_config.cancel_library_btn=!0,vis_config.delete_library_btn=!0,vis_config.undelete_library_btn=!1),this.element_visibility_config=vis_config},edit_button_clicked:function(){this.edit_mode=!0,this.repaint()},cancel_library_modification:function(){this.edit_mode=!1,this.repaint()},save_library_modification:function(){var t=Galaxy.libraries.libraryListView.collection.get(this.$el.data("id")),e=!1,r=this.$el.find(".input_library_name").val();if(void 0!==r&&r!==t.get("name")){if(!(r.length>2))return void i.warning("Library name has to be at least 3 characters long.");t.set("name",r),e=!0}var a=this.$el.find(".input_library_description").val();void 0!==a&&a!==t.get("description")&&(t.set("description",a),e=!0);var n=this.$el.find(".input_library_synopsis").val();if(void 0!==n&&n!==t.get("synopsis")&&(t.set("synopsis",n),e=!0),e){var l=this;t.save(null,{patch:!0,success:function(t){l.edit_mode=!1,l.repaint(t),i.success("Changes to library saved.")},error:function(t,e){void 0!==e.responseJSON?i.error(e.responseJSON.err_msg):i.error("An error occured while attempting to update the library.")}})}else this.edit_mode=!1,this.repaint(t),i.info("Nothing has changed.")},delete_library:function(){var t=Galaxy.libraries.libraryListView.collection.get(this.$el.data("id")),e=this;t.destroy({success:function(t){t.set("deleted",!0),Galaxy.libraries.libraryListView.collection.add(t),e.edit_mode=!1,!1===Galaxy.libraries.preferences.get("with_deleted")?($(".tooltip").hide(),e.repaint(t),e.$el.remove()):!0===Galaxy.libraries.preferences.get("with_deleted")&&e.repaint(t),i.success("Library has been marked deleted.")},error:function(t,e){void 0!==e.responseJSON?i.error(e.responseJSON.err_msg):i.error("An error occured during deleting the library.")}})},undelete_library:function(){var t=Galaxy.libraries.libraryListView.collection.get(this.$el.data("id")),e=this;t.url=t.urlRoot+t.id+"?undelete=true",t.destroy({success:function(t){t.set("deleted",!1),Galaxy.libraries.libraryListView.collection.add(t),e.edit_mode=!1,e.repaint(t),i.success("Library has been undeleted.")},error:function(t,e){void 0!==e.responseJSON?i.error(e.responseJSON.err_msg):i.error("An error occured while undeleting the library.")}})},templateRow:function(){return _.template(['" style="display:none;" data-id="<%- library.get("id") %>">',"<% if(!edit_mode) { %>",'<% if(library.get("deleted")) { %>',' <%- library.get("name") %>',"<% } else { %>",'"><%- library.get("name") %>',"<% } %>",'<% if(library.get("description")) { %>','<% if( (library.get("description")).length> 80 ) { %>','"><%= _.escape(library.get("description")).substring(0, 80) + "..." %>',"<% } else { %>",'<%= _.escape(library.get("description"))%>',"<% } %>","<% } else { %>","","<% } %>",'<% if(library.get("synopsis")) { %>','<% if( (library.get("synopsis")).length> 120 ) { %>','"><%= _.escape(library.get("synopsis")).substring(0, 120) + "..." %>',"<% } else { %>",'<%= _.escape(library.get("synopsis"))%>',"<% } %>","<% } else { %>","","<% } %>","<% } else if(edit_mode){ %>",'','','',"<% } %>",'','<% if( (library.get("public")) && (library.get("deleted") === false) ) { %>',' ',"<% }%>",'','/permissions">','','','','',"",""].join(""))}})}}); +//# sourceMappingURL=../../../maps/mvc/library/library-libraryrow-view.js.map diff --git a/static/scripts/mvc/library/library-librarytoolbar-view.js b/static/scripts/mvc/library/library-librarytoolbar-view.js index 64920d507c0..7279dfc4251 100644 --- a/static/scripts/mvc/library/library-librarytoolbar-view.js +++ b/static/scripts/mvc/library/library-librarytoolbar-view.js @@ -1,2 +1,2 @@ -define(["libs/toastr","mvc/library/library-model"],function(a,b){var c=Backbone.View.extend({el:"#center",defaults:{search_term:""},events:{"click #create_new_library_btn":"createLibraryFromModal","click #include_deleted_chk":"includeDeletedChecked","click #lib_page_size_prompt":"showPageSizePrompt","keyup .library-search-input":"searchLibraries"},initialize:function(a){this.options=_.defaults(this.options||{},a,this.defaults),this.render()},render:function(){var a=this.templateToolBar(),b=!1,c=!0;Galaxy.user&&(b=Galaxy.user.isAdmin(),c=Galaxy.user.isAnonymous()),this.$el.html(a({admin_user:b,anon_user:c})),b&&(this.$el.find("#include_deleted_chk")[0].checked=Galaxy.libraries.preferences.get("with_deleted"))},renderPaginator:function(a){this.options=_.extend(this.options,a);var b=this.templatePaginator();this.$el.find("#library_paginator").html(b({show_page:parseInt(this.options.show_page),page_count:parseInt(this.options.page_count),total_libraries_count:this.options.total_libraries_count,libraries_shown:this.options.libraries_shown}))},createLibraryFromModal:function(a){a.preventDefault(),a.stopPropagation();var b=this;this.modal=Galaxy.modal,this.modal.show({closing_events:!0,title:"Create New Library",body:this.templateNewLibraryInModal(),buttons:{Create:function(){b.createNewLibrary()},Close:function(){b.modal.hide()}}})},createNewLibrary:function(){var c=this.serializeNewLibrary();if(this.validateNewLibrary(c)){var d=new b.Library,e=this;d.save(c,{success:function(b){Galaxy.libraries.libraryListView.collection.add(b),e.modal.hide(),e.clearLibraryModal(),Galaxy.libraries.libraryListView.render(),a.success("Library created.")},error:function(b,c){a.error("undefined"!=typeof c.responseJSON?c.responseJSON.err_msg:"An error occured.")}})}else a.error("Library's name is missing.");return!1},showPageSizePrompt:function(){var a=prompt("How many libraries per page do you want to see?",Galaxy.libraries.preferences.get("library_page_size"));null!=a&&a==parseInt(a)&&(Galaxy.libraries.preferences.set({library_page_size:parseInt(a)}),Galaxy.libraries.libraryListView.render({show_page:1}))},clearLibraryModal:function(){$("input[name='Name']").val(""),$("input[name='Description']").val(""),$("input[name='Synopsis']").val("")},serializeNewLibrary:function(){return{name:$("input[name='Name']").val(),description:$("input[name='Description']").val(),synopsis:$("input[name='Synopsis']").val()}},validateNewLibrary:function(a){return""!==a.name},includeDeletedChecked:function(a){a.target.checked?(Galaxy.libraries.preferences.set({with_deleted:!0}),Galaxy.libraries.libraryListView.fetchDeleted()):(Galaxy.libraries.preferences.set({with_deleted:!1}),Galaxy.libraries.libraryListView.render())},searchLibraries:function(){var a=$(".library-search-input").val();this.options.search_term=a,Galaxy.libraries.libraryListView.searchLibraries(a)},templateToolBar:function(){return _.template(['
                              ','
                              ','
                              ','
                              ','DATA LIBRARIES','',"",'
                              ','',"
                              ","<% if(admin_user === true) { %>",'
                              ',"","
                              ",'','',"","<% } %>",'','','',"","","
                              ","
                              ","
                              ",'
                              ',"
                              ","
                              "].join(""))},templatePaginator:function(){return _.template(['",'',' showing <%- libraries_shown %> of <%- total_libraries_count %> libraries',""].join(""))},templateNewLibraryInModal:function(){return _.template(['
                              ',"
                              ",'','','',"
                              ","
                              "].join(""))}});return{LibraryToolbarView:c}}); -//# sourceMappingURL=../../../maps/mvc/library/library-librarytoolbar-view.js.map \ No newline at end of file +define(["libs/toastr","mvc/library/library-model"],function(e,a){return{LibraryToolbarView:Backbone.View.extend({el:"#center",defaults:{search_term:""},events:{"click #create_new_library_btn":"createLibraryFromModal","click #include_deleted_chk":"includeDeletedChecked","click #lib_page_size_prompt":"showPageSizePrompt","keyup .library-search-input":"searchLibraries"},initialize:function(e){this.options=_.defaults(this.options||{},e,this.defaults),this.render()},render:function(){var e=this.templateToolBar(),a=!1,i=!0;Galaxy.user&&(a=Galaxy.user.isAdmin(),i=Galaxy.user.isAnonymous()),this.$el.html(e({admin_user:a,anon_user:i})),a&&(this.$el.find("#include_deleted_chk")[0].checked=Galaxy.libraries.preferences.get("with_deleted"))},renderPaginator:function(e){this.options=_.extend(this.options,e);var a=this.templatePaginator();this.$el.find("#library_paginator").html(a({show_page:parseInt(this.options.show_page),page_count:parseInt(this.options.page_count),total_libraries_count:this.options.total_libraries_count,libraries_shown:this.options.libraries_shown}))},createLibraryFromModal:function(e){e.preventDefault(),e.stopPropagation();var a=this;this.modal=Galaxy.modal,this.modal.show({closing_events:!0,title:"Create New Library",body:this.templateNewLibraryInModal(),buttons:{Create:function(){a.createNewLibrary()},Close:function(){a.modal.hide()}}})},createNewLibrary:function(){var i=this.serializeNewLibrary();if(this.validateNewLibrary(i)){var r=new a.Library,t=this;r.save(i,{success:function(a){Galaxy.libraries.libraryListView.collection.add(a),t.modal.hide(),t.clearLibraryModal(),Galaxy.libraries.libraryListView.render(),e.success("Library created.")},error:function(a,i){void 0!==i.responseJSON?e.error(i.responseJSON.err_msg):e.error("An error occured.")}})}else e.error("Library's name is missing.");return!1},showPageSizePrompt:function(){var e=prompt("How many libraries per page do you want to see?",Galaxy.libraries.preferences.get("library_page_size"));null!=e&&e==parseInt(e)&&(Galaxy.libraries.preferences.set({library_page_size:parseInt(e)}),Galaxy.libraries.libraryListView.render({show_page:1}))},clearLibraryModal:function(){$("input[name='Name']").val(""),$("input[name='Description']").val(""),$("input[name='Synopsis']").val("")},serializeNewLibrary:function(){return{name:$("input[name='Name']").val(),description:$("input[name='Description']").val(),synopsis:$("input[name='Synopsis']").val()}},validateNewLibrary:function(e){return""!==e.name},includeDeletedChecked:function(e){e.target.checked?(Galaxy.libraries.preferences.set({with_deleted:!0}),Galaxy.libraries.libraryListView.fetchDeleted()):(Galaxy.libraries.preferences.set({with_deleted:!1}),Galaxy.libraries.libraryListView.render())},searchLibraries:function(e){var a=$(".library-search-input").val();this.options.search_term=a,Galaxy.libraries.libraryListView.searchLibraries(a)},templateToolBar:function(){return _.template(['
                              ','
                              ','
                              ','
                              ','DATA LIBRARIES','',"",'
                              ','',"
                              ","<% if(admin_user === true) { %>",'
                              ',"","
                              ",'','',"","<% } %>",'','','',"","","
                              ","
                              ","
                              ",'
                              ',"
                              ","
                              "].join(""))},templatePaginator:function(){return _.template(['",'',' showing <%- libraries_shown %> of <%- total_libraries_count %> libraries',""].join(""))},templateNewLibraryInModal:function(){return _.template(['
                              ',"
                              ",'','','',"
                              ","
                              "].join(""))}})}}); +//# sourceMappingURL=../../../maps/mvc/library/library-librarytoolbar-view.js.map diff --git a/static/scripts/mvc/library/library-model.js b/static/scripts/mvc/library/library-model.js index cc187f3c0b1..4007d184b78 100644 --- a/static/scripts/mvc/library/library-model.js +++ b/static/scripts/mvc/library/library-model.js @@ -1,2 +1,2 @@ -define([],function(){var a=Backbone.Model.extend({urlRoot:Galaxy.root+"api/libraries/",isVisible:function(a){var b=!0;return!a&&this.get("deleted")&&(b=!1),b}}),b=Backbone.Collection.extend({urlRoot:Galaxy.root+"api/libraries",model:a,sort_key:"name",sort_order:null,initialize:function(a){a=a||{}},search:function(a){if(""==a)return this;var b=a.toLowerCase();return this.filter(function(a){return lowercase_name=a.get("name").toLowerCase(),-1!==lowercase_name.indexOf(b)})},getVisible:function(a,c){c=c||[];var d=new b(this.filter(function(b){return b.isVisible(a)}));return d},sortByNameAsc:function(){return this.comparator=function(a,b){return a.get("name").toLowerCase()>b.get("name").toLowerCase()?1:b.get("name").toLowerCase()>a.get("name").toLowerCase()?-1:0},this.sort(),this},sortByNameDesc:function(){return this.comparator=function(a,b){return a.get("name").toLowerCase()>b.get("name").toLowerCase()?-1:b.get("name").toLowerCase()>a.get("name").toLowerCase()?1:0},this.sort(),this}}),c=Backbone.Model.extend({}),d=c.extend({urlRoot:Galaxy.root+"api/libraries/datasets/"}),e=c.extend({urlRoot:Galaxy.root+"api/folders/"}),f=Backbone.Collection.extend({model:c,sortByNameAsc:function(){return this.comparator=function(a,b){return a.get("type")===b.get("type")?a.get("name").toLowerCase()>b.get("name").toLowerCase()?1:b.get("name").toLowerCase()>a.get("name").toLowerCase()?-1:0:"folder"===a.get("type")?-1:1},this.sort(),this},sortByNameDesc:function(){return this.comparator=function(a,b){return a.get("type")===b.get("type")?a.get("name").toLowerCase()>b.get("name").toLowerCase()?-1:b.get("name").toLowerCase()>a.get("name").toLowerCase()?1:0:"folder"===a.get("type")?-1:1},this.sort(),this}}),g=Backbone.Model.extend({defaults:{folder:new f,urlRoot:Galaxy.root+"api/folders/",id:"unknown"},parse:function(a){this.get("folder").reset();for(var b=0;bt.get("name").toLowerCase()?1:t.get("name").toLowerCase()>e.get("name").toLowerCase()?-1:0},this.sort(),this},sortByNameDesc:function(){return this.comparator=function(e,t){return e.get("name").toLowerCase()>t.get("name").toLowerCase()?-1:t.get("name").toLowerCase()>e.get("name").toLowerCase()?1:0},this.sort(),this}}),o=Backbone.Model.extend({}),r=o.extend({urlRoot:Galaxy.root+"api/libraries/datasets/"}),n=o.extend({urlRoot:Galaxy.root+"api/folders/"}),a=Backbone.Collection.extend({model:o,sortByNameAsc:function(){return this.comparator=function(e,t){return e.get("type")===t.get("type")?e.get("name").toLowerCase()>t.get("name").toLowerCase()?1:t.get("name").toLowerCase()>e.get("name").toLowerCase()?-1:0:"folder"===e.get("type")?-1:1},this.sort(),this},sortByNameDesc:function(){return this.comparator=function(e,t){return e.get("type")===t.get("type")?e.get("name").toLowerCase()>t.get("name").toLowerCase()?-1:t.get("name").toLowerCase()>e.get("name").toLowerCase()?1:0:"folder"===e.get("type")?-1:1},this.sort(),this}}),i=Backbone.Model.extend({defaults:{folder:new a,urlRoot:Galaxy.root+"api/folders/",id:"unknown"},parse:function(e){this.get("folder").reset();for(var t=0;t .details")},_renderDetails:function(){var a=$(this.templates.details(this.model.toJSON(),this));return this._setUpBehaviors(a),a},toggleExpanded:function(a){return a=void 0===a?!this.expanded:a,a?this.expand():this.collapse(),this},expand:function(){var a=this;return a._fetchModelDetails().always(function(){a._expand()})},_fetchModelDetails:function(){return this.model.hasDetails()?jQuery.when():this.model.fetch()},_expand:function(){var a=this,b=a._renderDetails();a.$details().replaceWith(b),a.expanded=!0,a.$details().slideDown(a.fxSpeed,function(){a.trigger("expanded",a)})},collapse:function(){this.debug(this+"(ExpandableView).collapse");var a=this;a.expanded=!1,this.$details().slideUp(a.fxSpeed,function(){a.trigger("collapsed",a)})}}),d=c.extend(a.mixin(a.SelectableViewMixin,a.DraggableViewMixin,{tagName:"div",className:"list-item",initialize:function(b){c.prototype.initialize.call(this,b),a.SelectableViewMixin.initialize.call(this,b),a.DraggableViewMixin.initialize.call(this,b),this._setUpListeners()},_setUpListeners:function(){return this.on("selectable",function(a){a?this.$(".primary-actions").hide():this.$(".primary-actions").show()},this),this},_buildNewRender:function(){var a=c.prototype._buildNewRender.call(this);return a.children(".warnings").replaceWith(this._renderWarnings()),a.children(".title-bar").replaceWith(this._renderTitleBar()),a.children(".primary-actions").append(this._renderPrimaryActions()),a.find("> .title-bar .subtitle").replaceWith(this._renderSubtitle()),a},_swapNewRender:function(a){return c.prototype._swapNewRender.call(this,a),this.selectable&&this.showSelector(0),this.draggable&&this.draggableOn(),this.$el},_renderWarnings:function(){var a=this,b=$('
                              '),c=a.model.toJSON();return _.each(a.templates.warnings,function(d){b.append($(d(c,a)))}),b},_renderTitleBar:function(){return $(this.templates.titleBar(this.model.toJSON(),this))},_renderPrimaryActions:function(){return[]},_renderSubtitle:function(){return $(this.templates.subtitle(this.model.toJSON(),this))},events:{"click .title-bar":"_clickTitleBar","keydown .title-bar":"_keyDownTitleBar","click .selector":"toggleSelect"},_clickTitleBar:function(a){a.stopPropagation(),a.altKey?(this.toggleSelect(a),this.selectable||this.showSelector()):this.toggleExpanded()},_keyDownTitleBar:function(a){var b=32,c=13;return!a||"keydown"!==a.type||a.keyCode!==b&&a.keyCode!==c?!0:(this.toggleExpanded(),a.stopPropagation(),!1)},toString:function(){var a=this.model?this.model+"":"(no model)";return"ListItemView("+a+")"}}));d.prototype.templates=function(){var b=a.wrapTemplate(['
                              ','
                              ','
                              ','',"
                              ",'
                              ','
                              ','
                              ',"
                              "]),c={},d=a.wrapTemplate(['
                              ','','
                              ','<%- element.name %>',"
                              ",'
                              ',"
                              "],"element"),e=a.wrapTemplate(['
                              ']),f=a.wrapTemplate(['
                              ']);return{el:b,warnings:c,titleBar:d,subtitle:e,details:f}}();var e=d.extend({foldoutStyle:"foldout",foldoutPanelClass:null,initialize:function(a){"drilldown"===this.foldoutStyle&&(this.expanded=!1),this.foldoutStyle=a.foldoutStyle||this.foldoutStyle,this.foldoutPanelClass=a.foldoutPanelClass||this.foldoutPanelClass,d.prototype.initialize.call(this,a),this.foldout=this._createFoldoutPanel()},_renderDetails:function(){if("drilldown"===this.foldoutStyle)return $();var a=d.prototype._renderDetails.call(this);return this._attachFoldout(this.foldout,a)},_createFoldoutPanel:function(){var a=this.model,b=this._getFoldoutPanelClass(a),c=this._getFoldoutPanelOptions(a),d=new b(_.extend(c,{model:a}));return d},_getFoldoutPanelClass:function(){return this.foldoutPanelClass},_getFoldoutPanelOptions:function(){return{foldoutStyle:this.foldoutStyle,fxSpeed:this.fxSpeed}},_attachFoldout:function(a,b){return b=b||this.$("> .details"),this.foldout=a.render(0),a.$("> .controls").hide(),b.append(a.$el)},expand:function(){var a=this;return a._fetchModelDetails().always(function(){"foldout"===a.foldoutStyle?a._expand():"drilldown"===a.foldoutStyle&&a._expandByDrilldown()})},_expandByDrilldown:function(){var a=this;a.listenTo(a.foldout,"close",function(){a.trigger("collapsed:drilldown",a,a.foldout)}),a.trigger("expanded:drilldown",a,a.foldout)}});return e.prototype.templates=function(){var b=a.wrapTemplate(['
                              ',"
                              "],"collection");return _.extend({},d.prototype.templates,{details:b})}(),{ExpandableView:c,ListItemView:d,FoldoutListItemView:e}}); -//# sourceMappingURL=../../../maps/mvc/list/list-item.js.map \ No newline at end of file +define(["mvc/base-mvc","utils/localization"],function(e,t){"use strict";var i=Backbone.View.extend(e.LoggableMixin).extend({_logNamespace:"list",initialize:function(e){this.expanded=e.expanded||!1,this.log("\t expanded:",this.expanded),this.fxSpeed=void 0!==e.fxSpeed?e.fxSpeed:this.fxSpeed},fxSpeed:"fast",render:function(e){var t=this._buildNewRender();return this._setUpBehaviors(t),this._queueNewRender(t,e),this},_buildNewRender:function(){var e=$(this.templates.el(this.model.toJSON(),this));return this.expanded&&this.$details(e).replaceWith(this._renderDetails().show()),e},_queueNewRender:function(e,t){t=void 0===t?this.fxSpeed:t;var i=this;0===t?(i._swapNewRender(e),i.trigger("rendered",i)):$(i).queue("fx",[function(e){i.$el.fadeOut(t,e)},function(t){i._swapNewRender(e),t()},function(e){i.$el.fadeIn(t,e)},function(e){i.trigger("rendered",i),e()}])},_swapNewRender:function(e){return this.$el.empty().attr("class",_.isFunction(this.className)?this.className():this.className).append(e.children())},_setUpBehaviors:function(e){e=e||this.$el,e.find("[title]").tooltip({placement:"bottom"})},$details:function(e){return e=e||this.$el,e.find("> .details")},_renderDetails:function(){var e=$(this.templates.details(this.model.toJSON(),this));return this._setUpBehaviors(e),e},toggleExpanded:function(e){return e=void 0===e?!this.expanded:e,e?this.expand():this.collapse(),this},expand:function(){var e=this;return e._fetchModelDetails().always(function(){e._expand()})},_fetchModelDetails:function(){return this.model.hasDetails()?jQuery.when():this.model.fetch()},_expand:function(){var e=this,t=e._renderDetails();e.$details().replaceWith(t),e.expanded=!0,e.$details().slideDown(e.fxSpeed,function(){e.trigger("expanded",e)})},collapse:function(){this.debug(this+"(ExpandableView).collapse");var e=this;e.expanded=!1,this.$details().slideUp(e.fxSpeed,function(){e.trigger("collapsed",e)})}}),n=i.extend(e.mixin(e.SelectableViewMixin,e.DraggableViewMixin,{tagName:"div",className:"list-item",initialize:function(t){i.prototype.initialize.call(this,t),e.SelectableViewMixin.initialize.call(this,t),e.DraggableViewMixin.initialize.call(this,t),this._setUpListeners()},_setUpListeners:function(){return this.on("selectable",function(e){e?this.$(".primary-actions").hide():this.$(".primary-actions").show()},this),this},_buildNewRender:function(){var e=i.prototype._buildNewRender.call(this);return e.children(".warnings").replaceWith(this._renderWarnings()),e.children(".title-bar").replaceWith(this._renderTitleBar()),e.children(".primary-actions").append(this._renderPrimaryActions()),e.find("> .title-bar .subtitle").replaceWith(this._renderSubtitle()),e},_swapNewRender:function(e){return i.prototype._swapNewRender.call(this,e),this.selectable&&this.showSelector(0),this.draggable&&this.draggableOn(),this.$el},_renderWarnings:function(){var e=this,t=$('
                              '),i=e.model.toJSON();return _.each(e.templates.warnings,function(n){t.append($(n(i,e)))}),t},_renderTitleBar:function(){return $(this.templates.titleBar(this.model.toJSON(),this))},_renderPrimaryActions:function(){return[]},_renderSubtitle:function(){return $(this.templates.subtitle(this.model.toJSON(),this))},events:{"click .title-bar":"_clickTitleBar","keydown .title-bar":"_keyDownTitleBar","click .selector":"toggleSelect"},_clickTitleBar:function(e){e.stopPropagation(),e.altKey?(this.toggleSelect(e),this.selectable||this.showSelector()):this.toggleExpanded()},_keyDownTitleBar:function(e){return!e||"keydown"!==e.type||32!==e.keyCode&&13!==e.keyCode||(this.toggleExpanded(),e.stopPropagation(),!1)},toString:function(){return"ListItemView("+(this.model?this.model+"":"(no model)")+")"}}));n.prototype.templates=function(){return{el:e.wrapTemplate(['
                              ','
                              ','
                              ','',"
                              ",'
                              ','
                              ','
                              ',"
                              "]),warnings:{},titleBar:e.wrapTemplate(['
                              ','','
                              ','<%- element.name %>',"
                              ",'
                              ',"
                              "],"element"),subtitle:e.wrapTemplate(['
                              ']),details:e.wrapTemplate(['
                              '])}}();var l=n.extend({foldoutStyle:"foldout",foldoutPanelClass:null,initialize:function(e){"drilldown"===this.foldoutStyle&&(this.expanded=!1),this.foldoutStyle=e.foldoutStyle||this.foldoutStyle,this.foldoutPanelClass=e.foldoutPanelClass||this.foldoutPanelClass,n.prototype.initialize.call(this,e),this.foldout=this._createFoldoutPanel()},_renderDetails:function(){if("drilldown"===this.foldoutStyle)return $();var e=n.prototype._renderDetails.call(this);return this._attachFoldout(this.foldout,e)},_createFoldoutPanel:function(){var e=this.model,t=this._getFoldoutPanelClass(e),i=this._getFoldoutPanelOptions(e);return new t(_.extend(i,{model:e}))},_getFoldoutPanelClass:function(){return this.foldoutPanelClass},_getFoldoutPanelOptions:function(){return{foldoutStyle:this.foldoutStyle,fxSpeed:this.fxSpeed}},_attachFoldout:function(e,t){return t=t||this.$("> .details"),this.foldout=e.render(0),e.$("> .controls").hide(),t.append(e.$el)},expand:function(){var e=this;return e._fetchModelDetails().always(function(){"foldout"===e.foldoutStyle?e._expand():"drilldown"===e.foldoutStyle&&e._expandByDrilldown()})},_expandByDrilldown:function(){var e=this;e.listenTo(e.foldout,"close",function(){e.trigger("collapsed:drilldown",e,e.foldout)}),e.trigger("expanded:drilldown",e,e.foldout)}});return l.prototype.templates=function(){var t=e.wrapTemplate(['
                              ',"
                              "],"collection");return _.extend({},n.prototype.templates,{details:t})}(),{ExpandableView:i,ListItemView:n,FoldoutListItemView:l}}); +//# sourceMappingURL=../../../maps/mvc/list/list-item.js.map diff --git a/static/scripts/mvc/list/list-view.js b/static/scripts/mvc/list/list-view.js index be5edc1891f..64d9ebc6fac 100644 --- a/static/scripts/mvc/list/list-view.js +++ b/static/scripts/mvc/list/list-view.js @@ -1,2 +1,2 @@ -define(["mvc/list/list-item","ui/loading-indicator","mvc/base-mvc","utils/localization","ui/search-input"],function(a,b,c,d){"use strict";var e="list",f=Backbone.View.extend(c.LoggableMixin).extend({_logNamespace:e,viewClass:a.ListItemView,collectionClass:Backbone.Collection,tagName:"div",className:"list-panel",fxSpeed:"fast",emptyMsg:d("This list is empty"),noneFoundMsg:d("No matching items found"),searchPlaceholder:d("search"),initialize:function(a){a=a||{},a.logger&&(this.logger=a.logger),this.log(this+".initialize:",a),this.fxSpeed=_.has(a,"fxSpeed")?a.fxSpeed:this.fxSpeed,this.filters=[],this.searchFor=a.searchFor||"",this.selecting=void 0!==a.selecting?a.selecting:!0,this.selected=a.selected||[],this.lastSelected=null,this.dragItems=a.dragItems||!1,this.viewClass=a.viewClass||this.viewClass,this.views=[],this.collection=a.collection||this._createDefaultCollection(),this.filters=a.filters||[],this.$scrollContainer=a.$scrollContainer||this.$scrollContainer,this.title=a.title||"",this.subtitle=a.subtitle||"",this._setUpListeners()},_setUpListeners:function(){return this.off(),this.on({error:function(a,b,c,d,e){console.error(a,b,c,d,e)},loading:function(){this._showLoadingIndicator("loading...",40)},"loading-done":function(){this._hideLoadingIndicator(40)}}),this.once("rendered",function(){this.trigger("rendered:initial",this)}),this._setUpCollectionListeners(),this._setUpViewListeners(),this},_createDefaultCollection:function(){return new this.collectionClass([])},_setUpCollectionListeners:function(){return this.log(this+"._setUpCollectionListeners",this.collection),this.stopListening(this.collection),this.listenTo(this.collection,{error:function(a,b,c,d,e){this.trigger("error",a,b,c,d,e)},update:function(a,b){var c=b.changes;return b.renderAll||c.added.length+c.removed.length>1?this.renderItems():1===c.added.length?this.addItemView(_.first(c.added),a,b):1===c.removed.length?this.removeItemView(_.first(c.removed),a,b):void 0}}),this},_setUpViewListeners:function(){this.log(this+"._setUpViewListeners"),this.on({"view:selected":function(a,b){if(b&&b.shiftKey&&this.lastSelected){var c=this.viewFromModelId(this.lastSelected);c&&this.selectRange(a,c)}else b&&b.altKey&&!this.selecting&&this.showSelectors();this.selected.push(a.model.id),this.lastSelected=a.model.id},"view:de-selected":function(a){this.selected=_.without(this.selected,a.model.id)}})},render:function(a){this.log(this+".render",a);var b=this._buildNewRender();return this._setUpBehaviors(b),this._queueNewRender(b,a),this},_buildNewRender:function(){this.debug(this+"(ListPanel)._buildNewRender");var a=$(this.templates.el({},this));return this._renderControls(a),this._renderTitle(a),this._renderSubtitle(a),this._renderSearch(a),this.renderItems(a),a},_renderControls:function(a){this.debug(this+"(ListPanel)._renderControls");var b=$(this.templates.controls({},this));return a.find(".controls").replaceWith(b),b},_renderTitle:function(){},_renderSubtitle:function(){},_queueNewRender:function(a,b){b=void 0===b?this.fxSpeed:b;var c=this;c.log("_queueNewRender:",a,b),$(c).queue("fx",[function(a){c.$el.fadeOut(b,a)},function(b){c._swapNewRender(a),b()},function(a){c.$el.fadeIn(b,a)},function(a){c.trigger("rendered",c),a()}])},_swapNewRender:function(a){return this.$el.empty().attr("class",this.className).append(a.children()),this.selecting&&this.showSelectors(0),this},_setUpBehaviors:function(a){return a=a||this.$el,this.$controls(a).find("[title]").tooltip(),this._renderMultiselectActionMenu(a),this},_renderMultiselectActionMenu:function(a){a=a||this.$el;var b=a.find(".list-action-menu"),c=this.multiselectActions();if(!c.length)return b.empty();var e=$(['
                              ','",'","
                              "].join("")),f=c.map(function(a){var b=['
                            • ',a.html,"
                            • "].join("");return $(b).click(function(b){return b.preventDefault(),a.func(b)})});return e.find("ul").append(f),b.replaceWith(e),e},multiselectActions:function(){return[]},$scrollContainer:function(a){return(a||this.$el).parent().parent()},$controls:function(a){return(a||this.$el).find("> .controls")},$list:function(a){return(a||this.$el).find("> .list-items")},$messages:function(a){return(a||this.$el).find("> .controls .messages")},$emptyMessage:function(a){return(a||this.$el).find("> .empty-message")},renderItems:function(a){a=a||this.$el;var b=this;b.log(this+".renderItems",a);var c=b.$list(a);b.freeViews();var d=b._filterCollection();return b.views=d.map(function(a){var c=b._createItemView(a);return c}),c.empty(),b.views.length&&b._attachItems(a),b._renderEmptyMessage(a).toggle(!b.views.length),b.trigger("views:ready",b.views),b.views},_filterCollection:function(){var a=this;return a.collection.filter(_.bind(a._filterItem,a))},_filterItem:function(a){var b=this;return _.every(b.filters.map(function(b){return b.call(a)}))&&(!b.searchFor||a.matchesAll(b.searchFor))},_createItemView:function(a){var b=this._getItemViewClass(a),c=_.extend(this._getItemViewOptions(a),{model:a}),d=new b(c);return this._setUpItemViewListeners(d),d},_destroyItemView:function(a){this.stopListening(a),this.views=_.without(this.views,a)},_destroyItemViews:function(){var a=this;return a.views.forEach(function(b){a.stopListening(b)}),a.views=[],a},freeViews:function(){return this._destroyItemViews()},_getItemViewClass:function(){return this.viewClass},_getItemViewOptions:function(a){return{fxSpeed:this.fxSpeed,expanded:!1,selectable:this.selecting,selected:_.contains(this.selected,a.id),draggable:this.dragItems}},_setUpItemViewListeners:function(a){var b=this;return this.listenTo(a,"all",function(){var a=Array.prototype.slice.call(arguments,0);a[0]="view:"+a[0],b.trigger.apply(b,a)}),this.listenTo(a,"draggable:dragstart",function(a,b){var c={},d=this.getSelectedModels();c=d.length?d.toJSON():[b.model.toJSON()],a.dataTransfer.setData("text",JSON.stringify(c))},this),b},_attachItems:function(a){var b=this;return this.$list(a).append(this.views.map(function(a){return b._renderItemView$el(a)})),this},_renderItemView$el:function(a){return a.render(0).$el},_renderEmptyMessage:function(a){this.debug("_renderEmptyMessage",a,this.searchFor);var b=this.searchFor?this.noneFoundMsg:this.emptyMsg;return this.$emptyMessage(a).text(b)},expandAll:function(){_.each(this.views,function(a){a.expand()})},collapseAll:function(){_.each(this.views,function(a){a.collapse()})},addItemView:function(a){var b=this,c=b._filterCollection().indexOf(a);if(-1===c)return void 0;var d=b._createItemView(a);return $(d).queue("fx",[function(a){b.$emptyMessage().is(":visible")?b.$emptyMessage().fadeOut(b.fxSpeed,a):a()},function(a){b._attachView(d,c),a()}]),d},_attachView:function(a,b,c){c=_.isUndefined(c)?!0:c,b=b||0;var d=this;return d.views.splice(b,0,a),d._insertIntoListAt(b,d._renderItemView$el(a).hide()),d.trigger("view:attached",a),c?a.$el.slideDown(d.fxSpeed,function(){d.trigger("view:attached:rendered")}):(a.$el.show(),d.trigger("view:attached:rendered")),a},_insertIntoListAt:function(a,b){var c=this.$list();return 0===a?c.prepend(b):c.children().eq(a-1).after(b),b},removeItemView:function(a){var b=this,c=_.find(b.views,function(b){return b.model===a});return c?(b.views=_.without(b.views,c),b.trigger("view:removed",c),$({}).queue("fx",[function(a){c.$el.fadeOut(b.fxSpeed,a)},function(a){c.remove(),b.trigger("view:removed:rendered"),b.views.length?a():b._renderEmptyMessage().fadeIn(b.fxSpeed,a)}]),c):void 0},viewFromModelId:function(a){return _.find(this.views,function(b){return b.model.id===a})},viewFromModel:function(a){return a?this.viewFromModelId(a.id):void 0},viewsWhereModel:function(a){return this.views.filter(function(b){return _.isMatch(b.model.attributes,a)})},viewRange:function(a,b){if(a===b)return a?[a]:[];var c=this.views.indexOf(a),d=this.views.indexOf(b);return-1===c||-1===d?c===d?[]:-1===c?[b]:[a]:d>c?this.views.slice(c,d+1):this.views.slice(d,c+1)},_renderSearch:function(a){return a.find(".controls .search-input").searchInput({placeholder:this.searchPlaceholder,initialVal:this.searchFor,onfirstsearch:_.bind(this._firstSearch,this),onsearch:_.bind(this.searchItems,this),onclear:_.bind(this.clearSearch,this)}),a},_firstSearch:function(a){return this.log("onFirstSearch",a),this.searchItems(a)},searchItems:function(a,b){if(this.log("searchItems",a,this.searchFor,b),!b&&this.searchFor===a)return this;this.searchFor=a,this.renderItems(),this.trigger("search:searching",a,this);var c=this.$("> .controls .search-query");return c.val()!==a&&c.val(a),this},clearSearch:function(){return this.searchFor="",this.trigger("search:clear",this),this.$("> .controls .search-query").val(""),this.renderItems(),this},THROTTLE_SELECTOR_FX_AT:20,showSelectors:function(a){a=void 0!==a?a:this.fxSpeed,this.selecting=!0,this.$(".list-actions").slideDown(a),a=this.views.length>=this.THROTTLE_SELECTOR_FX_AT?0:a,_.each(this.views,function(b){b.showSelector(a)})},hideSelectors:function(a){a=void 0!==a?a:this.fxSpeed,this.selecting=!1,this.$(".list-actions").slideUp(a),a=this.views.length>=this.THROTTLE_SELECTOR_FX_AT?0:a,_.each(this.views,function(b){b.hideSelector(a)}),this.selected=[],this.lastSelected=null},toggleSelectors:function(){this.selecting?this.hideSelectors():this.showSelectors()},selectAll:function(a){_.each(this.views,function(b){b.select(a)})},deselectAll:function(a){this.lastSelected=null,_.each(this.views,function(b){b.deselect(a)})},selectRange:function(a,b){var c=this.viewRange(a,b);return _.each(c,function(a){a.select()}),c},getSelectedViews:function(){return _.filter(this.views,function(a){return a.selected})},getSelectedModels:function(){return new this.collection.constructor(_.map(this.getSelectedViews(),function(a){return a.model}))},_showLoadingIndicator:function(a,c,d){this.debug("_showLoadingIndicator",this.indicator,a,c,d),c=void 0!==c?c:this.fxSpeed,this.indicator||(this.indicator=new b(this.$el),this.debug(" created",this.indicator)),this.$el.is(":visible")?(this.$el.fadeOut(c),this.indicator.show(a,c,d)):this.indicator.show(0,d)},_hideLoadingIndicator:function(a,b){this.debug("_hideLoadingIndicator",this.indicator,a,b),a=void 0!==a?a:this.fxSpeed,this.indicator&&this.indicator.hide(a,b)},scrollPosition:function(){return this.$scrollContainer().scrollTop()},scrollTo:function(a,b){return b=b||0,this.$scrollContainer().animate({scrollTop:a},b),this},scrollToTop:function(a){return this.scrollTo(0,a)},scrollToItem:function(a){return a?this:this},scrollToId:function(a,b){return this.scrollToItem(this.viewFromModelId(a),b)},events:{"click .select-all":"selectAll","click .deselect-all":"deselectAll"},toString:function(){return"ListPanel("+this.collection+")"}});f.prototype.templates=function(){var a=c.wrapTemplate(["
                              ",'
                              ','
                              ','
                              ',"
                              "]),b=c.wrapTemplate(['
                              ','
                              ','
                              <%- view.title %>
                              ',"
                              ",'
                              <%- view.subtitle %>
                              ','
                              ','
                              ','",'
                              ','
                              ','",'","
                              ",'
                              ',"
                              ","
                              ","
                              "]);return{el:a,controls:b}}();var g=f.extend({modelCollectionKey:"contents",initialize:function(a){f.prototype.initialize.call(this,a),this.selecting=void 0!==a.selecting?a.selecting:!1,this.setModel(this.model,a)},setModel:function(a,b){if(b=b||{},this.debug(this+".setModel:",a,b),this.freeModel(),this.freeViews(),a){var c=this.model?this.model.get("id"):null;this.model=a,this.logger&&(this.model.logger=this.logger),this._setUpModelListeners(),this.stopListening(this.collection),this.collection=this.model[this.modelCollectionKey]||b.collection||this._createDefaultCollection(),this._setUpCollectionListeners(),c&&a.get("id")!==c&&this.trigger("new-model",this)}return this},freeModel:function(){return this.model&&this.stopListening(this.model),this},_setUpModelListeners:function(){return this.log(this+"._setUpModelListeners",this.model),this.listenTo(this.model,"error",function(){var a=Array.prototype.slice.call(arguments,0);a.unshift("error"),this.trigger.apply(this,a)},this),this.logger&&this.listenTo(this.model,"all",function(a){this.info(this+"(model)",a,arguments)}),this},_renderControls:function(a){this.debug(this+"(ModelListPanel)._renderControls");var b=this.model?this.model.toJSON():{},c=$(this.templates.controls(b,this));return a.find(".controls").replaceWith(c),c},toString:function(){return"ModelListPanel("+this.model+")"}});return g.prototype.templates=function(){var a=c.wrapTemplate(['
                              ','
                              ','
                              <%- model.name %>
                              ',"
                              ",'
                              <%- view.subtitle %>
                              ','
                              ','
                              ','",'
                              ','
                              ','",'","
                              ",'
                              ',"
                              ","
                              ","
                              "]);return _.extend(_.clone(f.prototype.templates),{controls:a})}(),{ListPanel:f,ModelListPanel:g}}); -//# sourceMappingURL=../../../maps/mvc/list/list-view.js.map \ No newline at end of file +define(["mvc/list/list-item","ui/loading-indicator","mvc/base-mvc","utils/localization","ui/search-input"],function(e,t,i,s){"use strict";var n=Backbone.View.extend(i.LoggableMixin).extend({_logNamespace:"list",viewClass:e.ListItemView,collectionClass:Backbone.Collection,tagName:"div",className:"list-panel",fxSpeed:"fast",emptyMsg:s("This list is empty"),noneFoundMsg:s("No matching items found"),searchPlaceholder:s("search"),initialize:function(e,t){e=e||{},e.logger&&(this.logger=e.logger),this.log(this+".initialize:",e),this.fxSpeed=_.has(e,"fxSpeed")?e.fxSpeed:this.fxSpeed,this.filters=[],this.searchFor=e.searchFor||"",this.selecting=void 0===e.selecting||e.selecting,this.selected=e.selected||[],this.lastSelected=null,this.dragItems=e.dragItems||!1,this.viewClass=e.viewClass||this.viewClass,this.views=[],this.collection=e.collection||this._createDefaultCollection(),this.filters=e.filters||[],this.$scrollContainer=e.$scrollContainer||this.$scrollContainer,this.title=e.title||"",this.subtitle=e.subtitle||"",this._setUpListeners()},_setUpListeners:function(){return this.off(),this.on({error:function(e,t,i,s,n){console.error(e,t,i,s,n)},loading:function(){this._showLoadingIndicator("loading...",40)},"loading-done":function(){this._hideLoadingIndicator(40)}}),this.once("rendered",function(){this.trigger("rendered:initial",this)}),this._setUpCollectionListeners(),this._setUpViewListeners(),this},_createDefaultCollection:function(){return new this.collectionClass([])},_setUpCollectionListeners:function(){return this.log(this+"._setUpCollectionListeners",this.collection),this.stopListening(this.collection),this.listenTo(this.collection,{error:function(e,t,i,s,n){this.trigger("error",e,t,i,s,n)},update:function(e,t){var i=t.changes;return t.renderAll||i.added.length+i.removed.length>1?this.renderItems():1===i.added.length?this.addItemView(_.first(i.added),e,t):1===i.removed.length?this.removeItemView(_.first(i.removed),e,t):void 0}}),this},_setUpViewListeners:function(){this.log(this+"._setUpViewListeners"),this.on({"view:selected":function(e,t){if(t&&t.shiftKey&&this.lastSelected){var i=this.viewFromModelId(this.lastSelected);i&&this.selectRange(e,i)}else t&&t.altKey&&!this.selecting&&this.showSelectors();this.selected.push(e.model.id),this.lastSelected=e.model.id},"view:de-selected":function(e,t){this.selected=_.without(this.selected,e.model.id)}})},render:function(e){this.log(this+".render",e);var t=this._buildNewRender();return this._setUpBehaviors(t),this._queueNewRender(t,e),this},_buildNewRender:function(){this.debug(this+"(ListPanel)._buildNewRender");var e=$(this.templates.el({},this));return this._renderControls(e),this._renderTitle(e),this._renderSubtitle(e),this._renderSearch(e),this.renderItems(e),e},_renderControls:function(e){this.debug(this+"(ListPanel)._renderControls");var t=$(this.templates.controls({},this));return e.find(".controls").replaceWith(t),t},_renderTitle:function(e){},_renderSubtitle:function(e){},_queueNewRender:function(e,t){t=void 0===t?this.fxSpeed:t;var i=this;i.log("_queueNewRender:",e,t),$(i).queue("fx",[function(e){i.$el.fadeOut(t,e)},function(t){i._swapNewRender(e),t()},function(e){i.$el.fadeIn(t,e)},function(e){i.trigger("rendered",i),e()}])},_swapNewRender:function(e){return this.$el.empty().attr("class",this.className).append(e.children()),this.selecting&&this.showSelectors(0),this},_setUpBehaviors:function(e){return e=e||this.$el,this.$controls(e).find("[title]").tooltip(),this._renderMultiselectActionMenu(e),this},_renderMultiselectActionMenu:function(e){e=e||this.$el;var t=e.find(".list-action-menu"),i=this.multiselectActions();if(!i.length)return t.empty();var n=$(['
                              ','",'","
                              "].join("")),r=i.map(function(e){var t=['
                            • ',e.html,"
                            • "].join("");return $(t).click(function(t){return t.preventDefault(),e.func(t)})});return n.find("ul").append(r),t.replaceWith(n),n},multiselectActions:function(){return[]},$scrollContainer:function(e){return(e||this.$el).parent().parent()},$controls:function(e){return(e||this.$el).find("> .controls")},$list:function(e){return(e||this.$el).find("> .list-items")},$messages:function(e){return(e||this.$el).find("> .controls .messages")},$emptyMessage:function(e){return(e||this.$el).find("> .empty-message")},renderItems:function(e){e=e||this.$el;var t=this;t.log(this+".renderItems",e);var i=t.$list(e);t.freeViews();var s=t._filterCollection();return t.views=s.map(function(e){return t._createItemView(e)}),i.empty(),t.views.length&&t._attachItems(e),t._renderEmptyMessage(e).toggle(!t.views.length),t.trigger("views:ready",t.views),t.views},_filterCollection:function(){var e=this;return e.collection.filter(_.bind(e._filterItem,e))},_filterItem:function(e){var t=this;return _.every(t.filters.map(function(t){return t.call(e)}))&&(!t.searchFor||e.matchesAll(t.searchFor))},_createItemView:function(e){var t=this._getItemViewClass(e),i=_.extend(this._getItemViewOptions(e),{model:e}),s=new t(i);return this._setUpItemViewListeners(s),s},_destroyItemView:function(e){this.stopListening(e),this.views=_.without(this.views,e)},_destroyItemViews:function(e){var t=this;return t.views.forEach(function(e){t.stopListening(e)}),t.views=[],t},freeViews:function(){return this._destroyItemViews()},_getItemViewClass:function(e){return this.viewClass},_getItemViewOptions:function(e){return{fxSpeed:this.fxSpeed,expanded:!1,selectable:this.selecting,selected:_.contains(this.selected,e.id),draggable:this.dragItems}},_setUpItemViewListeners:function(e){var t=this;return this.listenTo(e,"all",function(){var e=Array.prototype.slice.call(arguments,0);e[0]="view:"+e[0],t.trigger.apply(t,e)}),this.listenTo(e,"draggable:dragstart",function(e,t){var i={},s=this.getSelectedModels();i=s.length?s.toJSON():[t.model.toJSON()],e.dataTransfer.setData("text",JSON.stringify(i))},this),t},_attachItems:function(e){var t=this;return this.$list(e).append(this.views.map(function(e){return t._renderItemView$el(e)})),this},_renderItemView$el:function(e){return e.render(0).$el},_renderEmptyMessage:function(e){this.debug("_renderEmptyMessage",e,this.searchFor);var t=this.searchFor?this.noneFoundMsg:this.emptyMsg;return this.$emptyMessage(e).text(t)},expandAll:function(){_.each(this.views,function(e){e.expand()})},collapseAll:function(){_.each(this.views,function(e){e.collapse()})},addItemView:function(e,t,i){var s=this,n=s._filterCollection().indexOf(e);if(-1!==n){var r=s._createItemView(e);return $(r).queue("fx",[function(e){s.$emptyMessage().is(":visible")?s.$emptyMessage().fadeOut(s.fxSpeed,e):e()},function(e){s._attachView(r,n),e()}]),r}},_attachView:function(e,t,i){i=!!_.isUndefined(i)||i,t=t||0;var s=this;return s.views.splice(t,0,e),s._insertIntoListAt(t,s._renderItemView$el(e).hide()),s.trigger("view:attached",e),i?e.$el.slideDown(s.fxSpeed,function(){s.trigger("view:attached:rendered")}):(e.$el.show(),s.trigger("view:attached:rendered")),e},_insertIntoListAt:function(e,t){var i=this.$list();return 0===e?i.prepend(t):i.children().eq(e-1).after(t),t},removeItemView:function(e,t,i){var s=this,n=_.find(s.views,function(t){return t.model===e});if(n)return s.views=_.without(s.views,n),s.trigger("view:removed",n),$({}).queue("fx",[function(e){n.$el.fadeOut(s.fxSpeed,e)},function(e){n.remove(),s.trigger("view:removed:rendered"),s.views.length?e():s._renderEmptyMessage().fadeIn(s.fxSpeed,e)}]),n},viewFromModelId:function(e){return _.find(this.views,function(t){return t.model.id===e})},viewFromModel:function(e){return e?this.viewFromModelId(e.id):void 0},viewsWhereModel:function(e){return this.views.filter(function(t){return _.isMatch(t.model.attributes,e)})},viewRange:function(e,t){if(e===t)return e?[e]:[];var i=this.views.indexOf(e),s=this.views.indexOf(t);return-1===i||-1===s?i===s?[]:-1===i?[t]:[e]:i .controls .search-query");return i.val()!==e&&i.val(e),this},clearSearch:function(e){return this.searchFor="",this.trigger("search:clear",this),this.$("> .controls .search-query").val(""),this.renderItems(),this},THROTTLE_SELECTOR_FX_AT:20,showSelectors:function(e){e=void 0!==e?e:this.fxSpeed,this.selecting=!0,this.$(".list-actions").slideDown(e),e=this.views.length>=this.THROTTLE_SELECTOR_FX_AT?0:e,_.each(this.views,function(t){t.showSelector(e)})},hideSelectors:function(e){e=void 0!==e?e:this.fxSpeed,this.selecting=!1,this.$(".list-actions").slideUp(e),e=this.views.length>=this.THROTTLE_SELECTOR_FX_AT?0:e,_.each(this.views,function(t){t.hideSelector(e)}),this.selected=[],this.lastSelected=null},toggleSelectors:function(){this.selecting?this.hideSelectors():this.showSelectors()},selectAll:function(e){_.each(this.views,function(t){t.select(e)})},deselectAll:function(e){this.lastSelected=null,_.each(this.views,function(t){t.deselect(e)})},selectRange:function(e,t){var i=this.viewRange(e,t);return _.each(i,function(e){e.select()}),i},getSelectedViews:function(){return _.filter(this.views,function(e){return e.selected})},getSelectedModels:function(){return new this.collection.constructor(_.map(this.getSelectedViews(),function(e){return e.model}))},_showLoadingIndicator:function(e,i,s){this.debug("_showLoadingIndicator",this.indicator,e,i,s),i=void 0!==i?i:this.fxSpeed,this.indicator||(this.indicator=new t(this.$el),this.debug("\t created",this.indicator)),this.$el.is(":visible")?(this.$el.fadeOut(i),this.indicator.show(e,i,s)):this.indicator.show(0,s)},_hideLoadingIndicator:function(e,t){this.debug("_hideLoadingIndicator",this.indicator,e,t),e=void 0!==e?e:this.fxSpeed,this.indicator&&this.indicator.hide(e,t)},scrollPosition:function(){return this.$scrollContainer().scrollTop()},scrollTo:function(e,t){return t=t||0,this.$scrollContainer().animate({scrollTop:e},t),this},scrollToTop:function(e){return this.scrollTo(0,e)},scrollToItem:function(e,t){return this},scrollToId:function(e,t){return this.scrollToItem(this.viewFromModelId(e),t)},events:{"click .select-all":"selectAll","click .deselect-all":"deselectAll"},toString:function(){return"ListPanel("+this.collection+")"}});n.prototype.templates=function(){return{el:i.wrapTemplate(["
                              ",'
                              ','
                              ','
                              ',"
                              "]),controls:i.wrapTemplate(['
                              ','
                              ','
                              <%- view.title %>
                              ',"
                              ",'
                              <%- view.subtitle %>
                              ','
                              ','
                              ','",'
                              ','
                              ','",'","
                              ",'
                              ',"
                              ","
                              ","
                              "])}}();var r=n.extend({modelCollectionKey:"contents",initialize:function(e){n.prototype.initialize.call(this,e),this.selecting=void 0!==e.selecting&&e.selecting,this.setModel(this.model,e)},setModel:function(e,t){if(t=t||{},this.debug(this+".setModel:",e,t),this.freeModel(),this.freeViews(),e){var i=this.model?this.model.get("id"):null;this.model=e,this.logger&&(this.model.logger=this.logger),this._setUpModelListeners(),this.stopListening(this.collection),this.collection=this.model[this.modelCollectionKey]||t.collection||this._createDefaultCollection(),this._setUpCollectionListeners(),i&&e.get("id")!==i&&this.trigger("new-model",this)}return this},freeModel:function(){return this.model&&this.stopListening(this.model),this},_setUpModelListeners:function(){return this.log(this+"._setUpModelListeners",this.model),this.listenTo(this.model,"error",function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("error"),this.trigger.apply(this,e)},this),this.logger&&this.listenTo(this.model,"all",function(e){this.info(this+"(model)",e,arguments)}),this},_renderControls:function(e){this.debug(this+"(ModelListPanel)._renderControls");var t=this.model?this.model.toJSON():{},i=$(this.templates.controls(t,this));return e.find(".controls").replaceWith(i),i},toString:function(){return"ModelListPanel("+this.model+")"}});return r.prototype.templates=function(){var e=i.wrapTemplate(['
                              ','
                              ','
                              <%- model.name %>
                              ',"
                              ",'
                              <%- view.subtitle %>
                              ','
                              ','
                              ','",'
                              ','
                              ','",'","
                              ",'
                              ',"
                              ","
                              ","
                              "]);return _.extend(_.clone(n.prototype.templates),{controls:e})}(),{ListPanel:n,ModelListPanel:r}}); +//# sourceMappingURL=../../../maps/mvc/list/list-view.js.map diff --git a/static/scripts/mvc/tag.js b/static/scripts/mvc/tag.js index 7f6afd69dfe..28b76dc1b69 100644 --- a/static/scripts/mvc/tag.js +++ b/static/scripts/mvc/tag.js @@ -1,2 +1,2 @@ -define(["mvc/base-mvc","utils/localization"],function(a,b){var c=Backbone.View.extend(a.LoggableMixin).extend(a.HiddenUntilActivatedViewMixin).extend({tagName:"div",className:"tags-display",initialize:function(a){this.listenTo(this.model,"change:tags",function(){this.render()}),this.hiddenUntilActivated(a.$activator,a)},render:function(){var a=this;return this.$el.html(this._template()),this.$input().select2({placeholder:"Add tags",width:"100%",tags:function(){return a._getTagsUsed()}}),this._setUpBehaviors(),this},_template:function(){return['",''].join("")},tagsToCSV:function(){var a=this.model.get("tags");return!_.isArray(a)||_.isEmpty(a)?"":a.map(function(a){return _.escape(a)}).sort().join(",")},$input:function(){return this.$el.find("input.tags-input")},_getTagsUsed:function(){return Galaxy.user.get("tags_used")},_setUpBehaviors:function(){var a=this;this.$input().on("change",function(b){a.model.save({tags:b.val},{silent:!0}),b.added&&a._addNewTagToTagsUsed(b.added.text+"")})},_addNewTagToTagsUsed:function(a){var b=Galaxy.user.get("tags_used");_.contains(b,a)||(b.push(a),b.sort(),Galaxy.user.set("tags_used",b))},remove:function(){this.$input.off(),this.stopListening(this.model),Backbone.View.prototype.remove.call(this)},toString:function(){return["TagsEditor(",this.model+"",")"].join("")}});return{TagsEditor:c}}); -//# sourceMappingURL=../../maps/mvc/tag.js.map \ No newline at end of file +define(["mvc/base-mvc","utils/localization"],function(t,e){return{TagsEditor:Backbone.View.extend(t.LoggableMixin).extend(t.HiddenUntilActivatedViewMixin).extend({tagName:"div",className:"tags-display",initialize:function(t){this.listenTo(this.model,"change:tags",function(){this.render()}),this.hiddenUntilActivated(t.$activator,t)},render:function(){var t=this;return this.$el.html(this._template()),this.$input().select2({placeholder:"Add tags",width:"100%",tags:function(){return t._getTagsUsed()}}),this._setUpBehaviors(),this},_template:function(){return['",''].join("")},tagsToCSV:function(){var t=this.model.get("tags");return!_.isArray(t)||_.isEmpty(t)?"":t.map(function(t){return _.escape(t)}).sort().join(",")},$input:function(){return this.$el.find("input.tags-input")},_getTagsUsed:function(){return Galaxy.user.get("tags_used")},_setUpBehaviors:function(){var t=this;this.$input().on("change",function(e){t.model.save({tags:e.val},{silent:!0}),e.added&&t._addNewTagToTagsUsed(e.added.text+"")})},_addNewTagToTagsUsed:function(t){var e=Galaxy.user.get("tags_used");_.contains(e,t)||(e.push(t),e.sort(),Galaxy.user.set("tags_used",e))},remove:function(){this.$input.off(),this.stopListening(this.model),Backbone.View.prototype.remove.call(this)},toString:function(){return["TagsEditor(",this.model+"",")"].join("")}})}}); +//# sourceMappingURL=../../maps/mvc/tag.js.map diff --git a/static/scripts/mvc/tool/tool-form-base.js b/static/scripts/mvc/tool/tool-form-base.js index 4ea9eb9ed39..6e942aba329 100644 --- a/static/scripts/mvc/tool/tool-form-base.js +++ b/static/scripts/mvc/tool/tool-form-base.js @@ -1,2 +1,2 @@ -define(["utils/utils","utils/deferred","mvc/ui/ui-misc","mvc/form/form-view","mvc/citation/citation-model","mvc/citation/citation-view"],function(a,b,c,d,e,f){return d.extend({initialize:function(a){var c=this;this.deferred=new b,d.prototype.initialize.call(this,a),this.model.get("inputs")?this._buildForm(this.model.attributes):this.deferred.execute(function(a){c._buildModel(a,c.model.attributes,!0)}),this.model.get("listen_to_history")&&parent.Galaxy&&parent.Galaxy.currHistoryPanel&&this.listenTo(parent.Galaxy.currHistoryPanel.collection,"change",function(){c.model.get("onchange")()}),this.$el.on("remove",function(){c.remove()})},remove:function(){var a=this;this.$el.hide(),this.deferred.execute(function(){d.prototype.remove.call(a),Galaxy.emit.debug("tool-form-base::remove()","Destroy view.")})},_buildForm:function(a){var b=this;this.model.set(a),this.model.set({title:a.title||""+a.name+" "+a.description+" (Galaxy Version "+a.version+")",operations:!this.model.get("hide_operations")&&this._operations(),onchange:function(){b.deferred.reset(),b.deferred.execute(function(a){b.model.get("postchange")(a,b)})}}),this.model.get("customize")&&this.model.get("customize")(this),this.render(),this.model.get("collapsible")||this.$el.append($("
                              ").addClass("ui-margin-top-large").append(this._footer()))},_buildModel:function(b,d,e){var f=this,g=this.model.attributes;g.version=d.version,g.id=d.id;var h="",i={};g.job_id?h=Galaxy.root+"api/jobs/"+g.job_id+"/build_for_rerun":(h=Galaxy.root+"api/tools/"+g.id+"/build",Galaxy.params&&Galaxy.params.tool_id==g.id&&(i=$.extend({},Galaxy.params),g.version&&(i.tool_version=g.version))),a.get({url:h,data:i,success:function(a){return a.display?(f._buildForm(a),!e&&f.message.update({status:"success",message:"Now you are using '"+g.name+"' version "+g.version+", id '"+g.id+"'.",persistent:!1}),Galaxy.emit.debug("tool-form-base::_buildModel()","Initial tool model ready.",a),void b.resolve()):void(window.location=Galaxy.root)},error:function(a,d){var e=a&&a.err_msg||"Uncaught error.";401==d?window.location=Galaxy.root+"user/login?"+$.param({redirect:Galaxy.root+"?tool_id="+g.id}):f.$el.is(":empty")?f.$el.prepend(new c.Message({message:e,status:"danger",persistent:!0,large:!0}).$el):Galaxy.modal&&Galaxy.modal.show({title:"Tool request failed",body:e,buttons:{Close:function(){Galaxy.modal.hide()}}}),Galaxy.emit.debug("tool-form-base::_buildModel()","Initial tool model request failed.",a),b.reject()}})},_operations:function(){var b=this,d=this.model.attributes,e=new c.ButtonMenu({icon:"fa-cubes",title:!d.narrow&&"Versions"||null,tooltip:"Select another tool version"});if(!d.sustain_version&&d.versions&&d.versions.length>1)for(var f in d.versions){var g=d.versions[f];g!=d.version&&e.addMenu({title:"Switch to "+g,version:g,icon:"fa-cube",onclick:function(){var a=d.id.replace(d.version,this.version),c=this.version;b.deferred.reset(),b.deferred.execute(function(d){b._buildModel(d,{id:a,version:c})})}})}else e.$el.hide();var h=new c.ButtonMenu({icon:"fa-caret-down",title:!d.narrow&&"Options"||null,tooltip:"View available options"});return d.biostar_url&&(h.addMenu({icon:"fa-question-circle",title:"Question?",onclick:function(){window.open(d.biostar_url+"/p/new/post/")}}),h.addMenu({icon:"fa-search",title:"Search",onclick:function(){window.open(d.biostar_url+"/local/search/page/?q="+d.name)}})),h.addMenu({icon:"fa-share",title:"Share",onclick:function(){prompt("Copy to clipboard: Ctrl+C, Enter",window.location.origin+Galaxy.root+"root?tool_id="+d.id)}}),Galaxy.user&&Galaxy.user.get("is_admin")&&(h.addMenu({icon:"fa-download",title:"Download",onclick:function(){window.location.href=Galaxy.root+"api/tools/"+d.id+"/download"}}),h.addMenu({icon:"fa-refresh",title:"Reload XML",onclick:function(){a.get({url:Galaxy.root+"api/tools/"+d.id+"/reload",success:function(){b.message.update({persistent:!1,message:"Tool XML has been reloaded.",status:"success"})},error:function(a){b.message.update({persistent:!1,message:a.err_msg,status:"danger"})}})}})),d.requirements&&d.requirements.length>0&&h.addMenu({icon:"fa-info-circle",title:"Requirements",onclick:function(){!this.requirements_visible||b.portlet.collapsed?(this.requirements_visible=!0,b.portlet.expand(),b.message.update({persistent:!0,message:b._templateRequirements(d),status:"info"})):(this.requirements_visible=!1,b.message.update({message:""}))}}),d.sharable_url&&h.addMenu({icon:"fa-external-link",title:"See in Tool Shed",onclick:function(){window.open(d.sharable_url)}}),{menu:h,versions:e}},_footer:function(){var a=this.model.attributes,b=$("
                              ").append(this._templateHelp(a));if(a.citations){var c=$("
                              "),d=new e.ToolCitationCollection;d.tool_id=a.id;var g=new f.CitationListView({el:c,collection:d});g.render(),d.fetch(),b.append(c)}return b},_templateHelp:function(a){var b=$("
                              ").addClass("ui-form-help").append(a.help);return b.find("a").attr("target","_blank"),b},_templateRequirements:function(a){var b=a.requirements.length;if(b>0){var c="This tool requires ";_.each(a.requirements,function(a,d){c+=a.name+(a.version?" (Version "+a.version+")":"")+(b-2>d?", ":d==b-2?" and ":"")});var d=$("").attr("target","_blank").attr("href","https://wiki.galaxyproject.org/Tools/Requirements").text("here");return $("").append(c+". Click ").append(d).append(" for more information.")}return"No requirements found."}})}); -//# sourceMappingURL=../../../maps/mvc/tool/tool-form-base.js.map \ No newline at end of file +define(["utils/utils","utils/deferred","mvc/ui/ui-misc","mvc/form/form-view","mvc/citation/citation-model","mvc/citation/citation-view"],function(e,t,i,o,n,r){return o.extend({initialize:function(e){var i=this;this.deferred=new t,o.prototype.initialize.call(this,e),this.model.get("inputs")?this._buildForm(this.model.attributes):this.deferred.execute(function(e){i._buildModel(e,i.model.attributes,!0)}),this.model.get("listen_to_history")&&parent.Galaxy&&parent.Galaxy.currHistoryPanel&&this.listenTo(parent.Galaxy.currHistoryPanel.collection,"change",function(){i.model.get("onchange")()}),this.$el.on("remove",function(){i.remove()})},remove:function(){var e=this;this.$el.hide(),this.deferred.execute(function(){o.prototype.remove.call(e),Galaxy.emit.debug("tool-form-base::remove()","Destroy view.")})},_buildForm:function(e){var t=this;this.model.set(e),this.model.set({title:e.title||""+e.name+" "+e.description+" (Galaxy Version "+e.version+")",operations:!this.model.get("hide_operations")&&this._operations(),onchange:function(){t.deferred.reset(),t.deferred.execute(function(e){t.model.get("postchange")(e,t)})}}),this.model.get("customize")&&this.model.get("customize")(this),this.render(),this.model.get("collapsible")||this.$el.append($("
                              ").addClass("ui-margin-top-large").append(this._footer()))},_buildModel:function(t,o,n){var r=this,a=this.model.attributes;a.version=o.version,a.id=o.id;var s="",l={};a.job_id?s=Galaxy.root+"api/jobs/"+a.job_id+"/build_for_rerun":(s=Galaxy.root+"api/tools/"+a.id+"/build",Galaxy.params&&Galaxy.params.tool_id==a.id&&(l=$.extend({},Galaxy.params),a.version&&(l.tool_version=a.version))),e.get({url:s,data:l,success:function(e){if(!e.display)return void(window.location=Galaxy.root);r._buildForm(e),!n&&r.message.update({status:"success",message:"Now you are using '"+a.name+"' version "+a.version+", id '"+a.id+"'.",persistent:!1}),Galaxy.emit.debug("tool-form-base::_buildModel()","Initial tool model ready.",e),t.resolve()},error:function(e,o){var n=e&&e.err_msg||"Uncaught error.";401==o?window.location=Galaxy.root+"user/login?"+$.param({redirect:Galaxy.root+"?tool_id="+a.id}):r.$el.is(":empty")?r.$el.prepend(new i.Message({message:n,status:"danger",persistent:!0,large:!0}).$el):Galaxy.modal&&Galaxy.modal.show({title:"Tool request failed",body:n,buttons:{Close:function(){Galaxy.modal.hide()}}}),Galaxy.emit.debug("tool-form-base::_buildModel()","Initial tool model request failed.",e),t.reject()}})},_operations:function(){var t=this,o=this.model.attributes,n=new i.ButtonMenu({icon:"fa-cubes",title:!o.narrow&&"Versions"||null,tooltip:"Select another tool version"});if(!o.sustain_version&&o.versions&&o.versions.length>1)for(var r in o.versions){var a=o.versions[r];a!=o.version&&n.addMenu({title:"Switch to "+a,version:a,icon:"fa-cube",onclick:function(){var e=o.id.replace(o.version,this.version),i=this.version;t.deferred.reset(),t.deferred.execute(function(o){t._buildModel(o,{id:e,version:i})})}})}else n.$el.hide();var s=new i.ButtonMenu({icon:"fa-caret-down",title:!o.narrow&&"Options"||null,tooltip:"View available options"});return o.biostar_url&&(s.addMenu({icon:"fa-question-circle",title:"Question?",onclick:function(){window.open(o.biostar_url+"/p/new/post/")}}),s.addMenu({icon:"fa-search",title:"Search",onclick:function(){window.open(o.biostar_url+"/local/search/page/?q="+o.name)}})),s.addMenu({icon:"fa-share",title:"Share",onclick:function(){prompt("Copy to clipboard: Ctrl+C, Enter",window.location.origin+Galaxy.root+"root?tool_id="+o.id)}}),Galaxy.user&&Galaxy.user.get("is_admin")&&(s.addMenu({icon:"fa-download",title:"Download",onclick:function(){window.location.href=Galaxy.root+"api/tools/"+o.id+"/download"}}),s.addMenu({icon:"fa-refresh",title:"Reload XML",onclick:function(){e.get({url:Galaxy.root+"api/tools/"+o.id+"/reload",success:function(e){t.message.update({persistent:!1,message:"Tool XML has been reloaded.",status:"success"})},error:function(e){t.message.update({persistent:!1,message:e.err_msg,status:"danger"})}})}})),o.requirements&&o.requirements.length>0&&s.addMenu({icon:"fa-info-circle",title:"Requirements",onclick:function(){!this.requirements_visible||t.portlet.collapsed?(this.requirements_visible=!0,t.portlet.expand(),t.message.update({persistent:!0,message:t._templateRequirements(o),status:"info"})):(this.requirements_visible=!1,t.message.update({message:""}))}}),o.sharable_url&&s.addMenu({icon:"fa-external-link",title:"See in Tool Shed",onclick:function(){window.open(o.sharable_url)}}),{menu:s,versions:n}},_footer:function(){var e=this.model.attributes,t=$("
                              ").append(this._templateHelp(e));if(e.citations){var i=$("
                              "),o=new n.ToolCitationCollection;o.tool_id=e.id;new r.CitationListView({el:i,collection:o}).render(),o.fetch(),t.append(i)}return t},_templateHelp:function(e){var t=$("
                              ").addClass("ui-form-help").append(e.help);return t.find("a").attr("target","_blank"),t},_templateRequirements:function(e){var t=e.requirements.length;if(t>0){var i="This tool requires ";_.each(e.requirements,function(e,o){i+=e.name+(e.version?" (Version "+e.version+")":"")+(o").attr("target","_blank").attr("href","https://wiki.galaxyproject.org/Tools/Requirements").text("here");return $("").append(i+". Click ").append(o).append(" for more information.")}return"No requirements found."}})}); +//# sourceMappingURL=../../../maps/mvc/tool/tool-form-base.js.map diff --git a/static/scripts/mvc/tool/tool-form-composite.js b/static/scripts/mvc/tool/tool-form-composite.js index 3c07d2e8a3e..1795fe4c39d 100644 --- a/static/scripts/mvc/tool/tool-form-composite.js +++ b/static/scripts/mvc/tool/tool-form-composite.js @@ -1,2 +1,2 @@ -define(["utils/utils","utils/deferred","mvc/ui/ui-misc","mvc/form/form-view","mvc/form/form-data","mvc/tool/tool-form-base","mvc/ui/ui-modal","mvc/webhooks","mvc/workflow/workflow-icons"],function(a,b,c,d,e,f,g,h,i){var j=Backbone.View.extend({initialize:function(a){var c=this;this.modal=parent.Galaxy.modal||new g.View,this.model=a&&a.model||new Backbone.Model(a),this.deferred=new b,this.setElement($("
                              ").addClass("ui-form-composite").append(this.$message=$("
                              ")).append(this.$header=$("
                              ")).append(this.$steps=$("
                              "))),$("body").append(this.$el),this._configure(),this.render(),this._refresh(),this.$el.on("click",function(){c._refresh()}),this.$steps.scroll(function(){c._refresh()}),$(window).resize(function(){c._refresh()})},_refresh:function(){var a=_.reduce(this.$el.children(),function(a,b){return a+$(b).outerHeight()},0)-this.$steps.height()+25;this.$steps.css("height",$(window).height()-a)},_configure:function(){function b(a,b){for(var e=/\$\{(.+?)\}/g;match=e.exec(String(a));){var f=match[1];b(c.wp_inputs[f]=c.wp_inputs[f]||{label:f,name:f,type:"text",color:"hsl( "+100*++d+", 70%, 30% )",style:"ui-form-wp-source",links:[]})}}var c=this;this.forms=[],this.steps=[],this.links=[],this.parms=[],_.each(this.model.get("steps"),function(b,d){Galaxy.emit.debug("tool-form-composite::initialize()",d+" : Preparing workflow step.");var e=i[b.step_type],f=parseInt(d+1)+": "+(b.step_label||b.step_name);b.annotation&&(f+=" - "+b.annotation),b.step_version&&(f+=" (Galaxy Version "+b.step_version+")"),b=a.merge({index:d,title:_.escape(f),icon:e||"",help:null,citations:null,collapsible:!0,collapsed:d>0&&!c._isDataStep(b),sustain_version:!0,sustain_repeats:!0,sustain_conditionals:!0,narrow:!0,text_enable:"Edit",text_disable:"Undo",cls_enable:"fa fa-edit",cls_disable:"fa fa-undo",errors:b.messages,initial_errors:!0,cls:"ui-portlet-narrow",hide_operations:!0,needs_refresh:!1,always_refresh:"tool"!=b.step_type},b),c.steps[d]=b,c.links[d]=[],c.parms[d]={}}),_.each(this.steps,function(a,b){e.visitInputs(a.inputs,function(a,d){c.parms[b][d]=a})}),_.each(this.steps,function(a,b){_.each(a.output_connections,function(a){_.each(c.steps,function(d){d.step_index===a.input_step_index&&c.links[b].push(d)})})}),_.each(this.steps,function(a,b){_.each(c.steps,function(d,e){var f={};_.each(a.output_connections,function(a){d.step_index===a.input_step_index&&(f[a.input_name]=a)}),_.each(c.parms[e],function(c,d){var e=f[d];e&&(c.type="hidden",c.help=c.step_linked?c.help+", ":"",c.help+="Output dataset '"+e.output_name+"' from step "+(parseInt(b)+1),c.step_linked=c.step_linked||[],c.step_linked.push(a))})})});var d=0;this.wp_inputs={},_.each(this.steps,function(a,d){_.each(c.parms[d],function(c){b(c.value,function(b){b.links.push(a),c.wp_linked=!0,c.type="text",c.backdrop=!0,c.style="ui-form-wp-target"})}),_.each(a.post_job_actions,function(a){_.each(a.action_arguments,function(a){b(a,function(){})})})}),_.each(this.steps,function(b){if("tool"==b.step_type){var d=!0;e.visitInputs(b.inputs,function(e,f,g){var h=-1!=["data","data_collection"].indexOf(e.type),i=g[e.data_ref];e.step_linked&&!c._isDataStep(e.step_linked)&&(d=!1),e.options&&(0==e.options.length&&!d||e.wp_linked)&&(e.is_workflow=!0),i&&(e.is_workflow=i.step_linked&&!c._isDataStep(i.step_linked)||e.wp_linked),(h||e.value&&"RuntimeValue"==e.value.__class__&&!e.step_linked)&&(b.collapsed=!1),e.value&&"RuntimeValue"==e.value.__class__&&(e.value=null),e.flavor="workflow",h||"hidden"===e.type||e.wp_linked||(e.optional||!a.isEmpty(e.value)&&""!==e.value)&&(e.collapsible_value=e.value,e.collapsible_preview=!0)})}})},render:function(){var a=this;this.deferred.reset(),this._renderHeader(),this._renderMessage(),this._renderParameters(),this._renderHistory(),_.each(this.steps,function(b){a._renderStep(b)})},_renderHeader:function(){var a=this;this.execute_btn=new c.Button({icon:"fa-check",title:"Run workflow",cls:"btn btn-primary",onclick:function(){a._execute()}}),this.$header.addClass("ui-form-header").empty().append(new c.Label({title:"Workflow: "+this.model.get("name")}).$el).append(this.execute_btn.$el)},_renderMessage:function(){this.$message.empty(),this.model.get("has_upgrade_messages")&&this.$message.append(new c.Message({message:"Some tools in this workflow may have changed since it was last saved or some errors were found. The workflow may still run, but any new options will have default values. Please review the messages below to make a decision about whether the changes will affect your analysis.",status:"warning",persistent:!0,fade:!1}).$el);var a=this.model.get("step_version_changes");a&&a.length>0&&this.$message.append(new c.Message({message:"Some tools are being executed with different versions compared to those available when this workflow was last saved because the other versions are not or no longer available on this Galaxy instance. To upgrade your workflow and dismiss this message simply edit the workflow and re-save it.",status:"warning",persistent:!0,fade:!1}).$el)},_renderParameters:function(){var a=this;this.wp_form=null,_.isEmpty(this.wp_inputs)||(this.wp_form=new d({title:"Workflow Parameters",inputs:this.wp_inputs,cls:"ui-portlet-narrow",onchange:function(){_.each(a.wp_form.input_list,function(b){_.each(b.links,function(b){a._refreshStep(b)})})}}),this._append(this.$steps.empty(),this.wp_form.$el))},_renderHistory:function(){this.history_form=new d({cls:"ui-portlet-narrow",title:"History Options",inputs:[{type:"conditional",name:"new_history",test_param:{name:"check",label:"Send results to a new history",type:"boolean",value:"false",help:""},cases:[{value:"true",inputs:[{name:"name",label:"History name",type:"text",value:this.model.get("name")}]}]}]}),this._append(this.$steps,this.history_form.$el)},_renderStep:function(b){var c=this,e=null;this.deferred.execute(function(g){if(c.$steps.addClass("ui-steps"),"tool"==b.step_type)b.postchange=function(c,d){var e={tool_id:b.id,tool_version:b.version,inputs:$.extend(!0,{},d.data.create())};d.wait(!0),Galaxy.emit.debug("tool-form-composite::postchange()","Sending current state.",e),a.request({type:"POST",url:Galaxy.root+"api/tools/"+b.id+"/build",data:e,success:function(a){d.update(a),d.wait(!1),Galaxy.emit.debug("tool-form-composite::postchange()","Received new model.",a),c.resolve()},error:function(a){Galaxy.emit.debug("tool-form-composite::postchange()","Refresh request failed.",a),c.reject()}})},e=new f(b),b.post_job_actions&&b.post_job_actions.length&&e.portlet.append($("
                              ").addClass("ui-form-element-disabled").append($("
                              ").addClass("ui-form-title").html("Job Post Actions")).append($("
                              ").addClass("ui-form-preview").html(_.reduce(b.post_job_actions,function(a,b){return a+" "+b.short_str},""))));else{var h=-1!=["data_input","data_collection_input"].indexOf(b.step_type);_.each(b.inputs,function(a){a.flavor="module",a.hide_label=h}),e=new d(a.merge({title:b.title,onchange:function(){_.each(c.links[b.index],function(a){c._refreshStep(a)})},inputs:b.inputs&&b.inputs.length>0?b.inputs:[{type:"hidden",name:"No options available.",ignore:null}]},b))}c.forms[b.index]=e,c._append(c.$steps,e.$el),b.needs_refresh&&c._refreshStep(b),e.portlet[c.show_progress?"disable":"enable"](),c.show_progress&&c.execute_btn.model.set({wait:!0,wait_text:"Preparing...",percentage:100*(b.index+1)/c.steps.length}),Galaxy.emit.debug("tool-form-composite::initialize()",b.index+" : Workflow step state ready.",b),setTimeout(function(){g.resolve()},0)})},_refreshStep:function(a){var b=this,c=this.forms[a.index];c?(_.each(b.parms[a.index],function(a,d){if(a.step_linked||a.wp_linked){var e=c.field_list[c.data.match(d)];if(e){var f=void 0;if(a.step_linked)f={values:[]},_.each(a.step_linked,function(a){b._isDataStep(a)&&(value=b.forms[a.index].data.create().input,value&&_.each(value.values,function(a){f.values.push(a)}))}),!a.multiple&&f.values.length>0&&(f={values:[f.values[0]]});else if(a.wp_linked){f=a.value;for(var g=/\$\{(.+?)\}/g;match=g.exec(a.value);){var h=b.wp_form.field_list[b.wp_form.data.match(match[1])],i=h&&h.value();i&&(f=f.replace(new RegExp("\\"+match[0],"g"),i))}}void 0!==f&&e.value(f)}}}),c.trigger("change")):a.needs_refresh=!0},_refreshHistory:function(){var a=this,b=parent.Galaxy&&parent.Galaxy.currHistoryPanel&&parent.Galaxy.currHistoryPanel.model;this._refresh_history&&clearTimeout(this._refresh_history),b&&b.refresh().success(function(){0===b.numOfUnfinishedShownContents()&&(a._refresh_history=setTimeout(function(){a._refreshHistory()},b.UPDATE_DELAY))})},_execute:function(){var a=this;this.show_progress=!0,this._enabled(!1),this.deferred.execute(function(b){setTimeout(function(){b.resolve(),a._submit()},0)})},_submit:function(){var b=this,c=this.history_form.data.create(),d={new_history_name:c["new_history|name"]?c["new_history|name"]:null,history_id:c["new_history|name"]?null:this.model.get("history_id"),replacement_params:this.wp_form?this.wp_form.data.create():{},parameters:{},parameters_normalized:!0,batch:!0},e=!0;for(var f in this.forms){var g=this.forms[f],i=g.data.create(),j=b.steps[f],k=j.step_index;g.trigger("reset");for(var l in i){var m=i[l],n=g.data.match(l),o=(g.field_list[n],g.input_list[n]);if(!o.step_linked){if(e=this._isDataStep(j)?m&&m.values&&m.values.length>0:o.optional||o.is_workflow&&""!==m||!o.is_workflow&&null!==m,!e){g.highlight(n);break}d.parameters[k]=d.parameters[k]||{},d.parameters[k][l]=i[l]}}if(!e)break}e?(Galaxy.emit.debug("tool-form-composite::submit()","Validation complete.",d),a.request({type:"POST",url:Galaxy.root+"api/workflows/"+this.model.id+"/invocations",data:d,success:function(a){if(Galaxy.emit.debug("tool-form-composite::submit","Submission successful.",a),b.$el.children().hide(),b.$el.append(b._templateSuccess(a)),$.isArray(a)&&a.length>0){b.$el.append($("
                              ",{id:"webhook-view"}));{new h.WebhookView({urlRoot:Galaxy.root+"api/webhooks/workflow"})}}b._refreshHistory()},error:function(a){Galaxy.emit.debug("tool-form-composite::submit","Submission failed.",a);var c=!1;if(a&&a.err_data)for(var e in b.forms){var f=b.forms[e],g=a.err_data[f.model.get("step_index")];if(g){var h=f.data.matchResponse(g);for(var i in h){f.highlight(i,h[i]),c=!0;break}}}c||b.modal.show({title:"Workflow submission failed",body:b._templateError(d,a&&a.err_msg),buttons:{Close:function(){b.modal.hide()}}})},complete:function(){b._enabled(!0)}})):(b._enabled(!0),Galaxy.emit.debug("tool-form-composite::submit()","Validation failed.",d))},_append:function(a,b){a.append("

                              ").append(b)},_enabled:function(a){this.execute_btn.model.set({wait:!a,wait_text:"Sending...",percentage:-1}),this.wp_form&&this.wp_form.portlet[a?"enable":"disable"](),this.history_form&&this.history_form.portlet[a?"enable":"disable"](),_.each(this.forms,function(b){b&&b.portlet[a?"enable":"disable"]()})},_isDataStep:function(a){lst=$.isArray(a)?a:[a];for(var b=0;b0?$("

                              ").addClass("donemessagelarge").append($("

                              ").html("Successfully invoked workflow "+a.sanitize(this.model.get("name"))+""+(b.length>1?" "+b.length+" times":"")+".")).append($("

                              ").append("").text("You can check the status of queued jobs and view the resulting data by refreshing the History pane. When the job has been run the status will change from 'running' to 'finished' if completed successfully or 'error' if problems were encountered.")):this._templateError(b,"Invalid success response. No invocations found.")},_templateError:function(a,b){return $("

                              ").addClass("errormessagelarge").append($("

                              ").text("The server could not complete the request. Please contact the Galaxy Team if this error persists. "+(JSON.stringify(b)||""))).append($("

                              ").text(JSON.stringify(a,null,4)))}});return{View:j}});
                              -//# sourceMappingURL=../../../maps/mvc/tool/tool-form-composite.js.map
                              \ No newline at end of file
                              +define(["utils/utils","utils/deferred","mvc/ui/ui-misc","mvc/form/form-view","mvc/form/form-data","mvc/tool/tool-form-base","mvc/ui/ui-modal","mvc/webhooks","mvc/workflow/workflow-icons"],function(e,t,s,i,n,a,o,r,l){return{View:Backbone.View.extend({initialize:function(e){var s=this;this.modal=parent.Galaxy.modal||new o.View,this.model=e&&e.model||new Backbone.Model(e),this.deferred=new t,this.setElement($("
                              ").addClass("ui-form-composite").append(this.$message=$("
                              ")).append(this.$header=$("
                              ")).append(this.$steps=$("
                              "))),$("body").append(this.$el),this._configure(),this.render(),this._refresh(),this.$el.on("click",function(){s._refresh()}),this.$steps.scroll(function(){s._refresh()}),$(window).resize(function(){s._refresh()})},_refresh:function(e){var t=_.reduce(this.$el.children(),function(e,t){return e+$(t).outerHeight()},0)-this.$steps.height()+25;this.$steps.css("height",$(window).height()-t)},_configure:function(){function t(e,t){for(var n=/\$\{(.+?)\}/g;match=n.exec(String(e));){var a=match[1];t(s.wp_inputs[a]=s.wp_inputs[a]||{label:a,name:a,type:"text",color:"hsl( "+100*++i+", 70%, 30% )",style:"ui-form-wp-source",links:[]})}}var s=this;this.forms=[],this.steps=[],this.links=[],this.parms=[],_.each(this.model.get("steps"),function(t,i){Galaxy.emit.debug("tool-form-composite::initialize()",i+" : Preparing workflow step.");var n=l[t.step_type],a=parseInt(i+1)+": "+(t.step_label||t.step_name);t.annotation&&(a+=" - "+t.annotation),t.step_version&&(a+=" (Galaxy Version "+t.step_version+")"),t=e.merge({index:i,title:_.escape(a),icon:n||"",help:null,citations:null,collapsible:!0,collapsed:i>0&&!s._isDataStep(t),sustain_version:!0,sustain_repeats:!0,sustain_conditionals:!0,narrow:!0,text_enable:"Edit",text_disable:"Undo",cls_enable:"fa fa-edit",cls_disable:"fa fa-undo",errors:t.messages,initial_errors:!0,cls:"ui-portlet-narrow",hide_operations:!0,needs_refresh:!1,always_refresh:"tool"!=t.step_type},t),s.steps[i]=t,s.links[i]=[],s.parms[i]={}}),_.each(this.steps,function(e,t){n.visitInputs(e.inputs,function(e,i){s.parms[t][i]=e})}),_.each(this.steps,function(e,t){_.each(e.output_connections,function(e){_.each(s.steps,function(i,n){i.step_index===e.input_step_index&&s.links[t].push(i)})})}),_.each(this.steps,function(e,t){_.each(s.steps,function(i,n){var a={};_.each(e.output_connections,function(e){i.step_index===e.input_step_index&&(a[e.input_name]=e)}),_.each(s.parms[n],function(s,i){var n=a[i];n&&(s.type="hidden",s.help=s.step_linked?s.help+", ":"",s.help+="Output dataset '"+n.output_name+"' from step "+(parseInt(t)+1),s.step_linked=s.step_linked||[],s.step_linked.push(e))})})});var i=0;this.wp_inputs={},_.each(this.steps,function(e,i){_.each(s.parms[i],function(s,i){t(s.value,function(t){t.links.push(e),s.wp_linked=!0,s.type="text",s.backdrop=!0,s.style="ui-form-wp-target"})}),_.each(e.post_job_actions,function(e){_.each(e.action_arguments,function(e){t(e,function(){})})})}),_.each(this.steps,function(t,i){if("tool"==t.step_type){var a=!0;n.visitInputs(t.inputs,function(i,n,o){var r=-1!=["data","data_collection"].indexOf(i.type),l=o[i.data_ref];i.step_linked&&!s._isDataStep(i.step_linked)&&(a=!1),i.options&&(0==i.options.length&&!a||i.wp_linked)&&(i.is_workflow=!0),l&&(i.is_workflow=l.step_linked&&!s._isDataStep(l.step_linked)||i.wp_linked),(r||i.value&&"RuntimeValue"==i.value.__class__&&!i.step_linked)&&(t.collapsed=!1),i.value&&"RuntimeValue"==i.value.__class__&&(i.value=null),i.flavor="workflow",r||"hidden"===i.type||i.wp_linked||(i.optional||!e.isEmpty(i.value)&&""!==i.value)&&(i.collapsible_value=i.value,i.collapsible_preview=!0)})}})},render:function(){var e=this;this.deferred.reset(),this._renderHeader(),this._renderMessage(),this._renderParameters(),this._renderHistory(),_.each(this.steps,function(t){e._renderStep(t)})},_renderHeader:function(){var e=this;this.execute_btn=new s.Button({icon:"fa-check",title:"Run workflow",cls:"btn btn-primary",onclick:function(){e._execute()}}),this.$header.addClass("ui-form-header").empty().append(new s.Label({title:"Workflow: "+this.model.get("name")}).$el).append(this.execute_btn.$el)},_renderMessage:function(){this.$message.empty(),this.model.get("has_upgrade_messages")&&this.$message.append(new s.Message({message:"Some tools in this workflow may have changed since it was last saved or some errors were found. The workflow may still run, but any new options will have default values. Please review the messages below to make a decision about whether the changes will affect your analysis.",status:"warning",persistent:!0,fade:!1}).$el);var e=this.model.get("step_version_changes");e&&e.length>0&&this.$message.append(new s.Message({message:"Some tools are being executed with different versions compared to those available when this workflow was last saved because the other versions are not or no longer available on this Galaxy instance. To upgrade your workflow and dismiss this message simply edit the workflow and re-save it.",status:"warning",persistent:!0,fade:!1}).$el)},_renderParameters:function(){var e=this;this.wp_form=null,_.isEmpty(this.wp_inputs)||(this.wp_form=new i({title:"Workflow Parameters",inputs:this.wp_inputs,cls:"ui-portlet-narrow",onchange:function(){_.each(e.wp_form.input_list,function(t,s){_.each(t.links,function(t){e._refreshStep(t)})})}}),this._append(this.$steps.empty(),this.wp_form.$el))},_renderHistory:function(){this.history_form=new i({cls:"ui-portlet-narrow",title:"History Options",inputs:[{type:"conditional",name:"new_history",test_param:{name:"check",label:"Send results to a new history",type:"boolean",value:"false",help:""},cases:[{value:"true",inputs:[{name:"name",label:"History name",type:"text",value:this.model.get("name")}]}]}]}),this._append(this.$steps,this.history_form.$el)},_renderStep:function(t){var s=this,n=null;this.deferred.execute(function(o){if(s.$steps.addClass("ui-steps"),"tool"==t.step_type)t.postchange=function(s,i){var n={tool_id:t.id,tool_version:t.version,inputs:$.extend(!0,{},i.data.create())};i.wait(!0),Galaxy.emit.debug("tool-form-composite::postchange()","Sending current state.",n),e.request({type:"POST",url:Galaxy.root+"api/tools/"+t.id+"/build",data:n,success:function(e){i.update(e),i.wait(!1),Galaxy.emit.debug("tool-form-composite::postchange()","Received new model.",e),s.resolve()},error:function(e){Galaxy.emit.debug("tool-form-composite::postchange()","Refresh request failed.",e),s.reject()}})},n=new a(t),t.post_job_actions&&t.post_job_actions.length&&n.portlet.append($("
                              ").addClass("ui-form-element-disabled").append($("
                              ").addClass("ui-form-title").html("Job Post Actions")).append($("
                              ").addClass("ui-form-preview").html(_.reduce(t.post_job_actions,function(e,t){return e+" "+t.short_str},""))));else{var r=-1!=["data_input","data_collection_input"].indexOf(t.step_type);_.each(t.inputs,function(e){e.flavor="module",e.hide_label=r}),n=new i(e.merge({title:t.title,onchange:function(){_.each(s.links[t.index],function(e){s._refreshStep(e)})},inputs:t.inputs&&t.inputs.length>0?t.inputs:[{type:"hidden",name:"No options available.",ignore:null}]},t))}s.forms[t.index]=n,s._append(s.$steps,n.$el),t.needs_refresh&&s._refreshStep(t),n.portlet[s.show_progress?"disable":"enable"](),s.show_progress&&s.execute_btn.model.set({wait:!0,wait_text:"Preparing...",percentage:100*(t.index+1)/s.steps.length}),Galaxy.emit.debug("tool-form-composite::initialize()",t.index+" : Workflow step state ready.",t),setTimeout(function(){o.resolve()},0)})},_refreshStep:function(e){var t=this,s=this.forms[e.index];s?(_.each(t.parms[e.index],function(e,i){if(e.step_linked||e.wp_linked){var n=s.field_list[s.data.match(i)];if(n){var a=void 0;if(e.step_linked)a={values:[]},_.each(e.step_linked,function(e){t._isDataStep(e)&&(value=t.forms[e.index].data.create().input,value&&_.each(value.values,function(e){a.values.push(e)}))}),!e.multiple&&a.values.length>0&&(a={values:[a.values[0]]});else if(e.wp_linked){a=e.value;for(var o=/\$\{(.+?)\}/g;match=o.exec(e.value);){var r=t.wp_form.field_list[t.wp_form.data.match(match[1])],l=r&&r.value();l&&(a=a.replace(new RegExp("\\"+match[0],"g"),l))}}void 0!==a&&n.value(a)}}}),s.trigger("change")):e.needs_refresh=!0},_refreshHistory:function(){var e=this,t=parent.Galaxy&&parent.Galaxy.currHistoryPanel&&parent.Galaxy.currHistoryPanel.model;this._refresh_history&&clearTimeout(this._refresh_history),t&&t.refresh().success(function(){0===t.numOfUnfinishedShownContents()&&(e._refresh_history=setTimeout(function(){e._refreshHistory()},t.UPDATE_DELAY))})},_execute:function(){var e=this;this.show_progress=!0,this._enabled(!1),this.deferred.execute(function(t){setTimeout(function(){t.resolve(),e._submit()},0)})},_submit:function(){var t=this,s=this.history_form.data.create(),i={new_history_name:s["new_history|name"]?s["new_history|name"]:null,history_id:s["new_history|name"]?null:this.model.get("history_id"),replacement_params:this.wp_form?this.wp_form.data.create():{},parameters:{},parameters_normalized:!0,batch:!0},n=!0;for(var a in this.forms){var o=this.forms[a],l=o.data.create(),p=t.steps[a],u=p.step_index;o.trigger("reset");for(var d in l){var h=l[d],c=o.data.match(d),f=(o.field_list[c],o.input_list[c]);if(!f.step_linked){if(!(n=this._isDataStep(p)?h&&h.values&&h.values.length>0:f.optional||f.is_workflow&&""!==h||!f.is_workflow&&null!==h)){o.highlight(c);break}i.parameters[u]=i.parameters[u]||{},i.parameters[u][d]=l[d]}}if(!n)break}n?(Galaxy.emit.debug("tool-form-composite::submit()","Validation complete.",i),e.request({type:"POST",url:Galaxy.root+"api/workflows/"+this.model.id+"/invocations",data:i,success:function(e){if(Galaxy.emit.debug("tool-form-composite::submit","Submission successful.",e),t.$el.children().hide(),t.$el.append(t._templateSuccess(e)),$.isArray(e)&&e.length>0){t.$el.append($("
                              ",{id:"webhook-view"}));new r.WebhookView({urlRoot:Galaxy.root+"api/webhooks/workflow"})}t._refreshHistory()},error:function(e){Galaxy.emit.debug("tool-form-composite::submit","Submission failed.",e);var s=!1;if(e&&e.err_data)for(var n in t.forms){var a=t.forms[n],o=e.err_data[a.model.get("step_index")];if(o){var r=a.data.matchResponse(o);for(var l in r){a.highlight(l,r[l]),s=!0;break}}}s||t.modal.show({title:"Workflow submission failed",body:t._templateError(i,e&&e.err_msg),buttons:{Close:function(){t.modal.hide()}}})},complete:function(){t._enabled(!0)}})):(t._enabled(!0),Galaxy.emit.debug("tool-form-composite::submit()","Validation failed.",i))},_append:function(e,t){e.append("

                              ").append(t)},_enabled:function(e){this.execute_btn.model.set({wait:!e,wait_text:"Sending...",percentage:-1}),this.wp_form&&this.wp_form.portlet[e?"enable":"disable"](),this.history_form&&this.history_form.portlet[e?"enable":"disable"](),_.each(this.forms,function(t){t&&t.portlet[e?"enable":"disable"]()})},_isDataStep:function(e){lst=$.isArray(e)?e:[e];for(var t=0;t0?$("

                              ").addClass("donemessagelarge").append($("

                              ").html("Successfully invoked workflow "+e.sanitize(this.model.get("name"))+""+(t.length>1?" "+t.length+" times":"")+".")).append($("

                              ").append("").text("You can check the status of queued jobs and view the resulting data by refreshing the History pane. When the job has been run the status will change from 'running' to 'finished' if completed successfully or 'error' if problems were encountered.")):this._templateError(t,"Invalid success response. No invocations found.")},_templateError:function(e,t){return $("

                              ").addClass("errormessagelarge").append($("

                              ").text("The server could not complete the request. Please contact the Galaxy Team if this error persists. "+(JSON.stringify(t)||""))).append($("

                              ").text(JSON.stringify(e,null,4)))}})}});
                              +//# sourceMappingURL=../../../maps/mvc/tool/tool-form-composite.js.map
                              diff --git a/static/scripts/mvc/tool/tool-form.js b/static/scripts/mvc/tool/tool-form.js
                              index f512f7a5f74..8c75096b03a 100644
                              --- a/static/scripts/mvc/tool/tool-form.js
                              +++ b/static/scripts/mvc/tool/tool-form.js
                              @@ -1,2 +1,2 @@
                              -define(["utils/utils","mvc/ui/ui-misc","mvc/ui/ui-modal","mvc/tool/tool-form-base","mvc/webhooks"],function(a,b,c,d,e){var f=Backbone.View.extend({initialize:function(e){var f=this;this.modal=parent.Galaxy.modal||new c.View,this.form=new d(a.merge({listen_to_history:!0,always_refresh:!1,customize:function(a){var c=a.model.attributes;c.buttons={execute:execute_btn=new b.Button({icon:"fa-check",tooltip:"Execute: "+c.name+" ("+c.version+")",title:"Execute",cls:"ui-button btn btn-primary",floating:"clear",onclick:function(){execute_btn.wait(),a.portlet.disable(),f.submit(c,function(){execute_btn.unwait(),a.portlet.enable()})}})},c.job_id&&c.job_remap&&c.inputs.push({label:"Resume dependencies from this job",name:"rerun_remap_job_id",type:"select",display:"radio",ignore:"__ignore__",value:"__ignore__",options:[["Yes",c.job_id],["No","__ignore__"]],help:"The previous run of this tool failed and other tools were waiting for it to finish successfully. Use this option to resume those tools using the new output(s) of this tool run."})},postchange:function(b,c){var d={tool_id:c.model.get("id"),tool_version:c.model.get("version"),inputs:$.extend(!0,{},c.data.create())};c.wait(!0),Galaxy.emit.debug("tool-form::postchange()","Sending current state.",d),a.request({type:"POST",url:Galaxy.root+"api/tools/"+c.model.get("id")+"/build",data:d,success:function(a){c.update(a),c.wait(!1),Galaxy.emit.debug("tool-form::postchange()","Received new model.",a),b.resolve()},error:function(a){Galaxy.emit.debug("tool-form::postchange()","Refresh request failed.",a),b.reject()}})}},e)),this.deferred=this.form.deferred,this.setElement("
                              "),this.$el.append(this.form.$el)},submit:function(b,c){var d=this,f={tool_id:b.id,tool_version:b.version,inputs:this.form.data.create()};if(this.form.trigger("reset"),!d.validate(f))return Galaxy.emit.debug("tool-form::submit()","Submission canceled. Validation failed."),void(c&&c());if(b.action!==Galaxy.root+"tool_runner/index"){var g=$("
                              ").attr({action:b.action,method:b.method,enctype:b.enctype});return _.each(f.inputs,function(a,b){g.append($("").attr({name:b,value:a}))}),g.hide().appendTo("body").submit().remove(),void(c&&c())}Galaxy.emit.debug("tool-form::submit()","Validation complete.",f),a.request({type:"POST",url:Galaxy.root+"api/tools",data:f,success:function(a){if(c&&c(),d.$el.children().hide(),d.$el.append(d._templateSuccess(a)),a.jobs&&a.jobs.length>0){d.$el.append($("
                              ",{id:"webhook-view"}));{new e.WebhookView({urlRoot:Galaxy.root+"api/webhooks/tool"})}}parent.Galaxy&&parent.Galaxy.currHistoryPanel&&parent.Galaxy.currHistoryPanel.refreshContents()},error:function(a){c&&c(),Galaxy.emit.debug("tool-form::submit","Submission failed.",a);var b=!1;if(a&&a.err_data){var e=d.form.data.matchResponse(a.err_data);for(var g in e){d.form.highlight(g,e[g]),b=!0;break}}b||d.modal.show({title:"Job submission failed",body:d._templateError(f,a&&a.err_msg),buttons:{Close:function(){d.modal.hide()}}})}})},validate:function(a){var b=a.inputs,c=-1,d=null;for(var e in b){var f=b[e],g=this.form.data.match(e),h=this.form.field_list[g],i=this.form.input_list[g];if(g&&i&&h){if(!i.optional&&null==f)return this.form.highlight(g),!1;if(f&&f.batch){var j=f.values.length,k=j>0&&f.values[0]&&f.values[0].src;if(k)if(null===d)d=k;else if(d!==k)return this.form.highlight(g,"Please select either dataset or dataset list fields for all batch mode fields."),!1;if(-1===c)c=j;else if(c!==j)return this.form.highlight(g,"Please make sure that you select the same number of inputs for all batch mode fields. This field contains "+j+" selection(s) while a previous field contains "+c+"."),!1}}else Galaxy.emit.debug("tool-form::validate()","Retrieving input objects failed.")}return!0},_templateSuccess:function(a){if(a.jobs&&a.jobs.length>0){var b=a.jobs.length,c=1==b?"1 job has":b+" jobs have",d=$("
                              ").addClass("donemessagelarge").append($("

                              ").text(c+" been successfully added to the queue - resulting in the following datasets:"));return _.each(a.outputs,function(a){d.append($("

                              ").addClass("messagerow").append($("").text(a.hid+": "+a.name)))}),d.append($("

                              ").append("").text("You can check the status of queued jobs and view the resulting data by refreshing the History pane. When the job has been run the status will change from 'running' to 'finished' if completed successfully or 'error' if problems were encountered.")),d}return this._templateError(a,"Invalid success response. No jobs found.")},_templateError:function(a,b){return $("

                              ").addClass("errormessagelarge").append($("

                              ").text("The server could not complete the request. Please contact the Galaxy Team if this error persists. "+(b||""))).append($("

                              ").text(JSON.stringify(a,null,4)))}});return{View:f}});
                              -//# sourceMappingURL=../../../maps/mvc/tool/tool-form.js.map
                              \ No newline at end of file
                              +define(["utils/utils","mvc/ui/ui-misc","mvc/ui/ui-modal","mvc/tool/tool-form-base","mvc/webhooks"],function(e,t,o,i,a){return{View:Backbone.View.extend({initialize:function(a){var s=this;this.modal=parent.Galaxy.modal||new o.View,this.form=new i(e.merge({listen_to_history:!0,always_refresh:!1,customize:function(e){var o=e.model.attributes;o.buttons={execute:execute_btn=new t.Button({icon:"fa-check",tooltip:"Execute: "+o.name+" ("+o.version+")",title:"Execute",cls:"ui-button btn btn-primary",floating:"clear",onclick:function(){execute_btn.wait(),e.portlet.disable(),s.submit(o,function(){execute_btn.unwait(),e.portlet.enable()})}})},o.job_id&&o.job_remap&&o.inputs.push({label:"Resume dependencies from this job",name:"rerun_remap_job_id",type:"select",display:"radio",ignore:"__ignore__",value:"__ignore__",options:[["Yes",o.job_id],["No","__ignore__"]],help:"The previous run of this tool failed and other tools were waiting for it to finish successfully. Use this option to resume those tools using the new output(s) of this tool run."})},postchange:function(t,o){var i={tool_id:o.model.get("id"),tool_version:o.model.get("version"),inputs:$.extend(!0,{},o.data.create())};o.wait(!0),Galaxy.emit.debug("tool-form::postchange()","Sending current state.",i),e.request({type:"POST",url:Galaxy.root+"api/tools/"+o.model.get("id")+"/build",data:i,success:function(e){o.update(e),o.wait(!1),Galaxy.emit.debug("tool-form::postchange()","Received new model.",e),t.resolve()},error:function(e){Galaxy.emit.debug("tool-form::postchange()","Refresh request failed.",e),t.reject()}})}},a)),this.deferred=this.form.deferred,this.setElement("
                              "),this.$el.append(this.form.$el)},submit:function(t,o){var i=this,s={tool_id:t.id,tool_version:t.version,inputs:this.form.data.create()};if(this.form.trigger("reset"),!i.validate(s))return Galaxy.emit.debug("tool-form::submit()","Submission canceled. Validation failed."),void(o&&o());if(t.action!==Galaxy.root+"tool_runner/index"){var r=$("").attr({action:t.action,method:t.method,enctype:t.enctype});return _.each(s.inputs,function(e,t){r.append($("").attr({name:t,value:e}))}),r.hide().appendTo("body").submit().remove(),void(o&&o())}Galaxy.emit.debug("tool-form::submit()","Validation complete.",s),e.request({type:"POST",url:Galaxy.root+"api/tools",data:s,success:function(e){if(o&&o(),i.$el.children().hide(),i.$el.append(i._templateSuccess(e)),e.jobs&&e.jobs.length>0){i.$el.append($("
                              ",{id:"webhook-view"}));new a.WebhookView({urlRoot:Galaxy.root+"api/webhooks/tool"})}parent.Galaxy&&parent.Galaxy.currHistoryPanel&&parent.Galaxy.currHistoryPanel.refreshContents()},error:function(e){o&&o(),Galaxy.emit.debug("tool-form::submit","Submission failed.",e);var t=!1;if(e&&e.err_data){var a=i.form.data.matchResponse(e.err_data);for(var r in a){i.form.highlight(r,a[r]),t=!0;break}}t||i.modal.show({title:"Job submission failed",body:i._templateError(s,e&&e.err_msg),buttons:{Close:function(){i.modal.hide()}}})}})},validate:function(e){var t=e.inputs,o=-1,i=null;for(var a in t){var s=t[a],r=this.form.data.match(a),n=this.form.field_list[r],l=this.form.input_list[r];if(r&&l&&n){if(!l.optional&&null==s)return this.form.highlight(r),!1;if(s&&s.batch){var u=s.values.length,d=u>0&&s.values[0]&&s.values[0].src;if(d)if(null===i)i=d;else if(i!==d)return this.form.highlight(r,"Please select either dataset or dataset list fields for all batch mode fields."),!1;if(-1===o)o=u;else if(o!==u)return this.form.highlight(r,"Please make sure that you select the same number of inputs for all batch mode fields. This field contains "+u+" selection(s) while a previous field contains "+o+"."),!1}}else Galaxy.emit.debug("tool-form::validate()","Retrieving input objects failed.")}return!0},_templateSuccess:function(e){if(e.jobs&&e.jobs.length>0){var t=e.jobs.length,o=1==t?"1 job has":t+" jobs have",i=$("
                              ").addClass("donemessagelarge").append($("

                              ").text(o+" been successfully added to the queue - resulting in the following datasets:"));return _.each(e.outputs,function(e){i.append($("

                              ").addClass("messagerow").append($("").text(e.hid+": "+e.name)))}),i.append($("

                              ").append("").text("You can check the status of queued jobs and view the resulting data by refreshing the History pane. When the job has been run the status will change from 'running' to 'finished' if completed successfully or 'error' if problems were encountered.")),i}return this._templateError(e,"Invalid success response. No jobs found.")},_templateError:function(e,t){return $("

                              ").addClass("errormessagelarge").append($("

                              ").text("The server could not complete the request. Please contact the Galaxy Team if this error persists. "+(t||""))).append($("

                              ").text(JSON.stringify(e,null,4)))}})}});
                              +//# sourceMappingURL=../../../maps/mvc/tool/tool-form.js.map
                              diff --git a/static/scripts/mvc/tool/tool-template.js b/static/scripts/mvc/tool/tool-template.js
                              deleted file mode 100644
                              index ab70fc3f79f..00000000000
                              --- a/static/scripts/mvc/tool/tool-template.js
                              +++ /dev/null
                              @@ -1,2 +0,0 @@
                              -define([],function(){return{error:function(a){return $("
                              ").append($("

                              ").text("The server could not complete the request. Please contact the Galaxy Team if this error persists.")).append($("").attr({rows:h,cols:f}).text(c.trim(l)):c("").attr({value:c.trim(l),size:f}),a.attr("id","renaming-active"),a.blur(function(){c(this).remove(),k.show(),j&&j(a)}),a.keyup(function(f){if(27===f.keyCode)c(this).trigger("blur");else if(13===f.keyCode){var g={};g[e]=c(this).val(),c(this).trigger("blur"),c.ajax({url:d,data:g,error:function(){alert("Text editing for elt "+b+" failed")},success:function(b){""!==b?k.text(b):k.html("None"),j&&j(a)}})}}),i&&i(a),k.hide(),a.insertAfter(k),a.focus(),a.select()}})}var c=a;return b}); -//# sourceMappingURL=../../maps/utils/async-save-text.js.map \ No newline at end of file +define(["jquery"],function(t){"use_strict";function e(t,e,r,n,a,u,o,c,s){void 0===a&&(a=30),void 0===o&&(o=4),i("#"+t).click(function(){if(!(i("#renaming-active").length>0)){var t,f=i("#"+e),l=f.text();t=u?i("").attr({rows:o,cols:a}).text(i.trim(l)):i("").attr({value:i.trim(l),size:a}),t.attr("id","renaming-active"),t.blur(function(){i(this).remove(),f.show(),s&&s(t)}),t.keyup(function(a){if(27===a.keyCode)i(this).trigger("blur");else if(13===a.keyCode){var u={};u[n]=i(this).val(),i(this).trigger("blur"),i.ajax({url:r,data:u,error:function(){alert("Text editing for elt "+e+" failed")},success:function(e){""!==e?f.text(e):f.html("None"),s&&s(t)}})}}),c&&c(t),f.hide(),t.insertAfter(f),t.focus(),t.select()}})}var i=t;return e}); +//# sourceMappingURL=../../maps/utils/async-save-text.js.map diff --git a/static/scripts/utils/config.js b/static/scripts/utils/config.js index f678085c2f9..18016802534 100644 --- a/static/scripts/utils/config.js +++ b/static/scripts/utils/config.js @@ -1,2 +1,2 @@ -define(["libs/underscore","viz/trackster/util","utils/config"],function(a,b){var c=Backbone.Model.extend({initialize:function(d){var e=this.get("key");this.set("id",e);var f=a.find(c.known_settings_defaults,function(a){return a.key===e});f&&this.set(a.extend({},f,d)),void 0===this.get("value")&&void 0!==this.get("default_value")&&(this.set_value(this.get("default_value")),this.get("value")||"color"!==this.get("type")||this.set("value",b.get_random_color()))},set_value:function(a,b){var c=this.get("type");"float"===c?a=parseFloat(a):"int"===c&&(a=parseInt(a,10)),this.set({value:a},b)}},{known_settings_defaults:[{key:"name",label:"Name",type:"text",default_value:""},{key:"color",label:"Color",type:"color",default_value:null},{key:"min_value",label:"Min Value",type:"float",default_value:null},{key:"max_value",label:"Max Value",type:"float",default_value:null},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:32,hidden:!0},{key:"pos_color",label:"Positive Color",type:"color",default_value:"#FF8C00"},{key:"neg_color",label:"Negative Color",type:"color",default_value:"#4169E1"},{key:"block_color",label:"Block color",type:"color",default_value:null},{key:"label_color",label:"Label color",type:"color",default_value:"black"},{key:"show_insertions",label:"Show insertions",type:"bool",default_value:!1},{key:"show_counts",label:"Show summary counts",type:"bool",default_value:!0},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"reverse_strand_color",label:"Antisense strand color",type:"color",default_value:null},{key:"show_differences",label:"Show differences only",type:"bool",default_value:!0},{key:"mode",type:"string",default_value:this.mode,hidden:!0}]}),d=Backbone.Collection.extend({model:c,to_key_value_dict:function(){var a={};return this.each(function(b){a[b.get("key")]=b.get("value")}),a},get_value:function(a){var b=this.get(a);return b?b.get("value"):void 0},set_value:function(a,b,c){var d=this.get(a);return d?d.set_value(b,c):void 0},set_default_value:function(a,b){var c=this.get(a);return c?c.set("default_value",b):void 0}},{from_models_and_saved_values:function(b,c){return c&&(b=a.map(b,function(b){return a.extend({},b,{value:c[b.key]})})),new d(b)}}),e=Backbone.View.extend({className:"config-settings-view",render:function(){var c=this.$el;return this.collection.each(function(d,e){if(!d.get("hidden")){var f="param_"+e,g=d.get("type"),h=d.get("value"),i=$("

                              ").appendTo(c);if(i.append($("