@hpcc-js/dgrid 2.34.1 → 2.34.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.es6.js CHANGED
@@ -2,8 +2,8 @@ import { publish, HTMLWidget, format, Palette, select, PropertyExt } from '@hpcc
2
2
  import { hashSum } from '@hpcc-js/util';
3
3
 
4
4
  var PKG_NAME = "@hpcc-js/dgrid";
5
- var PKG_VERSION = "2.34.1";
6
- var BUILD_VERSION = "2.108.2";
5
+ var PKG_VERSION = "2.34.2";
6
+ var BUILD_VERSION = "2.108.4";
7
7
 
8
8
  /******************************************************************************
9
9
  Copyright (c) Microsoft Corporation.
@@ -7228,1349 +7228,1839 @@ function requireDist () {
7228
7228
 
7229
7229
  /***/ }),
7230
7230
 
7231
- /***/ 2219:
7232
- /*!*****************************************************!*\
7233
- !*** ../../node_modules/dojo-dstore/QueryMethod.js ***!
7234
- \*****************************************************/
7235
- /***/ ((module, exports, __webpack_require__) => {
7231
+ /***/ 2093:
7232
+ /*!******************************************************************!*\
7233
+ !*** ../../../../../../../tmp/tmp-5915xSdKDAV2AL3m/dojo/dojo.js ***!
7234
+ \******************************************************************/
7235
+ /***/ ((module) => {
7236
7236
 
7237
- __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
7238
- /*=====
7239
- var __QueryMethodArgs = {
7240
- // type: String
7241
- // The type of the query. This identifies the query's type in the query log
7242
- // and the name of the corresponding query engine method.
7243
- // normalizeArguments: Function?
7244
- // A function that normalizes arguments for consumption by a query engine
7245
- // applyQuery: Function?
7246
- // A function that takes the query's new subcollection and the query's log entry
7247
- // and applies it to the new subcollection. This is useful for collections that need
7248
- // to both declare and implement new query methods.
7249
- // querierFactory: Function?
7250
- // A factory function that provides a default querier implementation to use when
7251
- // a collection does not define its own querier factory method for this query type.
7252
- };
7253
- =====*/
7254
- return function QueryMethod(/*__QueryMethodArgs*/ kwArgs) {
7255
- // summary:
7256
- // The constructor for a dstore collection query method
7257
- // description:
7258
- // This is the constructor for a collection query method. It encapsulates the following:
7259
- // * Creating a new subcollection for the query results
7260
- // * Logging the query in the collection's `queryLog`
7261
- // * Normalizing query arguments
7262
- // * Applying the query engine
7263
- // kwArgs:
7264
- // The properties that define the query method
7265
- // returns: Function
7266
- // Returns a function that takes query arguments and returns a new collection with
7267
- // the query associated with it.
7237
+ module.exports = function(userConfig, defaultConfig, global, window) { this.loaderVersion = "1.17.3"; (function(
7238
+ userConfig,
7239
+ defaultConfig
7240
+ ){
7241
+ // summary:
7242
+ // This is the "source loader" and is the entry point for Dojo during development. You may also load Dojo with
7243
+ // any AMD-compliant loader via the package main module dojo/main.
7244
+ // description:
7245
+ // This is the "source loader" for Dojo. It provides an AMD-compliant loader that can be configured
7246
+ // to operate in either synchronous or asynchronous modes. After the loader is defined, dojo is loaded
7247
+ // IAW the package main module dojo/main. In the event you wish to use a foreign loader, you may load dojo as a package
7248
+ // via the package main module dojo/main and this loader is not required; see dojo/package.json for details.
7249
+ //
7250
+ // In order to keep compatibility with the v1.x line, this loader includes additional machinery that enables
7251
+ // the dojo.provide, dojo.require et al API. This machinery is loaded by default, but may be dynamically removed
7252
+ // via the has.js API and statically removed via the build system.
7253
+ //
7254
+ // This loader includes sniffing machinery to determine the environment; the following environments are supported:
7255
+ //
7256
+ // - browser
7257
+ // - node.js
7258
+ // - rhino
7259
+ //
7260
+ // This is the so-called "source loader". As such, it includes many optional features that may be discarded by
7261
+ // building a customized version with the build system.
7268
7262
 
7269
- var type = kwArgs.type,
7270
- normalizeArguments = kwArgs.normalizeArguments,
7271
- applyQuery = kwArgs.applyQuery,
7272
- defaultQuerierFactory = kwArgs.querierFactory;
7263
+ // Design and Implementation Notes
7264
+ //
7265
+ // This is a dojo-specific adaption of bdLoad, donated to the dojo foundation by Altoviso LLC.
7266
+ //
7267
+ // This function defines an AMD-compliant (http://wiki.commonjs.org/wiki/Modules/AsynchronousDefinition)
7268
+ // loader that can be configured to operate in either synchronous or asynchronous modes.
7269
+ //
7270
+ // Since this machinery implements a loader, it does not have the luxury of using a load system and/or
7271
+ // leveraging a utility library. This results in an unpleasantly long file; here is a road map of the contents:
7272
+ //
7273
+ // 1. Small library for use implementing the loader.
7274
+ // 2. Define the has.js API; this is used throughout the loader to bracket features.
7275
+ // 3. Define the node.js and rhino sniffs and sniff.
7276
+ // 4. Define the loader's data.
7277
+ // 5. Define the configuration machinery.
7278
+ // 6. Define the script element sniffing machinery and sniff for configuration data.
7279
+ // 7. Configure the loader IAW the provided user, default, and sniffing data.
7280
+ // 8. Define the global require function.
7281
+ // 9. Define the module resolution machinery.
7282
+ // 10. Define the module and plugin module definition machinery
7283
+ // 11. Define the script injection machinery.
7284
+ // 12. Define the window load detection.
7285
+ // 13. Define the logging API.
7286
+ // 14. Define the tracing API.
7287
+ // 16. Define the AMD define function.
7288
+ // 17. Define the dojo v1.x provide/require machinery--so called "legacy" modes.
7289
+ // 18. Publish global variables.
7290
+ //
7291
+ // Language and Acronyms and Idioms
7292
+ //
7293
+ // moduleId: a CJS module identifier, (used for public APIs)
7294
+ // mid: moduleId (used internally)
7295
+ // packageId: a package identifier (used for public APIs)
7296
+ // pid: packageId (used internally); the implied system or default package has pid===""
7297
+ // pack: package is used internally to reference a package object (since javascript has reserved words including "package")
7298
+ // prid: plugin resource identifier
7299
+ // The integer constant 1 is used in place of true and 0 in place of false.
7300
+ //
7301
+ // The "foreign-loader" has condition is defined if another loader is being used (e.g. webpack) and this code is only
7302
+ // needed for resolving module identifiers based on the config. In this case, only the functions require.toUrl and
7303
+ // require.toAbsMid are supported. The require and define functions are not supported.
7273
7304
 
7274
- return function () {
7275
- // summary:
7276
- // A query method whose arguments are determined by the query type
7277
- // returns: dstore/Collection
7278
- // A collection representing the query results
7305
+ // define global
7306
+ var globalObject = (function(){
7307
+ if (typeof global !== 'undefined' && typeof global !== 'function') {
7308
+ // global spec defines a reference to the global object called 'global'
7309
+ // https://github.com/tc39/proposal-global
7310
+ // `global` is also defined in NodeJS
7311
+ return global;
7312
+ }
7313
+ else if (typeof window !== 'undefined') {
7314
+ // window is defined in browsers
7315
+ return window;
7316
+ }
7317
+ else if (typeof self !== 'undefined') {
7318
+ // self is defined in WebWorkers
7319
+ return self;
7320
+ }
7321
+ return this;
7322
+ })();
7279
7323
 
7280
- var originalArguments = Array.prototype.slice.call(arguments),
7281
- normalizedArguments = normalizeArguments
7282
- ? normalizeArguments.apply(this, originalArguments)
7283
- : originalArguments,
7284
- logEntry = {
7285
- type: type,
7286
- arguments: originalArguments,
7287
- normalizedArguments: normalizedArguments
7288
- },
7289
- querierFactory = this._getQuerierFactory(type) || defaultQuerierFactory;
7324
+ // define a minimal library to help build the loader
7325
+ var noop = function(){
7326
+ },
7290
7327
 
7291
- if (querierFactory) {
7292
- // Call the query factory in store context to support things like
7293
- // mapping a filter query's string argument to a custom filter method on the collection
7294
- logEntry.querier = querierFactory.apply(this, normalizedArguments);
7328
+ toString = {}.toString,
7329
+
7330
+ isFunction = function(it){
7331
+ return toString.call(it) == "[object Function]";
7332
+ },
7333
+
7334
+ isArray = function(it){
7335
+ return toString.call(it) == "[object Array]";
7336
+ },
7337
+
7338
+ forEach = function(vector, callback){
7339
+ if(vector){
7340
+ for(var i = 0; i < vector.length;){
7341
+ callback(vector[i++]);
7342
+ }
7295
7343
  }
7344
+ },
7296
7345
 
7297
- var newCollection = this._createSubCollection({
7298
- queryLog: this.queryLog.concat(logEntry)
7299
- });
7346
+ mix = function(dest, src){
7347
+ for(var p in src){
7348
+ dest[p] = src[p];
7349
+ }
7350
+ return dest;
7351
+ },
7300
7352
 
7301
- return applyQuery ? applyQuery.call(this, newCollection, logEntry) : newCollection;
7302
- };
7303
- };
7304
- }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
7305
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
7353
+ makeError = function(error, info){
7354
+ return mix(new Error(error), {src:"dojoLoader", info:info});
7355
+ },
7306
7356
 
7357
+ uidSeed = 1,
7307
7358
 
7308
- /***/ }),
7359
+ uid = function(){
7360
+ // Returns a unique identifier (within the lifetime of the document) of the form /_d+/.
7361
+ return "_" + uidSeed++;
7362
+ },
7309
7363
 
7310
- /***/ 2236:
7311
- /*!**********************************************************!*\
7312
- !*** ../../node_modules/dojo/promise/instrumentation.js ***!
7313
- \**********************************************************/
7314
- /***/ ((module, exports, __webpack_require__) => {
7364
+ // FIXME: how to doc window.require() api
7315
7365
 
7316
- __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
7317
- __webpack_require__(/*! ./tracer */ 3185),
7318
- __webpack_require__(/*! ../has */ 6356),
7319
- __webpack_require__(/*! ../_base/lang */ 6323),
7320
- __webpack_require__(/*! ../_base/array */ 6974)
7321
- ], __WEBPACK_AMD_DEFINE_RESULT__ = (function(tracer, has, lang, arrayUtil){
7322
- has.add("config-useDeferredInstrumentation", "report-unhandled-rejections");
7366
+ // this will be the global require function; define it immediately so we can start hanging things off of it
7367
+ req = function(
7368
+ config, //(object, optional) hash of configuration properties
7369
+ dependencies, //(array of commonjs.moduleId, optional) list of modules to be loaded before applying callback
7370
+ callback //(function, optional) lambda expression to apply to module values implied by dependencies
7371
+ ){
7372
+ return contextRequire(config, dependencies, callback, 0, req);
7373
+ },
7323
7374
 
7324
- function logError(error, rejection, deferred){
7325
- if(error && error.log === false){
7326
- return;
7327
- }
7328
- var stack = "";
7329
- if(error && error.stack){
7330
- stack += error.stack;
7331
- }
7332
- if(rejection && rejection.stack){
7333
- stack += "\n ----------------------------------------\n rejected" + rejection.stack.split("\n").slice(1).join("\n").replace(/^\s+/, " ");
7334
- }
7335
- if(deferred && deferred.stack){
7336
- stack += "\n ----------------------------------------\n" + deferred.stack;
7337
- }
7338
- console.error(error, stack);
7375
+ // the loader uses the has.js API to control feature inclusion/exclusion; define then use throughout
7376
+ global = globalObject,
7377
+
7378
+ doc = global.document,
7379
+
7380
+ element = doc && doc.createElement("DiV"),
7381
+
7382
+ has = req.has = function(name){
7383
+ return isFunction(hasCache[name]) ? (hasCache[name] = hasCache[name](global, doc, element)) : hasCache[name];
7384
+ },
7385
+
7386
+ hasCache = has.cache = defaultConfig.hasCache;
7387
+
7388
+ if (isFunction(userConfig)) {
7389
+ userConfig = userConfig(globalObject);
7339
7390
  }
7340
7391
 
7341
- function reportRejections(error, handled, rejection, deferred){
7342
- if(!handled){
7343
- logError(error, rejection, deferred);
7344
- }
7392
+ has.add = function(name, test, now, force){
7393
+ (hasCache[name]===undefined || force) && (hasCache[name] = test);
7394
+ return now && has(name);
7395
+ };
7396
+
7397
+ // userConfig has tests override defaultConfig has tests; do this after the environment detection because
7398
+ // the environment detection usually sets some has feature values in the hasCache.
7399
+ for(var p in userConfig.has){
7400
+ has.add(p, userConfig.has[p], 0, 1);
7401
+ }
7402
+ {
7403
+ req.async = 1;
7345
7404
  }
7346
7405
 
7347
- var errors = [];
7348
- var activeTimeout = false;
7349
- var unhandledWait = 1000;
7350
- function trackUnhandledRejections(error, handled, rejection, deferred){
7351
- // try to find the existing tracking object
7352
- if(!arrayUtil.some(errors, function(obj){
7353
- if(obj.error === error){
7354
- // found the tracking object for this error
7355
- if(handled){
7356
- // if handled, update the state
7357
- obj.handled = true;
7358
- }
7359
- return true;
7360
- }
7361
- })){
7362
- // no tracking object has been setup, create one
7363
- errors.push({
7364
- error: error,
7365
- rejection: rejection,
7366
- handled: handled,
7367
- deferred: deferred,
7368
- timestamp: new Date().getTime()
7369
- });
7370
- }
7406
+ //
7407
+ // loader eval
7408
+ //
7409
+ var eval_ = // noop eval if there are csp restrictions
7410
+ function(){} ;
7371
7411
 
7372
- if(!activeTimeout){
7373
- activeTimeout = setTimeout(logRejected, unhandledWait);
7374
- }
7375
- }
7412
+ req.eval =
7413
+ function(text, hint){
7414
+ return eval_();
7415
+ };
7376
7416
 
7377
- function logRejected(){
7378
- var now = new Date().getTime();
7379
- var reportBefore = now - unhandledWait;
7380
- errors = arrayUtil.filter(errors, function(obj){
7381
- // only report the error if we have waited long enough and
7382
- // it hasn't been handled
7383
- if(obj.timestamp < reportBefore){
7384
- if(!obj.handled){
7385
- logError(obj.error, obj.rejection, obj.deferred);
7417
+ //
7418
+ // loader micro events API
7419
+ //
7420
+ var listenerQueues = {},
7421
+ error = "error";
7422
+ req.signal = function(type, args){
7423
+ var queue = listenerQueues[type];
7424
+ // notice we run a copy of the queue; this allows listeners to add/remove
7425
+ // other listeners without affecting this particular signal
7426
+ forEach(queue && queue.slice(0), function(listener){
7427
+ listener.apply(null, isArray(args) ? args : [args]);
7428
+ });
7429
+ };
7430
+ var on = req.on = function(type, listener){
7431
+ // notice a queue is not created until a client actually connects
7432
+ var queue = listenerQueues[type] || (listenerQueues[type] = []);
7433
+ queue.push(listener);
7434
+ return {
7435
+ remove:function(){
7436
+ for(var i = 0; i<queue.length; i++){
7437
+ if(queue[i]===listener){
7438
+ queue.splice(i, 1);
7439
+ return;
7440
+ }
7441
+ }
7386
7442
  }
7387
- return false;
7388
- }
7389
- return true;
7390
- });
7443
+ };
7444
+ };
7391
7445
 
7392
- if(errors.length){
7393
- activeTimeout = setTimeout(logRejected, errors[0].timestamp + unhandledWait - now);
7394
- }else {
7395
- activeTimeout = false;
7396
- }
7397
- }
7446
+ // configuration machinery; with an optimized/built defaultConfig, all configuration machinery can be discarded
7447
+ // lexical variables hold key loader data structures to help with minification; these may be completely,
7448
+ // one-time initialized by defaultConfig for optimized/built versions
7449
+ var aliases
7450
+ // a vector of pairs of [regexs or string, replacement] => (alias, actual)
7451
+ = [],
7398
7452
 
7399
- return function(Deferred){
7400
- // summary:
7401
- // Initialize instrumentation for the Deferred class.
7402
- // description:
7403
- // Initialize instrumentation for the Deferred class.
7404
- // Done automatically by `dojo/Deferred` if the
7405
- // `deferredInstrumentation` and `useDeferredInstrumentation`
7406
- // config options are set.
7407
- //
7408
- // Sets up `dojo/promise/tracer` to log to the console.
7409
- //
7410
- // Sets up instrumentation of rejected deferreds so unhandled
7411
- // errors are logged to the console.
7453
+ pathsMapProg
7454
+ // list of (from-path, to-path, regex, length) derived from paths;
7455
+ // a "program" to apply paths; see computeMapProg
7456
+ = [],
7412
7457
 
7413
- var usage = has("config-useDeferredInstrumentation");
7414
- if(usage){
7415
- tracer.on("resolved", lang.hitch(console, "log", "resolved"));
7416
- tracer.on("rejected", lang.hitch(console, "log", "rejected"));
7417
- tracer.on("progress", lang.hitch(console, "log", "progress"));
7458
+ packs
7459
+ // a map from packageId to package configuration object; see fixupPackageInfo
7460
+ = {};
7418
7461
 
7419
- var args = [];
7420
- if(typeof usage === "string"){
7421
- args = usage.split(",");
7422
- usage = args.shift();
7423
- }
7424
- if(usage === "report-rejections"){
7425
- Deferred.instrumentRejected = reportRejections;
7426
- }else if(usage === "report-unhandled-rejections" || usage === true || usage === 1){
7427
- Deferred.instrumentRejected = trackUnhandledRejections;
7428
- unhandledWait = parseInt(args[0], 10) || unhandledWait;
7429
- }else {
7430
- throw new Error("Unsupported instrumentation usage <" + usage + ">");
7431
- }
7432
- }
7433
- };
7434
- }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
7435
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
7462
+ req.map
7463
+ // AMD map config variable; dojo/_base/kernel needs req.map to figure out the scope map
7464
+ = {};
7436
7465
 
7466
+ var mapProgs
7467
+ // vector of quads as described by computeMapProg; map-key is AMD map key, map-value is AMD map value
7468
+ = [],
7437
7469
 
7438
- /***/ }),
7470
+ modules
7471
+ // A hash:(mid) --> (module-object) the module namespace
7472
+ //
7473
+ // pid: the package identifier to which the module belongs (e.g., "dojo"); "" indicates the system or default package
7474
+ // mid: the fully-resolved (i.e., mappings have been applied) module identifier without the package identifier (e.g., "dojo/io/script")
7475
+ // url: the URL from which the module was retrieved
7476
+ // pack: the package object of the package to which the module belongs
7477
+ // executed: 0 => not executed; executing => in the process of traversing deps and running factory; executed => factory has been executed
7478
+ // deps: the dependency vector for this module (vector of modules objects)
7479
+ // def: the factory for this module
7480
+ // result: the result of the running the factory for this module
7481
+ // injected: (0 | requested | arrived) the status of the module; nonmodule means the resource did not call define
7482
+ // load: plugin load function; applicable only for plugins
7483
+ //
7484
+ // Modules go through several phases in creation:
7485
+ //
7486
+ // 1. Requested: some other module's definition or a require application contained the requested module in
7487
+ // its dependency vector or executing code explicitly demands a module via req.require.
7488
+ //
7489
+ // 2. Injected: a script element has been appended to the insert-point element demanding the resource implied by the URL
7490
+ //
7491
+ // 3. Loaded: the resource injected in [2] has been evaluated.
7492
+ //
7493
+ // 4. Defined: the resource contained a define statement that advised the loader about the module. Notice that some
7494
+ // resources may just contain a bundle of code and never formally define a module via define
7495
+ //
7496
+ // 5. Evaluated: the module was defined via define and the loader has evaluated the factory and computed a result.
7497
+ = {},
7439
7498
 
7440
- /***/ 2284:
7441
- /*!**************************************!*\
7442
- !*** ../../node_modules/dojo/dom.js ***!
7443
- \**************************************/
7444
- /***/ ((module, exports, __webpack_require__) => {
7499
+ cacheBust
7500
+ // query string to append to module URLs to bust browser cache
7501
+ = "",
7445
7502
 
7446
- __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./sniff */ 2616), __webpack_require__(/*! ./_base/window */ 5075), __webpack_require__(/*! ./_base/kernel */ 1054)], __WEBPACK_AMD_DEFINE_RESULT__ = (function(has, win, kernel){
7447
- // module:
7448
- // dojo/dom
7503
+ cache
7504
+ // hash:(mid | url)-->(function | string)
7505
+ //
7506
+ // A cache of resources. The resources arrive via a config.cache object, which is a hash from either mid --> function or
7507
+ // url --> string. The url key is distinguished from the mid key by always containing the prefix "url:". url keys as provided
7508
+ // by config.cache always have a string value that represents the contents of the resource at the given url. mid keys as provided
7509
+ // by configl.cache always have a function value that causes the same code to execute as if the module was script injected.
7510
+ //
7511
+ // Both kinds of key-value pairs are entered into cache via the function consumePendingCache, which may relocate keys as given
7512
+ // by any mappings *iff* the config.cache was received as part of a module resource request.
7513
+ //
7514
+ // Further, for mid keys, the implied url is computed and the value is entered into that key as well. This allows mapped modules
7515
+ // to retrieve cached items that may have arrived consequent to another namespace.
7516
+ //
7517
+ = {};
7449
7518
 
7450
- // FIXME: need to add unit tests for all the semi-public methods
7519
+ var match; {
7520
+ // no config API, assume defaultConfig has everything the loader needs...for the entire lifetime of the application
7521
+ defaultConfig.paths;
7522
+ pathsMapProg = defaultConfig.pathsMapProg;
7523
+ packs = defaultConfig.packs;
7524
+ aliases = defaultConfig.aliases;
7525
+ mapProgs = defaultConfig.mapProgs;
7526
+ modules = defaultConfig.modules;
7527
+ cache = defaultConfig.cache;
7528
+ cacheBust = defaultConfig.cacheBust;
7451
7529
 
7452
- if(has("ie") <= 7){
7453
- try{
7454
- document.execCommand("BackgroundImageCache", false, true);
7455
- }catch(e){
7456
- // sane browsers don't have cache "issues"
7457
- }
7530
+ // remember the default config for other processes (e.g., dojo/config)
7531
+ req.rawConfig = defaultConfig;
7458
7532
  }
7459
7533
 
7460
- // =============================
7461
- // DOM Functions
7462
- // =============================
7463
7534
 
7464
- // the result object
7465
- var dom = {
7466
- // summary:
7467
- // This module defines the core dojo DOM API.
7468
- };
7535
+ var contextRequire;
7469
7536
 
7470
- if(has("ie")){
7471
- dom.byId = function(id, doc){
7472
- if(typeof id != "string"){
7473
- return id || null;
7474
- }
7475
- var _d = doc || win.doc, te = id && _d.getElementById(id);
7476
- // attributes.id.value is better than just id in case the
7477
- // user has a name=id inside a form
7478
- if(te && (te.attributes.id.value == id || te.id == id)){
7479
- return te;
7480
- }else {
7481
- var eles = _d.all[id];
7482
- if(!eles || eles.nodeName){
7483
- eles = [eles];
7484
- }
7485
- // if more than 1, choose first with the correct id
7486
- var i = 0;
7487
- while((te = eles[i++])){
7488
- if((te.attributes && te.attributes.id && te.attributes.id.value == id) || te.id == id){
7489
- return te;
7490
- }
7537
+ var runMapProg = function(targetMid, map){
7538
+ // search for targetMid in map; return the map item if found; falsy otherwise
7539
+ if(map){
7540
+ for(var i = 0; i < map.length; i++){
7541
+ if(map[i][2].test(targetMid)){
7542
+ return map[i];
7491
7543
  }
7492
7544
  }
7493
- return null;
7494
- };
7495
- }else {
7496
- dom.byId = function(id, doc){
7497
- // inline'd type check.
7498
- // be sure to return null per documentation, to match IE branch.
7499
- return ((typeof id == "string") ? (doc || win.doc).getElementById(id) : id) || null; // DOMNode
7500
- };
7501
- }
7502
- /*=====
7503
- dom.byId = function(id, doc){
7504
- // summary:
7505
- // Returns DOM node with matching `id` attribute or falsy value (ex: null or undefined)
7506
- // if not found. If `id` is a DomNode, this function is a no-op.
7507
- //
7508
- // id: String|DOMNode
7509
- // A string to match an HTML id attribute or a reference to a DOM Node
7510
- //
7511
- // doc: Document?
7512
- // Document to work in. Defaults to the current value of
7513
- // dojo/_base/window.doc. Can be used to retrieve
7514
- // node references from other documents.
7515
- //
7516
- // example:
7517
- // Look up a node by ID:
7518
- // | require(["dojo/dom"], function(dom){
7519
- // | var n = dom.byId("foo");
7520
- // | });
7521
- //
7522
- // example:
7523
- // Check if a node exists, and use it.
7524
- // | require(["dojo/dom"], function(dom){
7525
- // | var n = dom.byId("bar");
7526
- // | if(n){ doStuff() ... }
7527
- // | });
7528
- //
7529
- // example:
7530
- // Allow string or DomNode references to be passed to a custom function:
7531
- // | require(["dojo/dom"], function(dom){
7532
- // | var foo = function(nodeOrId){
7533
- // | nodeOrId = dom.byId(nodeOrId);
7534
- // | // ... more stuff
7535
- // | }
7536
- // | });
7537
- };
7538
- =====*/
7539
-
7540
- // Test for DOMNode.contains() method, available everywhere except FF8-
7541
- // and IE8-, where it's available in general, but not on document itself,
7542
- // and also problems when either ancestor or node are text nodes.
7543
-
7544
- var doc = kernel.global["document"] || null;
7545
- has.add("dom-contains", !!(doc && doc.contains));
7546
- dom.isDescendant = has("dom-contains") ?
7547
- // FF9+, IE9+, webkit, opera, iOS, Android, Edge, etc.
7548
- function(/*DOMNode|String*/ node, /*DOMNode|String*/ ancestor){
7549
- return !!( (ancestor = dom.byId(ancestor)) && ancestor.contains(dom.byId(node)) );
7550
- } :
7551
- function(/*DOMNode|String*/ node, /*DOMNode|String*/ ancestor){
7552
- // summary:
7553
- // Returns true if node is a descendant of ancestor
7554
- // node: DOMNode|String
7555
- // string id or node reference to test
7556
- // ancestor: DOMNode|String
7557
- // string id or node reference of potential parent to test against
7558
- //
7559
- // example:
7560
- // Test is node id="bar" is a descendant of node id="foo"
7561
- // | require(["dojo/dom"], function(dom){
7562
- // | if(dom.isDescendant("bar", "foo")){ ... }
7563
- // | });
7545
+ }
7546
+ return 0;
7547
+ },
7564
7548
 
7565
- try{
7566
- node = dom.byId(node);
7567
- ancestor = dom.byId(ancestor);
7568
- while(node){
7569
- if(node == ancestor){
7570
- return true; // Boolean
7571
- }
7572
- node = node.parentNode;
7573
- }
7574
- }catch(e){ /* squelch, return false */ }
7575
- return false; // Boolean
7576
- };
7549
+ compactPath = function(path){
7550
+ var result = [],
7551
+ segment, lastSegment;
7552
+ path = path.replace(/\\/g, '/').split('/');
7553
+ while(path.length){
7554
+ segment = path.shift();
7555
+ if(segment==".." && result.length && lastSegment!=".."){
7556
+ result.pop();
7557
+ lastSegment = result[result.length - 1];
7558
+ }else if(segment!="."){
7559
+ result.push(lastSegment= segment);
7560
+ } // else ignore "."
7561
+ }
7562
+ return result.join("/");
7563
+ },
7577
7564
 
7578
- // TODO: do we need setSelectable in the base?
7565
+ makeModuleInfo = function(pid, mid, pack, url){
7566
+ {
7567
+ return {pid:pid, mid:mid, pack:pack, url:url, executed:0, def:0};
7568
+ }
7569
+ },
7579
7570
 
7580
- // Add feature test for user-select CSS property
7581
- // (currently known to work in all but IE < 10 and Opera)
7582
- // TODO: The user-select CSS property as of May 2014 is no longer part of
7583
- // any CSS specification. In IE, -ms-user-select does not do the same thing
7584
- // as the unselectable attribute on elements; namely, dijit Editor buttons
7585
- // do not properly prevent the content of the editable content frame from
7586
- // unblurring. As a result, the -ms- prefixed version is omitted here.
7587
- has.add("css-user-select", function(global, doc, element){
7588
- // Avoid exception when dom.js is loaded in non-browser environments
7589
- if(!element){ return false; }
7571
+ getModuleInfo_ = function(mid, referenceModule, packs, modules, baseUrl, mapProgs, pathsMapProg, aliases, alwaysCreate, fromPendingCache){
7572
+ // arguments are passed instead of using lexical variables so that this function my be used independent of the loader (e.g., the builder)
7573
+ // alwaysCreate is useful in this case so that getModuleInfo never returns references to real modules owned by the loader
7574
+ var pid, pack, midInPackage, mapItem, url, result, isRelative;
7575
+ isRelative = /^\./.test(mid);
7576
+ if(/(^\/)|(\:)|(\.js$)/.test(mid) || (isRelative && !referenceModule)){
7577
+ // absolute path or protocol of .js filetype, or relative path but no reference module and therefore relative to page
7578
+ // whatever it is, it's not a module but just a URL of some sort
7579
+ // note: pid===0 indicates the routine is returning an unmodified mid
7590
7580
 
7591
- var style = element.style;
7592
- var prefixes = ["Khtml", "O", "Moz", "Webkit"],
7593
- i = prefixes.length,
7594
- name = "userSelect";
7581
+ return makeModuleInfo(0, mid, 0, mid);
7582
+ }else {
7583
+ // relative module ids are relative to the referenceModule; get rid of any dots
7584
+ mid = compactPath(isRelative ? (referenceModule.mid + "/../" + mid) : mid);
7585
+ if(/^\./.test(mid)){
7586
+ throw makeError("irrationalPath", mid);
7587
+ }
7588
+ // at this point, mid is an absolute mid
7595
7589
 
7596
- // Iterate prefixes from most to least likely
7597
- do{
7598
- if(typeof style[name] !== "undefined"){
7599
- // Supported; return property name
7600
- return name;
7601
- }
7602
- }while(i-- && (name = prefixes[i] + "UserSelect"));
7590
+ // map the mid
7591
+ if(!isRelative && mapProgs.star){
7592
+ mapItem = runMapProg(mid, mapProgs.star[1]);
7593
+ }
7594
+ if(!mapItem && referenceModule){
7595
+ mapItem = runMapProg(referenceModule.mid, mapProgs);
7596
+ mapItem = mapItem && runMapProg(mid, mapItem[1]);
7597
+ }
7603
7598
 
7604
- // Not supported if we didn't return before now
7605
- return false;
7606
- });
7599
+ if(mapItem){
7600
+ mid = mapItem[1] + mid.substring(mapItem[3]);
7601
+ }
7607
7602
 
7608
- /*=====
7609
- dom.setSelectable = function(node, selectable){
7610
- // summary:
7611
- // Enable or disable selection on a node
7612
- // node: DOMNode|String
7613
- // id or reference to node
7614
- // selectable: Boolean
7615
- // state to put the node in. false indicates unselectable, true
7616
- // allows selection.
7617
- // example:
7618
- // Make the node id="bar" unselectable
7619
- // | require(["dojo/dom"], function(dom){
7620
- // | dom.setSelectable("bar");
7621
- // | });
7622
- // example:
7623
- // Make the node id="bar" selectable
7624
- // | require(["dojo/dom"], function(dom){
7625
- // | dom.setSelectable("bar", true);
7626
- // | });
7627
- };
7628
- =====*/
7603
+ match = mid.match(/^([^\/]+)(\/(.+))?$/);
7604
+ pid = match ? match[1] : "";
7605
+ if((pack = packs[pid])){
7606
+ mid = pid + "/" + (midInPackage = (match[3] || pack.main));
7607
+ }else {
7608
+ pid = "";
7609
+ }
7629
7610
 
7630
- var cssUserSelect = has("css-user-select");
7631
- dom.setSelectable = cssUserSelect ? function(node, selectable){
7632
- // css-user-select returns a (possibly vendor-prefixed) CSS property name
7633
- dom.byId(node).style[cssUserSelect] = selectable ? "" : "none";
7634
- } : function(node, selectable){
7635
- node = dom.byId(node);
7611
+ // search aliases
7612
+ var candidateLength = 0,
7613
+ candidate = 0;
7614
+ forEach(aliases, function(pair){
7615
+ var match = mid.match(pair[0]);
7616
+ if(match && match.length>candidateLength){
7617
+ candidate = isFunction(pair[1]) ? mid.replace(pair[0], pair[1]) : pair[1];
7618
+ }
7619
+ });
7620
+ if(candidate){
7621
+ return getModuleInfo_(candidate, 0, packs, modules, baseUrl, mapProgs, pathsMapProg, aliases, alwaysCreate);
7622
+ }
7636
7623
 
7637
- // (IE < 10 / Opera) Fall back to setting/removing the
7638
- // unselectable attribute on the element and all its children
7639
- var nodes = node.getElementsByTagName("*"),
7640
- i = nodes.length;
7624
+ result = modules[mid];
7625
+ if(result){
7626
+ return alwaysCreate ? makeModuleInfo(result.pid, result.mid, result.pack, result.url) : modules[mid];
7627
+ }
7628
+ }
7629
+ // get here iff the sought-after module does not yet exist; therefore, we need to compute the URL given the
7630
+ // fully resolved (i.e., all relative indicators and package mapping resolved) module id
7641
7631
 
7642
- if(selectable){
7643
- node.removeAttribute("unselectable");
7644
- while(i--){
7645
- nodes[i].removeAttribute("unselectable");
7632
+ // note: pid!==0 indicates the routine is returning a url that has .js appended unmodified mid
7633
+ mapItem = runMapProg(mid, pathsMapProg);
7634
+ if(mapItem){
7635
+ url = mapItem[1] + mid.substring(mapItem[3]);
7636
+ }else if(pid){
7637
+ url = (pack.location.slice(-1) === '/' ? pack.location.slice(0, -1) : pack.location) + "/" + midInPackage;
7638
+ }else {
7639
+ url = mid;
7646
7640
  }
7647
- }else {
7648
- node.setAttribute("unselectable", "on");
7649
- while(i--){
7650
- nodes[i].setAttribute("unselectable", "on");
7641
+ // if result is not absolute, add baseUrl
7642
+ if(!(/(^\/)|(\:)/.test(url))){
7643
+ url = baseUrl + url;
7651
7644
  }
7652
- }
7653
- };
7654
-
7655
- return dom;
7656
- }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
7657
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
7645
+ url += ".js";
7646
+ return makeModuleInfo(pid, mid, pack, compactPath(url));
7647
+ },
7658
7648
 
7649
+ getModuleInfo = function(mid, referenceModule, fromPendingCache){
7650
+ return getModuleInfo_(mid, referenceModule, packs, modules, req.baseUrl, mapProgs, pathsMapProg, aliases, undefined);
7651
+ };
7659
7652
 
7660
- /***/ }),
7653
+ req.toAbsMid = function(mid, referenceModule){
7654
+ return getModuleInfo(mid, referenceModule).mid;
7655
+ };
7661
7656
 
7662
- /***/ 2348:
7663
- /*!*********************************************!*\
7664
- !*** ../../node_modules/dgrid/Selection.js ***!
7665
- \*********************************************/
7666
- /***/ ((module, exports, __webpack_require__) => {
7657
+ req.toUrl = function(name, referenceModule){
7658
+ var moduleInfo = getModuleInfo(name+"/x", referenceModule),
7659
+ url= moduleInfo.url;
7660
+ return fixupUrl(moduleInfo.pid===0 ?
7661
+ // if pid===0, then name had a protocol or absolute path; either way, toUrl is the identify function in such cases
7662
+ name :
7663
+ // "/x.js" since getModuleInfo automatically appends ".js" and we appended "/x" to make name look like a module id
7664
+ url.substring(0, url.length-5)
7665
+ );
7666
+ };
7667
7667
 
7668
- __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
7669
- __webpack_require__(/*! dojo/_base/declare */ 6345),
7670
- __webpack_require__(/*! dojo/aspect */ 6566),
7671
- __webpack_require__(/*! dojo/dom-class */ 8945),
7672
- __webpack_require__(/*! dojo/mouse */ 8471),
7673
- __webpack_require__(/*! dojo/on */ 2075),
7674
- __webpack_require__(/*! dojo/sniff */ 2616),
7675
- __webpack_require__.dj.h(/*! dojo/has!touch?./util/touch */"touch?5892"),
7676
- __webpack_require__(/*! dojo/query */ 1172), // for on.selector
7677
- __webpack_require__(/*! dojo/dom */ 2284) // for has('css-user-select') in 1.8.2+
7678
- ], __WEBPACK_AMD_DEFINE_RESULT__ = (function (declare, aspect, domClass, mouse, on, has, touchUtil) {
7679
-
7680
- has.add('dom-comparedocumentposition', function (global, doc, element) {
7681
- return !!element.compareDocumentPosition;
7682
- });
7683
-
7684
- // Add a feature test for the onselectstart event, which offers a more
7685
- // graceful fallback solution than node.unselectable.
7686
- has.add('dom-selectstart', typeof document.onselectstart !== 'undefined');
7687
-
7688
- var ctrlEquiv = has('mac') ? 'metaKey' : 'ctrlKey',
7689
- hasUserSelect = has('css-user-select'),
7690
- hasPointer = has('pointer'),
7691
- hasMSPointer = hasPointer && hasPointer.slice(0, 2) === 'MS',
7692
- downType = hasPointer ? hasPointer + (hasMSPointer ? 'Down' : 'down') : 'mousedown',
7693
- upType = hasPointer ? hasPointer + (hasMSPointer ? 'Up' : 'up') : 'mouseup';
7668
+ var fixupUrl= typeof userConfig.fixupUrl == "function" ? userConfig.fixupUrl : function(url){
7669
+ url += ""; // make sure url is a Javascript string (some paths may be a Java string)
7670
+ return url + (cacheBust ? ((/\?/.test(url) ? "&" : "?") + cacheBust) : "");
7671
+ };
7694
7672
 
7695
- if (hasUserSelect === 'WebkitUserSelect' && typeof document.documentElement.style.msUserSelect !== 'undefined') {
7696
- // Edge defines both webkit and ms prefixes, rendering feature detects as brittle as UA sniffs...
7697
- hasUserSelect = false;
7673
+ {
7674
+ req.log = noop;
7698
7675
  }
7699
7676
 
7700
- function makeUnselectable(node, unselectable) {
7701
- // Utility function used in fallback path for recursively setting unselectable
7702
- var value = node.unselectable = unselectable ? 'on' : '',
7703
- elements = node.getElementsByTagName('*'),
7704
- i = elements.length;
7677
+ {
7678
+ req.trace = noop;
7679
+ }
7680
+ var def; {
7681
+ var def = noop;
7682
+ }
7683
+ // allow config to override default implementation of named functions; this is useful for
7684
+ // non-browser environments, e.g., overriding injectUrl, getText, log, etc. in node.js, Rhino, etc.
7685
+ // also useful for testing and monkey patching loader
7686
+ mix(mix(req, defaultConfig.loaderPatch), userConfig.loaderPatch);
7705
7687
 
7706
- while (--i) {
7707
- if (elements[i].tagName === 'INPUT' || elements[i].tagName === 'TEXTAREA') {
7708
- continue; // Don't prevent text selection in text input fields.
7688
+ // now that req is fully initialized and won't change, we can hook it up to the error signal
7689
+ on(error, function(arg){
7690
+ try{
7691
+ console.error(arg);
7692
+ if(arg instanceof Error){
7693
+ for(var p in arg){
7694
+ console.log(p + ":", arg[p]);
7695
+ }
7696
+ console.log(".");
7709
7697
  }
7710
- elements[i].unselectable = value;
7711
- }
7712
- }
7698
+ }catch(e){}
7699
+ });
7713
7700
 
7714
- function setSelectable(grid, selectable) {
7715
- // Alternative version of dojo/dom.setSelectable based on feature detection.
7701
+ // always publish these
7702
+ mix(req, {
7703
+ uid:uid,
7704
+ cache:cache,
7705
+ packs:packs
7706
+ });
7716
7707
 
7717
- // For FF < 21, use -moz-none, which will respect -moz-user-select: text on
7718
- // child elements (e.g. form inputs). In FF 21, none behaves the same.
7719
- // See https://developer.mozilla.org/en-US/docs/CSS/user-select
7720
- var node = grid.bodyNode,
7721
- value = selectable ? 'text' : has('ff') < 21 ? '-moz-none' : 'none';
7708
+ // the loader can be defined exactly once; look for global define which is the symbol AMD loaders are
7709
+ // *required* to define (as opposed to require, which is optional)
7710
+ if(global.define){
7711
+ return;
7712
+ }else {
7713
+ global.define = def;
7714
+ global.require = req;
7715
+ }
7716
+ })
7717
+ .call(this, userConfig, defaultConfig);};
7722
7718
 
7723
- // In IE10+, -ms-user-select: none will block selection from starting within the
7724
- // element, but will not block an existing selection from entering the element.
7725
- // When using a modifier key, IE will select text inside of the element as well
7726
- // as outside of the element, because it thinks the selection started outside.
7727
- // Therefore, fall back to other means of blocking selection for IE10+.
7728
- // Newer versions of Dojo do not even report msUserSelect (see https://github.com/dojo/dojo/commit/7ae2a43).
7729
- if (hasUserSelect && hasUserSelect !== 'msUserSelect') {
7730
- node.style[hasUserSelect] = value;
7731
- }
7732
- else if (has('dom-selectstart')) {
7733
- // For browsers that don't support user-select but support selectstart (IE<10),
7734
- // we can hook up an event handler as necessary. Since selectstart bubbles,
7735
- // it will handle any child elements as well.
7736
- // Note, however, that both this and the unselectable fallback below are
7737
- // incapable of preventing text selection from outside the targeted node.
7738
- if (!selectable && !grid._selectstartHandle) {
7739
- grid._selectstartHandle = on(node, 'selectstart', function (evt) {
7740
- var tag = evt.target && evt.target.tagName;
7719
+ /***/ }),
7741
7720
 
7742
- // Prevent selection except where a text input field is involved.
7743
- if (tag !== 'INPUT' && tag !== 'TEXTAREA') {
7744
- evt.preventDefault();
7745
- }
7746
- });
7747
- }
7748
- else if (selectable && grid._selectstartHandle) {
7749
- grid._selectstartHandle.remove();
7750
- delete grid._selectstartHandle;
7751
- }
7752
- }
7753
- else {
7754
- // For browsers that don't support either user-select or selectstart (Opera),
7755
- // we need to resort to setting the unselectable attribute on all nodes
7756
- // involved. Since this doesn't automatically apply to child nodes, we also
7757
- // need to re-apply it whenever rows are rendered.
7758
- makeUnselectable(node, !selectable);
7759
- if (!selectable && !grid._unselectableHandle) {
7760
- grid._unselectableHandle = aspect.after(grid, 'renderRow', function (row) {
7761
- makeUnselectable(row, true);
7762
- return row;
7763
- });
7764
- }
7765
- else if (selectable && grid._unselectableHandle) {
7766
- grid._unselectableHandle.remove();
7767
- delete grid._unselectableHandle;
7768
- }
7769
- }
7770
- }
7721
+ /***/ 2219:
7722
+ /*!*****************************************************!*\
7723
+ !*** ../../node_modules/dojo-dstore/QueryMethod.js ***!
7724
+ \*****************************************************/
7725
+ /***/ ((module, exports, __webpack_require__) => {
7771
7726
 
7772
- return declare(null, {
7727
+ __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
7728
+ /*=====
7729
+ var __QueryMethodArgs = {
7730
+ // type: String
7731
+ // The type of the query. This identifies the query's type in the query log
7732
+ // and the name of the corresponding query engine method.
7733
+ // normalizeArguments: Function?
7734
+ // A function that normalizes arguments for consumption by a query engine
7735
+ // applyQuery: Function?
7736
+ // A function that takes the query's new subcollection and the query's log entry
7737
+ // and applies it to the new subcollection. This is useful for collections that need
7738
+ // to both declare and implement new query methods.
7739
+ // querierFactory: Function?
7740
+ // A factory function that provides a default querier implementation to use when
7741
+ // a collection does not define its own querier factory method for this query type.
7742
+ };
7743
+ =====*/
7744
+ return function QueryMethod(/*__QueryMethodArgs*/ kwArgs) {
7773
7745
  // summary:
7774
- // Add selection capabilities to a grid. The grid will have a selection property and
7775
- // fire "dgrid-select" and "dgrid-deselect" events.
7776
-
7777
- // selectionDelegate: String
7778
- // Selector to delegate to as target of selection events.
7779
- selectionDelegate: '.dgrid-row',
7746
+ // The constructor for a dstore collection query method
7747
+ // description:
7748
+ // This is the constructor for a collection query method. It encapsulates the following:
7749
+ // * Creating a new subcollection for the query results
7750
+ // * Logging the query in the collection's `queryLog`
7751
+ // * Normalizing query arguments
7752
+ // * Applying the query engine
7753
+ // kwArgs:
7754
+ // The properties that define the query method
7755
+ // returns: Function
7756
+ // Returns a function that takes query arguments and returns a new collection with
7757
+ // the query associated with it.
7780
7758
 
7781
- // selectionEvents: String|Function
7782
- // Event (or comma-delimited events, or extension event) to listen on
7783
- // to trigger select logic.
7784
- selectionEvents: downType + ',' + upType + ',dgrid-cellfocusin',
7759
+ var type = kwArgs.type,
7760
+ normalizeArguments = kwArgs.normalizeArguments,
7761
+ applyQuery = kwArgs.applyQuery,
7762
+ defaultQuerierFactory = kwArgs.querierFactory;
7785
7763
 
7786
- // selectionTouchEvents: String|Function
7787
- // Event (or comma-delimited events, or extension event) to listen on
7788
- // in addition to selectionEvents for touch devices.
7789
- selectionTouchEvents: null,
7764
+ return function () {
7765
+ // summary:
7766
+ // A query method whose arguments are determined by the query type
7767
+ // returns: dstore/Collection
7768
+ // A collection representing the query results
7790
7769
 
7791
- // deselectOnRefresh: Boolean
7792
- // If true, the selection object will be cleared when refresh is called.
7793
- deselectOnRefresh: true,
7770
+ var originalArguments = Array.prototype.slice.call(arguments),
7771
+ normalizedArguments = normalizeArguments
7772
+ ? normalizeArguments.apply(this, originalArguments)
7773
+ : originalArguments,
7774
+ logEntry = {
7775
+ type: type,
7776
+ arguments: originalArguments,
7777
+ normalizedArguments: normalizedArguments
7778
+ },
7779
+ querierFactory = this._getQuerierFactory(type) || defaultQuerierFactory;
7794
7780
 
7795
- // allowSelectAll: Boolean
7796
- // If true, allow ctrl/cmd+A to select all rows.
7797
- // Also consulted by the selector plugin for showing select-all checkbox.
7798
- allowSelectAll: false,
7781
+ if (querierFactory) {
7782
+ // Call the query factory in store context to support things like
7783
+ // mapping a filter query's string argument to a custom filter method on the collection
7784
+ logEntry.querier = querierFactory.apply(this, normalizedArguments);
7785
+ }
7799
7786
 
7800
- // selection:
7801
- // An object where the property names correspond to
7802
- // object ids and values are true or false depending on whether an item is selected
7803
- selection: {},
7787
+ var newCollection = this._createSubCollection({
7788
+ queryLog: this.queryLog.concat(logEntry)
7789
+ });
7804
7790
 
7805
- // selectionMode: String
7806
- // The selection mode to use, can be "none", "multiple", "single", or "extended".
7807
- selectionMode: 'extended',
7791
+ return applyQuery ? applyQuery.call(this, newCollection, logEntry) : newCollection;
7792
+ };
7793
+ };
7794
+ }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
7795
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
7808
7796
 
7809
- // allowTextSelection: Boolean
7810
- // Whether to still allow text within cells to be selected. The default
7811
- // behavior is to allow text selection only when selectionMode is none;
7812
- // setting this property to either true or false will explicitly set the
7813
- // behavior regardless of selectionMode.
7814
- allowTextSelection: undefined,
7815
7797
 
7816
- // _selectionTargetType: String
7817
- // Indicates the property added to emitted events for selected targets;
7818
- // overridden in CellSelection
7819
- _selectionTargetType: 'rows',
7798
+ /***/ }),
7820
7799
 
7821
- create: function () {
7822
- this.selection = {};
7823
- return this.inherited(arguments);
7824
- },
7825
- postCreate: function () {
7826
- this.inherited(arguments);
7800
+ /***/ 2236:
7801
+ /*!**********************************************************!*\
7802
+ !*** ../../node_modules/dojo/promise/instrumentation.js ***!
7803
+ \**********************************************************/
7804
+ /***/ ((module, exports, __webpack_require__) => {
7827
7805
 
7828
- this._initSelectionEvents();
7806
+ __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
7807
+ __webpack_require__(/*! ./tracer */ 3185),
7808
+ __webpack_require__(/*! ../has */ 6356),
7809
+ __webpack_require__(/*! ../_base/lang */ 6323),
7810
+ __webpack_require__(/*! ../_base/array */ 6974)
7811
+ ], __WEBPACK_AMD_DEFINE_RESULT__ = (function(tracer, has, lang, arrayUtil){
7812
+ has.add("config-useDeferredInstrumentation", "report-unhandled-rejections");
7829
7813
 
7830
- // Force selectionMode setter to run
7831
- var selectionMode = this.selectionMode;
7832
- this.selectionMode = '';
7833
- this._setSelectionMode(selectionMode);
7834
- },
7814
+ function logError(error, rejection, deferred){
7815
+ if(error && error.log === false){
7816
+ return;
7817
+ }
7818
+ var stack = "";
7819
+ if(error && error.stack){
7820
+ stack += error.stack;
7821
+ }
7822
+ if(rejection && rejection.stack){
7823
+ stack += "\n ----------------------------------------\n rejected" + rejection.stack.split("\n").slice(1).join("\n").replace(/^\s+/, " ");
7824
+ }
7825
+ if(deferred && deferred.stack){
7826
+ stack += "\n ----------------------------------------\n" + deferred.stack;
7827
+ }
7828
+ console.error(error, stack);
7829
+ }
7835
7830
 
7836
- destroy: function () {
7837
- this.inherited(arguments);
7831
+ function reportRejections(error, handled, rejection, deferred){
7832
+ if(!handled){
7833
+ logError(error, rejection, deferred);
7834
+ }
7835
+ }
7838
7836
 
7839
- // Remove any extra handles added by Selection.
7840
- if (this._selectstartHandle) {
7841
- this._selectstartHandle.remove();
7842
- }
7843
- if (this._unselectableHandle) {
7844
- this._unselectableHandle.remove();
7845
- }
7846
- if (this._removeDeselectSignals) {
7847
- this._removeDeselectSignals();
7837
+ var errors = [];
7838
+ var activeTimeout = false;
7839
+ var unhandledWait = 1000;
7840
+ function trackUnhandledRejections(error, handled, rejection, deferred){
7841
+ // try to find the existing tracking object
7842
+ if(!arrayUtil.some(errors, function(obj){
7843
+ if(obj.error === error){
7844
+ // found the tracking object for this error
7845
+ if(handled){
7846
+ // if handled, update the state
7847
+ obj.handled = true;
7848
+ }
7849
+ return true;
7848
7850
  }
7849
- },
7851
+ })){
7852
+ // no tracking object has been setup, create one
7853
+ errors.push({
7854
+ error: error,
7855
+ rejection: rejection,
7856
+ handled: handled,
7857
+ deferred: deferred,
7858
+ timestamp: new Date().getTime()
7859
+ });
7860
+ }
7850
7861
 
7851
- _setSelectionMode: function (mode) {
7852
- // summary:
7853
- // Updates selectionMode, resetting necessary variables.
7862
+ if(!activeTimeout){
7863
+ activeTimeout = setTimeout(logRejected, unhandledWait);
7864
+ }
7865
+ }
7854
7866
 
7855
- if (mode === this.selectionMode) {
7856
- return;
7867
+ function logRejected(){
7868
+ var now = new Date().getTime();
7869
+ var reportBefore = now - unhandledWait;
7870
+ errors = arrayUtil.filter(errors, function(obj){
7871
+ // only report the error if we have waited long enough and
7872
+ // it hasn't been handled
7873
+ if(obj.timestamp < reportBefore){
7874
+ if(!obj.handled){
7875
+ logError(obj.error, obj.rejection, obj.deferred);
7876
+ }
7877
+ return false;
7857
7878
  }
7879
+ return true;
7880
+ });
7858
7881
 
7859
- // Start selection fresh when switching mode.
7860
- this.clearSelection();
7861
-
7862
- this.selectionMode = mode;
7863
-
7864
- // Compute name of selection handler for this mode once
7865
- // (in the form of _fooSelectionHandler)
7866
- this._selectionHandlerName = '_' + mode + 'SelectionHandler';
7867
-
7868
- // Also re-run allowTextSelection setter in case it is in automatic mode.
7869
- this._setAllowTextSelection(this.allowTextSelection);
7870
- },
7882
+ if(errors.length){
7883
+ activeTimeout = setTimeout(logRejected, errors[0].timestamp + unhandledWait - now);
7884
+ }else {
7885
+ activeTimeout = false;
7886
+ }
7887
+ }
7871
7888
 
7872
- _setAllowTextSelection: function (allow) {
7873
- if (typeof allow !== 'undefined') {
7874
- setSelectable(this, allow);
7875
- }
7876
- else {
7877
- setSelectable(this, this.selectionMode === 'none');
7878
- }
7879
- this.allowTextSelection = allow;
7880
- },
7889
+ return function(Deferred){
7890
+ // summary:
7891
+ // Initialize instrumentation for the Deferred class.
7892
+ // description:
7893
+ // Initialize instrumentation for the Deferred class.
7894
+ // Done automatically by `dojo/Deferred` if the
7895
+ // `deferredInstrumentation` and `useDeferredInstrumentation`
7896
+ // config options are set.
7897
+ //
7898
+ // Sets up `dojo/promise/tracer` to log to the console.
7899
+ //
7900
+ // Sets up instrumentation of rejected deferreds so unhandled
7901
+ // errors are logged to the console.
7881
7902
 
7882
- _handleSelect: function (event, target) {
7883
- if (mouse.isRight(event)) {
7884
- return;
7885
- }
7903
+ var usage = has("config-useDeferredInstrumentation");
7904
+ if(usage){
7905
+ tracer.on("resolved", lang.hitch(console, "log", "resolved"));
7906
+ tracer.on("rejected", lang.hitch(console, "log", "rejected"));
7907
+ tracer.on("progress", lang.hitch(console, "log", "progress"));
7886
7908
 
7887
- // Don't run if selection mode doesn't have a handler (incl. "none"), target can't be selected,
7888
- // or if coming from a dgrid-cellfocusin from a mousedown
7889
- if (!this[this._selectionHandlerName] || !this.allowSelect(this.row(target)) ||
7890
- (event.type === 'dgrid-cellfocusin' && event.parentType === 'mousedown') ||
7891
- (event.type === upType && target !== this._waitForMouseUp)) {
7892
- return;
7909
+ var args = [];
7910
+ if(typeof usage === "string"){
7911
+ args = usage.split(",");
7912
+ usage = args.shift();
7893
7913
  }
7894
- this._waitForMouseUp = null;
7895
- this._selectionTriggerEvent = event;
7896
-
7897
- // Don't call select handler for ctrl+navigation
7898
- if (!event.keyCode || !event.ctrlKey || event.keyCode === 32) {
7899
- // If clicking a selected item, wait for mouseup so that drag n' drop
7900
- // is possible without losing our selection
7901
- if (!event.shiftKey && event.type === downType && this.isSelected(target)) {
7902
- this._waitForMouseUp = target;
7903
- }
7904
- else {
7905
- this[this._selectionHandlerName](event, target);
7906
- }
7914
+ if(usage === "report-rejections"){
7915
+ Deferred.instrumentRejected = reportRejections;
7916
+ }else if(usage === "report-unhandled-rejections" || usage === true || usage === 1){
7917
+ Deferred.instrumentRejected = trackUnhandledRejections;
7918
+ unhandledWait = parseInt(args[0], 10) || unhandledWait;
7919
+ }else {
7920
+ throw new Error("Unsupported instrumentation usage <" + usage + ">");
7907
7921
  }
7908
- this._selectionTriggerEvent = null;
7909
- },
7922
+ }
7923
+ };
7924
+ }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
7925
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
7910
7926
 
7911
- _singleSelectionHandler: function (event, target) {
7912
- // summary:
7913
- // Selection handler for "single" mode, where only one target may be
7914
- // selected at a time.
7915
7927
 
7916
- var ctrlKey = event.keyCode ? event.ctrlKey : event[ctrlEquiv];
7917
- if (this._lastSelected === target) {
7918
- // Allow ctrl to toggle selection, even within single select mode.
7919
- this.select(target, null, !ctrlKey || !this.isSelected(target));
7920
- }
7921
- else {
7922
- this.clearSelection();
7923
- this.select(target);
7924
- this._lastSelected = target;
7925
- }
7926
- },
7928
+ /***/ }),
7927
7929
 
7928
- _multipleSelectionHandler: function (event, target) {
7929
- // summary:
7930
- // Selection handler for "multiple" mode, where shift can be held to
7931
- // select ranges, ctrl/cmd can be held to toggle, and clicks/keystrokes
7932
- // without modifier keys will add to the current selection.
7930
+ /***/ 2284:
7931
+ /*!**************************************!*\
7932
+ !*** ../../node_modules/dojo/dom.js ***!
7933
+ \**************************************/
7934
+ /***/ ((module, exports, __webpack_require__) => {
7933
7935
 
7934
- var lastRow = this._lastSelected,
7935
- ctrlKey = event.keyCode ? event.ctrlKey : event[ctrlEquiv],
7936
- value;
7936
+ __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./sniff */ 2616), __webpack_require__(/*! ./_base/window */ 5075), __webpack_require__(/*! ./_base/kernel */ 1054)], __WEBPACK_AMD_DEFINE_RESULT__ = (function(has, win, kernel){
7937
+ // module:
7938
+ // dojo/dom
7937
7939
 
7938
- if (!event.shiftKey) {
7939
- // Toggle if ctrl is held; otherwise select
7940
- value = ctrlKey ? null : true;
7941
- lastRow = null;
7942
- }
7943
- this.select(target, lastRow, value);
7940
+ // FIXME: need to add unit tests for all the semi-public methods
7944
7941
 
7945
- if (!lastRow) {
7946
- // Update reference for potential subsequent shift+select
7947
- // (current row was already selected above)
7948
- this._lastSelected = target;
7949
- }
7950
- },
7942
+ if(has("ie") <= 7){
7943
+ try{
7944
+ document.execCommand("BackgroundImageCache", false, true);
7945
+ }catch(e){
7946
+ // sane browsers don't have cache "issues"
7947
+ }
7948
+ }
7951
7949
 
7952
- _extendedSelectionHandler: function (event, target) {
7953
- // summary:
7954
- // Selection handler for "extended" mode, which is like multiple mode
7955
- // except that clicks/keystrokes without modifier keys will clear
7956
- // the previous selection.
7950
+ // =============================
7951
+ // DOM Functions
7952
+ // =============================
7957
7953
 
7958
- // If the target is already selected, and is the sole selection, ignore a user action
7959
- // that would simply select the target (causing unnecessary deselect/select).
7960
- if (!event[ctrlEquiv] && this.isSelected(target) && this.getSelectedCount() === 1) {
7961
- return;
7962
- }
7954
+ // the result object
7955
+ var dom = {
7956
+ // summary:
7957
+ // This module defines the core dojo DOM API.
7958
+ };
7963
7959
 
7964
- // Clear selection first for right-clicks outside selection and non-ctrl-clicks;
7965
- // otherwise, extended mode logic is identical to multiple mode
7966
- if (event.button === 2 ? !this.isSelected(target) :
7967
- !(event.keyCode ? event.ctrlKey : event[ctrlEquiv])) {
7968
- this.clearSelection(null, true);
7960
+ if(has("ie")){
7961
+ dom.byId = function(id, doc){
7962
+ if(typeof id != "string"){
7963
+ return id || null;
7969
7964
  }
7970
- this._multipleSelectionHandler(event, target);
7971
- },
7965
+ var _d = doc || win.doc, te = id && _d.getElementById(id);
7966
+ // attributes.id.value is better than just id in case the
7967
+ // user has a name=id inside a form
7968
+ if(te && (te.attributes.id.value == id || te.id == id)){
7969
+ return te;
7970
+ }else {
7971
+ var eles = _d.all[id];
7972
+ if(!eles || eles.nodeName){
7973
+ eles = [eles];
7974
+ }
7975
+ // if more than 1, choose first with the correct id
7976
+ var i = 0;
7977
+ while((te = eles[i++])){
7978
+ if((te.attributes && te.attributes.id && te.attributes.id.value == id) || te.id == id){
7979
+ return te;
7980
+ }
7981
+ }
7982
+ }
7983
+ return null;
7984
+ };
7985
+ }else {
7986
+ dom.byId = function(id, doc){
7987
+ // inline'd type check.
7988
+ // be sure to return null per documentation, to match IE branch.
7989
+ return ((typeof id == "string") ? (doc || win.doc).getElementById(id) : id) || null; // DOMNode
7990
+ };
7991
+ }
7992
+ /*=====
7993
+ dom.byId = function(id, doc){
7994
+ // summary:
7995
+ // Returns DOM node with matching `id` attribute or falsy value (ex: null or undefined)
7996
+ // if not found. If `id` is a DomNode, this function is a no-op.
7997
+ //
7998
+ // id: String|DOMNode
7999
+ // A string to match an HTML id attribute or a reference to a DOM Node
8000
+ //
8001
+ // doc: Document?
8002
+ // Document to work in. Defaults to the current value of
8003
+ // dojo/_base/window.doc. Can be used to retrieve
8004
+ // node references from other documents.
8005
+ //
8006
+ // example:
8007
+ // Look up a node by ID:
8008
+ // | require(["dojo/dom"], function(dom){
8009
+ // | var n = dom.byId("foo");
8010
+ // | });
8011
+ //
8012
+ // example:
8013
+ // Check if a node exists, and use it.
8014
+ // | require(["dojo/dom"], function(dom){
8015
+ // | var n = dom.byId("bar");
8016
+ // | if(n){ doStuff() ... }
8017
+ // | });
8018
+ //
8019
+ // example:
8020
+ // Allow string or DomNode references to be passed to a custom function:
8021
+ // | require(["dojo/dom"], function(dom){
8022
+ // | var foo = function(nodeOrId){
8023
+ // | nodeOrId = dom.byId(nodeOrId);
8024
+ // | // ... more stuff
8025
+ // | }
8026
+ // | });
8027
+ };
8028
+ =====*/
7972
8029
 
7973
- _toggleSelectionHandler: function (event, target) {
8030
+ // Test for DOMNode.contains() method, available everywhere except FF8-
8031
+ // and IE8-, where it's available in general, but not on document itself,
8032
+ // and also problems when either ancestor or node are text nodes.
8033
+
8034
+ var doc = kernel.global["document"] || null;
8035
+ has.add("dom-contains", !!(doc && doc.contains));
8036
+ dom.isDescendant = has("dom-contains") ?
8037
+ // FF9+, IE9+, webkit, opera, iOS, Android, Edge, etc.
8038
+ function(/*DOMNode|String*/ node, /*DOMNode|String*/ ancestor){
8039
+ return !!( (ancestor = dom.byId(ancestor)) && ancestor.contains(dom.byId(node)) );
8040
+ } :
8041
+ function(/*DOMNode|String*/ node, /*DOMNode|String*/ ancestor){
7974
8042
  // summary:
7975
- // Selection handler for "toggle" mode which simply toggles the selection
7976
- // of the given target. Primarily useful for touch input.
8043
+ // Returns true if node is a descendant of ancestor
8044
+ // node: DOMNode|String
8045
+ // string id or node reference to test
8046
+ // ancestor: DOMNode|String
8047
+ // string id or node reference of potential parent to test against
8048
+ //
8049
+ // example:
8050
+ // Test is node id="bar" is a descendant of node id="foo"
8051
+ // | require(["dojo/dom"], function(dom){
8052
+ // | if(dom.isDescendant("bar", "foo")){ ... }
8053
+ // | });
7977
8054
 
7978
- this.select(target, null, null);
7979
- },
8055
+ try{
8056
+ node = dom.byId(node);
8057
+ ancestor = dom.byId(ancestor);
8058
+ while(node){
8059
+ if(node == ancestor){
8060
+ return true; // Boolean
8061
+ }
8062
+ node = node.parentNode;
8063
+ }
8064
+ }catch(e){ /* squelch, return false */ }
8065
+ return false; // Boolean
8066
+ };
7980
8067
 
7981
- _initSelectionEvents: function () {
7982
- // summary:
7983
- // Performs first-time hookup of event handlers containing logic
7984
- // required for selection to operate.
8068
+ // TODO: do we need setSelectable in the base?
7985
8069
 
7986
- var grid = this,
7987
- contentNode = this.contentNode,
7988
- selector = this.selectionDelegate;
8070
+ // Add feature test for user-select CSS property
8071
+ // (currently known to work in all but IE < 10 and Opera)
8072
+ // TODO: The user-select CSS property as of May 2014 is no longer part of
8073
+ // any CSS specification. In IE, -ms-user-select does not do the same thing
8074
+ // as the unselectable attribute on elements; namely, dijit Editor buttons
8075
+ // do not properly prevent the content of the editable content frame from
8076
+ // unblurring. As a result, the -ms- prefixed version is omitted here.
8077
+ has.add("css-user-select", function(global, doc, element){
8078
+ // Avoid exception when dom.js is loaded in non-browser environments
8079
+ if(!element){ return false; }
7989
8080
 
7990
- this._selectionEventQueues = {
7991
- deselect: [],
7992
- select: []
7993
- };
8081
+ var style = element.style;
8082
+ var prefixes = ["Khtml", "O", "Moz", "Webkit"],
8083
+ i = prefixes.length,
8084
+ name = "userSelect";
7994
8085
 
7995
- {
7996
- // Listen for mouse/keyboard actions that should cause selections
7997
- on(contentNode, on.selector(selector, this.selectionEvents), function (event) {
7998
- grid._handleSelect(event, this);
7999
- });
8086
+ // Iterate prefixes from most to least likely
8087
+ do{
8088
+ if(typeof style[name] !== "undefined"){
8089
+ // Supported; return property name
8090
+ return name;
8000
8091
  }
8092
+ }while(i-- && (name = prefixes[i] + "UserSelect"));
8001
8093
 
8002
- // Also hook up spacebar (for ctrl+space)
8003
- if (this.addKeyHandler) {
8004
- this.addKeyHandler(32, function (event) {
8005
- grid._handleSelect(event, event.target);
8006
- });
8007
- }
8094
+ // Not supported if we didn't return before now
8095
+ return false;
8096
+ });
8008
8097
 
8009
- // If allowSelectAll is true, bind ctrl/cmd+A to (de)select all rows,
8010
- // unless the event was received from an editor component.
8011
- // (Handler further checks against _allowSelectAll, which may be updated
8012
- // if selectionMode is changed post-init.)
8013
- if (this.allowSelectAll) {
8014
- this.on('keydown', function (event) {
8015
- if (event[ctrlEquiv] && event.keyCode === 65 &&
8016
- !/\bdgrid-input\b/.test(event.target.className)) {
8017
- event.preventDefault();
8018
- grid[grid.allSelected ? 'clearSelection' : 'selectAll']();
8019
- }
8020
- });
8021
- }
8098
+ /*=====
8099
+ dom.setSelectable = function(node, selectable){
8100
+ // summary:
8101
+ // Enable or disable selection on a node
8102
+ // node: DOMNode|String
8103
+ // id or reference to node
8104
+ // selectable: Boolean
8105
+ // state to put the node in. false indicates unselectable, true
8106
+ // allows selection.
8107
+ // example:
8108
+ // Make the node id="bar" unselectable
8109
+ // | require(["dojo/dom"], function(dom){
8110
+ // | dom.setSelectable("bar");
8111
+ // | });
8112
+ // example:
8113
+ // Make the node id="bar" selectable
8114
+ // | require(["dojo/dom"], function(dom){
8115
+ // | dom.setSelectable("bar", true);
8116
+ // | });
8117
+ };
8118
+ =====*/
8022
8119
 
8023
- // Update aspects if there is a collection change
8024
- if (this._setCollection) {
8025
- this._listeners.push(
8026
- aspect.before(this, '_setCollection', function (collection) {
8027
- grid._updateDeselectionAspect(collection);
8028
- })
8029
- );
8120
+ var cssUserSelect = has("css-user-select");
8121
+ dom.setSelectable = cssUserSelect ? function(node, selectable){
8122
+ // css-user-select returns a (possibly vendor-prefixed) CSS property name
8123
+ dom.byId(node).style[cssUserSelect] = selectable ? "" : "none";
8124
+ } : function(node, selectable){
8125
+ node = dom.byId(node);
8126
+
8127
+ // (IE < 10 / Opera) Fall back to setting/removing the
8128
+ // unselectable attribute on the element and all its children
8129
+ var nodes = node.getElementsByTagName("*"),
8130
+ i = nodes.length;
8131
+
8132
+ if(selectable){
8133
+ node.removeAttribute("unselectable");
8134
+ while(i--){
8135
+ nodes[i].removeAttribute("unselectable");
8030
8136
  }
8031
- this._updateDeselectionAspect();
8032
- },
8137
+ }else {
8138
+ node.setAttribute("unselectable", "on");
8139
+ while(i--){
8140
+ nodes[i].setAttribute("unselectable", "on");
8141
+ }
8142
+ }
8143
+ };
8033
8144
 
8034
- _updateDeselectionAspect: function (collection) {
8035
- // summary:
8036
- // Hooks up logic to handle deselection of removed items.
8037
- // Aspects to a trackable collection's notify method if applicable,
8038
- // or to the list/grid's removeRow method otherwise.
8145
+ return dom;
8146
+ }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
8147
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
8039
8148
 
8040
- var self = this,
8041
- signals;
8042
8149
 
8043
- function ifSelected(rowArg, methodName) {
8044
- // Calls a method if the row corresponding to the object is selected.
8045
- var row = self.row(rowArg),
8046
- selection = row && self.selection[row.id];
8047
- // Is the row currently in the selection list.
8048
- if (selection) {
8049
- self[methodName](row);
8050
- }
8051
- }
8150
+ /***/ }),
8052
8151
 
8053
- // Remove anything previously configured
8054
- if (this._removeDeselectSignals) {
8055
- this._removeDeselectSignals();
8056
- }
8152
+ /***/ 2348:
8153
+ /*!*********************************************!*\
8154
+ !*** ../../node_modules/dgrid/Selection.js ***!
8155
+ \*********************************************/
8156
+ /***/ ((module, exports, __webpack_require__) => {
8057
8157
 
8058
- if (collection && collection.track && this._observeCollection) {
8059
- signals = [
8060
- aspect.before(this, '_observeCollection', function (collection) {
8061
- signals.push(
8062
- collection.on('delete', function (event) {
8063
- if (typeof event.index === 'undefined') {
8064
- // Call deselect on the row if the object is being removed. This allows the
8065
- // deselect event to reference the row element while it still exists in the DOM.
8066
- ifSelected(event.id, 'deselect');
8067
- }
8068
- })
8069
- );
8070
- }),
8071
- aspect.after(this, '_observeCollection', function (collection) {
8072
- signals.push(
8073
- collection.on('update', function (event) {
8074
- if (typeof event.index !== 'undefined') {
8075
- // When List updates an item, the row element is removed and a new one inserted.
8076
- // If at this point the object is still in grid.selection,
8077
- // then call select on the row so the element's CSS is updated.
8078
- ifSelected(collection.getIdentity(event.target), 'select');
8079
- }
8080
- })
8081
- );
8082
- }, true)
8083
- ];
8084
- }
8085
- else {
8086
- signals = [
8087
- aspect.before(this, 'removeRow', function (rowElement, preserveDom) {
8088
- var row;
8089
- if (!preserveDom) {
8090
- row = this.row(rowElement);
8091
- // if it is a real row removal for a selected item, deselect it
8092
- if (row && (row.id in this.selection)) {
8093
- this.deselect(row);
8094
- }
8095
- }
8096
- })
8097
- ];
8098
- }
8158
+ __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
8159
+ __webpack_require__(/*! dojo/_base/declare */ 6345),
8160
+ __webpack_require__(/*! dojo/aspect */ 6566),
8161
+ __webpack_require__(/*! dojo/dom-class */ 8945),
8162
+ __webpack_require__(/*! dojo/mouse */ 8471),
8163
+ __webpack_require__(/*! dojo/on */ 2075),
8164
+ __webpack_require__(/*! dojo/sniff */ 2616),
8165
+ __webpack_require__.dj.h(/*! dojo/has!touch?./util/touch */"touch?5892"),
8166
+ __webpack_require__(/*! dojo/query */ 1172), // for on.selector
8167
+ __webpack_require__(/*! dojo/dom */ 2284) // for has('css-user-select') in 1.8.2+
8168
+ ], __WEBPACK_AMD_DEFINE_RESULT__ = (function (declare, aspect, domClass, mouse, on, has, touchUtil) {
8099
8169
 
8100
- this._removeDeselectSignals = function () {
8101
- for (var i = signals.length; i--;) {
8102
- signals[i].remove();
8103
- }
8104
- signals = [];
8105
- };
8106
- },
8170
+ has.add('dom-comparedocumentposition', function (global, doc, element) {
8171
+ return !!element.compareDocumentPosition;
8172
+ });
8107
8173
 
8108
- allowSelect: function () {
8109
- // summary:
8110
- // A method that can be overriden to determine whether or not a row (or
8111
- // cell) can be selected. By default, all rows (or cells) are selectable.
8112
- // target: Object
8113
- // Row object (for Selection) or Cell object (for CellSelection) for the
8114
- // row/cell in question
8115
- return true;
8116
- },
8174
+ // Add a feature test for the onselectstart event, which offers a more
8175
+ // graceful fallback solution than node.unselectable.
8176
+ has.add('dom-selectstart', typeof document.onselectstart !== 'undefined');
8117
8177
 
8118
- _fireSelectionEvent: function (type) {
8119
- // summary:
8120
- // Fires an event for the accumulated rows once a selection
8121
- // operation is finished (whether singular or for a range)
8178
+ var ctrlEquiv = has('mac') ? 'metaKey' : 'ctrlKey',
8179
+ hasUserSelect = has('css-user-select'),
8180
+ hasPointer = has('pointer'),
8181
+ hasMSPointer = hasPointer && hasPointer.slice(0, 2) === 'MS',
8182
+ downType = hasPointer ? hasPointer + (hasMSPointer ? 'Down' : 'down') : 'mousedown',
8183
+ upType = hasPointer ? hasPointer + (hasMSPointer ? 'Up' : 'up') : 'mouseup';
8122
8184
 
8123
- var queue = this._selectionEventQueues[type],
8124
- triggerEvent = this._selectionTriggerEvent,
8125
- eventObject;
8185
+ if (hasUserSelect === 'WebkitUserSelect' && typeof document.documentElement.style.msUserSelect !== 'undefined') {
8186
+ // Edge defines both webkit and ms prefixes, rendering feature detects as brittle as UA sniffs...
8187
+ hasUserSelect = false;
8188
+ }
8126
8189
 
8127
- eventObject = {
8128
- bubbles: true,
8129
- grid: this
8130
- };
8131
- if (triggerEvent) {
8132
- eventObject.parentType = triggerEvent.type;
8190
+ function makeUnselectable(node, unselectable) {
8191
+ // Utility function used in fallback path for recursively setting unselectable
8192
+ var value = node.unselectable = unselectable ? 'on' : '',
8193
+ elements = node.getElementsByTagName('*'),
8194
+ i = elements.length;
8195
+
8196
+ while (--i) {
8197
+ if (elements[i].tagName === 'INPUT' || elements[i].tagName === 'TEXTAREA') {
8198
+ continue; // Don't prevent text selection in text input fields.
8133
8199
  }
8134
- eventObject[this._selectionTargetType] = queue;
8200
+ elements[i].unselectable = value;
8201
+ }
8202
+ }
8135
8203
 
8136
- // Clear the queue so that the next round of (de)selections starts anew
8137
- this._selectionEventQueues[type] = [];
8204
+ function setSelectable(grid, selectable) {
8205
+ // Alternative version of dojo/dom.setSelectable based on feature detection.
8138
8206
 
8139
- on.emit(this.contentNode, 'dgrid-' + type, eventObject);
8140
- },
8207
+ // For FF < 21, use -moz-none, which will respect -moz-user-select: text on
8208
+ // child elements (e.g. form inputs). In FF 21, none behaves the same.
8209
+ // See https://developer.mozilla.org/en-US/docs/CSS/user-select
8210
+ var node = grid.bodyNode,
8211
+ value = selectable ? 'text' : has('ff') < 21 ? '-moz-none' : 'none';
8141
8212
 
8142
- _fireSelectionEvents: function () {
8143
- var queues = this._selectionEventQueues,
8144
- type;
8213
+ // In IE10+, -ms-user-select: none will block selection from starting within the
8214
+ // element, but will not block an existing selection from entering the element.
8215
+ // When using a modifier key, IE will select text inside of the element as well
8216
+ // as outside of the element, because it thinks the selection started outside.
8217
+ // Therefore, fall back to other means of blocking selection for IE10+.
8218
+ // Newer versions of Dojo do not even report msUserSelect (see https://github.com/dojo/dojo/commit/7ae2a43).
8219
+ if (hasUserSelect && hasUserSelect !== 'msUserSelect') {
8220
+ node.style[hasUserSelect] = value;
8221
+ }
8222
+ else if (has('dom-selectstart')) {
8223
+ // For browsers that don't support user-select but support selectstart (IE<10),
8224
+ // we can hook up an event handler as necessary. Since selectstart bubbles,
8225
+ // it will handle any child elements as well.
8226
+ // Note, however, that both this and the unselectable fallback below are
8227
+ // incapable of preventing text selection from outside the targeted node.
8228
+ if (!selectable && !grid._selectstartHandle) {
8229
+ grid._selectstartHandle = on(node, 'selectstart', function (evt) {
8230
+ var tag = evt.target && evt.target.tagName;
8145
8231
 
8146
- for (type in queues) {
8147
- if (queues[type].length) {
8148
- this._fireSelectionEvent(type);
8149
- }
8232
+ // Prevent selection except where a text input field is involved.
8233
+ if (tag !== 'INPUT' && tag !== 'TEXTAREA') {
8234
+ evt.preventDefault();
8235
+ }
8236
+ });
8150
8237
  }
8151
- },
8152
-
8153
- _select: function (row, toRow, value) {
8154
- // summary:
8155
- // Contains logic for determining whether to select targets, but
8156
- // does not emit events. Called from select, deselect, selectAll,
8157
- // and clearSelection.
8158
-
8159
- var selection,
8160
- previousValue,
8161
- element,
8162
- toElement,
8163
- direction;
8164
-
8165
- if (typeof value === 'undefined') {
8166
- // default to true
8167
- value = true;
8238
+ else if (selectable && grid._selectstartHandle) {
8239
+ grid._selectstartHandle.remove();
8240
+ delete grid._selectstartHandle;
8168
8241
  }
8169
- if (!row.element) {
8170
- row = this.row(row);
8242
+ }
8243
+ else {
8244
+ // For browsers that don't support either user-select or selectstart (Opera),
8245
+ // we need to resort to setting the unselectable attribute on all nodes
8246
+ // involved. Since this doesn't automatically apply to child nodes, we also
8247
+ // need to re-apply it whenever rows are rendered.
8248
+ makeUnselectable(node, !selectable);
8249
+ if (!selectable && !grid._unselectableHandle) {
8250
+ grid._unselectableHandle = aspect.after(grid, 'renderRow', function (row) {
8251
+ makeUnselectable(row, true);
8252
+ return row;
8253
+ });
8254
+ }
8255
+ else if (selectable && grid._unselectableHandle) {
8256
+ grid._unselectableHandle.remove();
8257
+ delete grid._unselectableHandle;
8171
8258
  }
8259
+ }
8260
+ }
8172
8261
 
8173
- // Check whether we're allowed to select the given row before proceeding.
8174
- // If a deselect operation is being performed, this check is skipped,
8175
- // to avoid errors when changing column definitions, and since disabled
8176
- // rows shouldn't ever be selected anyway.
8177
- if (value === false || this.allowSelect(row)) {
8178
- selection = this.selection;
8179
- previousValue = !!selection[row.id];
8180
- if (value === null) {
8181
- // indicates a toggle
8182
- value = !previousValue;
8183
- }
8184
- element = row.element;
8185
- if (!value && !this.allSelected) {
8186
- delete this.selection[row.id];
8187
- }
8188
- else {
8189
- selection[row.id] = value;
8190
- }
8191
- if (element) {
8192
- // add or remove classes as appropriate
8193
- if (value) {
8194
- domClass.add(element, 'dgrid-selected' +
8195
- (this.addUiClasses ? ' ui-state-active' : ''));
8196
- }
8197
- else {
8198
- domClass.remove(element, 'dgrid-selected ui-state-active');
8199
- }
8200
- }
8201
- if (value !== previousValue && element) {
8202
- // add to the queue of row events
8203
- this._selectionEventQueues[(value ? '' : 'de') + 'select'].push(row);
8204
- }
8262
+ return declare(null, {
8263
+ // summary:
8264
+ // Add selection capabilities to a grid. The grid will have a selection property and
8265
+ // fire "dgrid-select" and "dgrid-deselect" events.
8205
8266
 
8206
- if (toRow) {
8207
- if (!toRow.element) {
8208
- toRow = this.row(toRow);
8209
- }
8267
+ // selectionDelegate: String
8268
+ // Selector to delegate to as target of selection events.
8269
+ selectionDelegate: '.dgrid-row',
8210
8270
 
8211
- if (!toRow) {
8212
- this._lastSelected = element;
8213
- console.warn('The selection range has been reset because the ' +
8214
- 'beginning of the selection is no longer in the DOM. ' +
8215
- 'If you are using OnDemandList, you may wish to increase ' +
8216
- 'farOffRemoval to avoid this, but note that keeping more nodes ' +
8217
- 'in the DOM may impact performance.');
8218
- return;
8219
- }
8271
+ // selectionEvents: String|Function
8272
+ // Event (or comma-delimited events, or extension event) to listen on
8273
+ // to trigger select logic.
8274
+ selectionEvents: downType + ',' + upType + ',dgrid-cellfocusin',
8220
8275
 
8221
- toElement = toRow.element;
8222
- if (toElement) {
8223
- direction = this._determineSelectionDirection(element, toElement);
8224
- if (!direction) {
8225
- // The original element was actually replaced
8226
- toElement = document.getElementById(toElement.id);
8227
- direction = this._determineSelectionDirection(element, toElement);
8228
- }
8229
- while (row.element !== toElement && (row = this[direction](row))) {
8230
- this._select(row, null, value);
8231
- }
8232
- }
8233
- }
8234
- }
8235
- },
8276
+ // selectionTouchEvents: String|Function
8277
+ // Event (or comma-delimited events, or extension event) to listen on
8278
+ // in addition to selectionEvents for touch devices.
8279
+ selectionTouchEvents: null,
8236
8280
 
8237
- // Implement _determineSelectionDirection differently based on whether the
8238
- // browser supports element.compareDocumentPosition; use sourceIndex for IE<9
8239
- _determineSelectionDirection: has('dom-comparedocumentposition') ? function (from, to) {
8240
- var result = to.compareDocumentPosition(from);
8241
- if (result & 1) {
8242
- return false; // Out of document
8243
- }
8244
- return result === 2 ? 'down' : 'up';
8245
- } : function (from, to) {
8246
- if (to.sourceIndex < 1) {
8247
- return false; // Out of document
8248
- }
8249
- return to.sourceIndex > from.sourceIndex ? 'down' : 'up';
8250
- },
8281
+ // deselectOnRefresh: Boolean
8282
+ // If true, the selection object will be cleared when refresh is called.
8283
+ deselectOnRefresh: true,
8251
8284
 
8252
- select: function (row, toRow, value) {
8253
- // summary:
8254
- // Selects or deselects the given row or range of rows.
8255
- // row: Mixed
8256
- // Row object (or something that can resolve to one) to (de)select
8257
- // toRow: Mixed
8258
- // If specified, the inclusive range between row and toRow will
8259
- // be (de)selected
8260
- // value: Boolean|Null
8261
- // Whether to select (true/default), deselect (false), or toggle
8262
- // (null) the row
8285
+ // allowSelectAll: Boolean
8286
+ // If true, allow ctrl/cmd+A to select all rows.
8287
+ // Also consulted by the selector plugin for showing select-all checkbox.
8288
+ allowSelectAll: false,
8263
8289
 
8264
- this._select(row, toRow, value);
8265
- this._fireSelectionEvents();
8290
+ // selection:
8291
+ // An object where the property names correspond to
8292
+ // object ids and values are true or false depending on whether an item is selected
8293
+ selection: {},
8294
+
8295
+ // selectionMode: String
8296
+ // The selection mode to use, can be "none", "multiple", "single", or "extended".
8297
+ selectionMode: 'extended',
8298
+
8299
+ // allowTextSelection: Boolean
8300
+ // Whether to still allow text within cells to be selected. The default
8301
+ // behavior is to allow text selection only when selectionMode is none;
8302
+ // setting this property to either true or false will explicitly set the
8303
+ // behavior regardless of selectionMode.
8304
+ allowTextSelection: undefined,
8305
+
8306
+ // _selectionTargetType: String
8307
+ // Indicates the property added to emitted events for selected targets;
8308
+ // overridden in CellSelection
8309
+ _selectionTargetType: 'rows',
8310
+
8311
+ create: function () {
8312
+ this.selection = {};
8313
+ return this.inherited(arguments);
8266
8314
  },
8267
- deselect: function (row, toRow) {
8268
- // summary:
8269
- // Deselects the given row or range of rows.
8270
- // row: Mixed
8271
- // Row object (or something that can resolve to one) to deselect
8272
- // toRow: Mixed
8273
- // If specified, the inclusive range between row and toRow will
8274
- // be deselected
8315
+ postCreate: function () {
8316
+ this.inherited(arguments);
8275
8317
 
8276
- this.select(row, toRow, false);
8318
+ this._initSelectionEvents();
8319
+
8320
+ // Force selectionMode setter to run
8321
+ var selectionMode = this.selectionMode;
8322
+ this.selectionMode = '';
8323
+ this._setSelectionMode(selectionMode);
8277
8324
  },
8278
8325
 
8279
- clearSelection: function (exceptId, dontResetLastSelected) {
8280
- // summary:
8281
- // Deselects any currently-selected items.
8282
- // exceptId: Mixed?
8283
- // If specified, the given id will not be deselected.
8326
+ destroy: function () {
8327
+ this.inherited(arguments);
8284
8328
 
8285
- this.allSelected = false;
8286
- for (var id in this.selection) {
8287
- if (exceptId !== id) {
8288
- this._select(id, null, false);
8289
- }
8329
+ // Remove any extra handles added by Selection.
8330
+ if (this._selectstartHandle) {
8331
+ this._selectstartHandle.remove();
8290
8332
  }
8291
- if (!dontResetLastSelected) {
8292
- this._lastSelected = null;
8333
+ if (this._unselectableHandle) {
8334
+ this._unselectableHandle.remove();
8293
8335
  }
8294
- this._fireSelectionEvents();
8295
- },
8296
- selectAll: function () {
8297
- this.allSelected = true;
8298
- this.selection = {}; // we do this to clear out pages from previous sorts
8299
- for (var i in this._rowIdToObject) {
8300
- var row = this.row(this._rowIdToObject[i]);
8301
- this._select(row.id, null, true);
8336
+ if (this._removeDeselectSignals) {
8337
+ this._removeDeselectSignals();
8302
8338
  }
8303
- this._fireSelectionEvents();
8304
8339
  },
8305
8340
 
8306
- getSelectedCount: function () {
8307
- var count = 0;
8341
+ _setSelectionMode: function (mode) {
8342
+ // summary:
8343
+ // Updates selectionMode, resetting necessary variables.
8308
8344
 
8309
- for (var id in this.selection) {
8310
- if (id) {
8311
- count += 1;
8312
- }
8345
+ if (mode === this.selectionMode) {
8346
+ return;
8313
8347
  }
8314
8348
 
8315
- return count;
8349
+ // Start selection fresh when switching mode.
8350
+ this.clearSelection();
8351
+
8352
+ this.selectionMode = mode;
8353
+
8354
+ // Compute name of selection handler for this mode once
8355
+ // (in the form of _fooSelectionHandler)
8356
+ this._selectionHandlerName = '_' + mode + 'SelectionHandler';
8357
+
8358
+ // Also re-run allowTextSelection setter in case it is in automatic mode.
8359
+ this._setAllowTextSelection(this.allowTextSelection);
8316
8360
  },
8317
8361
 
8318
- isSelected: function (object) {
8319
- // summary:
8320
- // Returns true if the indicated row is selected.
8362
+ _setAllowTextSelection: function (allow) {
8363
+ if (typeof allow !== 'undefined') {
8364
+ setSelectable(this, allow);
8365
+ }
8366
+ else {
8367
+ setSelectable(this, this.selectionMode === 'none');
8368
+ }
8369
+ this.allowTextSelection = allow;
8370
+ },
8321
8371
 
8322
- if (typeof object === 'undefined' || object === null) {
8323
- return false;
8372
+ _handleSelect: function (event, target) {
8373
+ if (mouse.isRight(event)) {
8374
+ return;
8324
8375
  }
8325
- if (!object.element) {
8326
- object = this.row(object);
8376
+
8377
+ // Don't run if selection mode doesn't have a handler (incl. "none"), target can't be selected,
8378
+ // or if coming from a dgrid-cellfocusin from a mousedown
8379
+ if (!this[this._selectionHandlerName] || !this.allowSelect(this.row(target)) ||
8380
+ (event.type === 'dgrid-cellfocusin' && event.parentType === 'mousedown') ||
8381
+ (event.type === upType && target !== this._waitForMouseUp)) {
8382
+ return;
8327
8383
  }
8384
+ this._waitForMouseUp = null;
8385
+ this._selectionTriggerEvent = event;
8328
8386
 
8329
- // First check whether the given row is indicated in the selection hash;
8330
- // failing that, check if allSelected is true (testing against the
8331
- // allowSelect method if possible)
8332
- return (object.id in this.selection) ? !!this.selection[object.id] :
8333
- this.allSelected && (!object.data || this.allowSelect(object));
8387
+ // Don't call select handler for ctrl+navigation
8388
+ if (!event.keyCode || !event.ctrlKey || event.keyCode === 32) {
8389
+ // If clicking a selected item, wait for mouseup so that drag n' drop
8390
+ // is possible without losing our selection
8391
+ if (!event.shiftKey && event.type === downType && this.isSelected(target)) {
8392
+ this._waitForMouseUp = target;
8393
+ }
8394
+ else {
8395
+ this[this._selectionHandlerName](event, target);
8396
+ }
8397
+ }
8398
+ this._selectionTriggerEvent = null;
8334
8399
  },
8335
8400
 
8336
- refresh: function () {
8337
- if (this.deselectOnRefresh) {
8401
+ _singleSelectionHandler: function (event, target) {
8402
+ // summary:
8403
+ // Selection handler for "single" mode, where only one target may be
8404
+ // selected at a time.
8405
+
8406
+ var ctrlKey = event.keyCode ? event.ctrlKey : event[ctrlEquiv];
8407
+ if (this._lastSelected === target) {
8408
+ // Allow ctrl to toggle selection, even within single select mode.
8409
+ this.select(target, null, !ctrlKey || !this.isSelected(target));
8410
+ }
8411
+ else {
8338
8412
  this.clearSelection();
8413
+ this.select(target);
8414
+ this._lastSelected = target;
8339
8415
  }
8340
- this._lastSelected = null;
8341
- return this.inherited(arguments);
8342
8416
  },
8343
8417
 
8344
- renderArray: function () {
8345
- var rows = this.inherited(arguments),
8346
- selection = this.selection,
8347
- i,
8348
- row,
8349
- selected;
8418
+ _multipleSelectionHandler: function (event, target) {
8419
+ // summary:
8420
+ // Selection handler for "multiple" mode, where shift can be held to
8421
+ // select ranges, ctrl/cmd can be held to toggle, and clicks/keystrokes
8422
+ // without modifier keys will add to the current selection.
8350
8423
 
8351
- for (i = 0; i < rows.length; i++) {
8352
- row = this.row(rows[i]);
8353
- selected = row.id in selection ? selection[row.id] : this.allSelected;
8354
- if (selected) {
8355
- this.select(row, null, selected);
8356
- }
8357
- }
8358
- this._fireSelectionEvents();
8359
- return rows;
8360
- }
8361
- });
8362
- }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
8363
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
8424
+ var lastRow = this._lastSelected,
8425
+ ctrlKey = event.keyCode ? event.ctrlKey : event[ctrlEquiv],
8426
+ value;
8364
8427
 
8428
+ if (!event.shiftKey) {
8429
+ // Toggle if ctrl is held; otherwise select
8430
+ value = ctrlKey ? null : true;
8431
+ lastRow = null;
8432
+ }
8433
+ this.select(target, lastRow, value);
8365
8434
 
8366
- /***/ }),
8435
+ if (!lastRow) {
8436
+ // Update reference for potential subsequent shift+select
8437
+ // (current row was already selected above)
8438
+ this._lastSelected = target;
8439
+ }
8440
+ },
8367
8441
 
8368
- /***/ 2573:
8369
- /*!***************************************************!*\
8370
- !*** ../../node_modules/dojo/request/handlers.js ***!
8371
- \***************************************************/
8372
- /***/ ((module, exports, __webpack_require__) => {
8442
+ _extendedSelectionHandler: function (event, target) {
8443
+ // summary:
8444
+ // Selection handler for "extended" mode, which is like multiple mode
8445
+ // except that clicks/keystrokes without modifier keys will clear
8446
+ // the previous selection.
8373
8447
 
8374
- __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
8375
- __webpack_require__(/*! ../json */ 8212),
8376
- __webpack_require__(/*! ../_base/kernel */ 1054),
8377
- __webpack_require__(/*! ../_base/array */ 6974),
8378
- __webpack_require__(/*! ../has */ 6356),
8379
- __webpack_require__(/*! ../../node_modules/dojo-webpack-plugin/lib/NoModule.js */ 8819) // only included for has() qsa tests
8380
- ], __WEBPACK_AMD_DEFINE_RESULT__ = (function(JSON, kernel, array, has){
8381
- has.add('activex', typeof ActiveXObject !== 'undefined');
8382
- has.add('dom-parser', function(global){
8383
- return 'DOMParser' in global;
8384
- });
8448
+ // If the target is already selected, and is the sole selection, ignore a user action
8449
+ // that would simply select the target (causing unnecessary deselect/select).
8450
+ if (!event[ctrlEquiv] && this.isSelected(target) && this.getSelectedCount() === 1) {
8451
+ return;
8452
+ }
8385
8453
 
8386
- var handleXML;
8387
- if(has('activex')){
8388
- // GUIDs obtained from http://msdn.microsoft.com/en-us/library/ms757837(VS.85).aspx
8389
- var dp = [
8390
- 'Msxml2.DOMDocument.6.0',
8391
- 'Msxml2.DOMDocument.4.0',
8392
- 'MSXML2.DOMDocument.3.0',
8393
- 'MSXML.DOMDocument' // 2.0
8394
- ];
8395
- var lastParser;
8454
+ // Clear selection first for right-clicks outside selection and non-ctrl-clicks;
8455
+ // otherwise, extended mode logic is identical to multiple mode
8456
+ if (event.button === 2 ? !this.isSelected(target) :
8457
+ !(event.keyCode ? event.ctrlKey : event[ctrlEquiv])) {
8458
+ this.clearSelection(null, true);
8459
+ }
8460
+ this._multipleSelectionHandler(event, target);
8461
+ },
8396
8462
 
8397
- handleXML = function(response){
8398
- var result = response.data;
8399
- var text = response.text;
8463
+ _toggleSelectionHandler: function (event, target) {
8464
+ // summary:
8465
+ // Selection handler for "toggle" mode which simply toggles the selection
8466
+ // of the given target. Primarily useful for touch input.
8400
8467
 
8401
- if(result && has('dom-qsa2.1') && !result.querySelectorAll && has('dom-parser')){
8402
- // http://bugs.dojotoolkit.org/ticket/15631
8403
- // IE9 supports a CSS3 querySelectorAll implementation, but the DOM implementation
8404
- // returned by IE9 xhr.responseXML does not. Manually create the XML DOM to gain
8405
- // the fuller-featured implementation and avoid bugs caused by the inconsistency
8406
- result = new DOMParser().parseFromString(text, 'application/xml');
8468
+ this.select(target, null, null);
8469
+ },
8470
+
8471
+ _initSelectionEvents: function () {
8472
+ // summary:
8473
+ // Performs first-time hookup of event handlers containing logic
8474
+ // required for selection to operate.
8475
+
8476
+ var grid = this,
8477
+ contentNode = this.contentNode,
8478
+ selector = this.selectionDelegate;
8479
+
8480
+ this._selectionEventQueues = {
8481
+ deselect: [],
8482
+ select: []
8483
+ };
8484
+
8485
+ {
8486
+ // Listen for mouse/keyboard actions that should cause selections
8487
+ on(contentNode, on.selector(selector, this.selectionEvents), function (event) {
8488
+ grid._handleSelect(event, this);
8489
+ });
8407
8490
  }
8408
8491
 
8409
- function createDocument(p) {
8410
- try{
8411
- var dom = new ActiveXObject(p);
8412
- dom.async = false;
8413
- dom.loadXML(text);
8414
- result = dom;
8415
- lastParser = p;
8416
- }catch(e){ return false; }
8417
- return true;
8492
+ // Also hook up spacebar (for ctrl+space)
8493
+ if (this.addKeyHandler) {
8494
+ this.addKeyHandler(32, function (event) {
8495
+ grid._handleSelect(event, event.target);
8496
+ });
8418
8497
  }
8419
8498
 
8420
- if(!result || !result.documentElement){
8421
- // The creation of an ActiveX object is expensive, so we cache the
8422
- // parser type to avoid trying all parser types each time we handle a
8423
- // document. There is some concern that some parser types might fail
8424
- // depending on the document being parsed. If parsing using the cached
8425
- // parser type fails, we do the more expensive operation of finding one
8426
- // that works for the given document.
8427
- // https://bugs.dojotoolkit.org/ticket/15246
8428
- if(!lastParser || !createDocument(lastParser)) {
8429
- array.some(dp, createDocument);
8430
- }
8499
+ // If allowSelectAll is true, bind ctrl/cmd+A to (de)select all rows,
8500
+ // unless the event was received from an editor component.
8501
+ // (Handler further checks against _allowSelectAll, which may be updated
8502
+ // if selectionMode is changed post-init.)
8503
+ if (this.allowSelectAll) {
8504
+ this.on('keydown', function (event) {
8505
+ if (event[ctrlEquiv] && event.keyCode === 65 &&
8506
+ !/\bdgrid-input\b/.test(event.target.className)) {
8507
+ event.preventDefault();
8508
+ grid[grid.allSelected ? 'clearSelection' : 'selectAll']();
8509
+ }
8510
+ });
8431
8511
  }
8432
8512
 
8433
- return result;
8434
- };
8435
- }
8513
+ // Update aspects if there is a collection change
8514
+ if (this._setCollection) {
8515
+ this._listeners.push(
8516
+ aspect.before(this, '_setCollection', function (collection) {
8517
+ grid._updateDeselectionAspect(collection);
8518
+ })
8519
+ );
8520
+ }
8521
+ this._updateDeselectionAspect();
8522
+ },
8436
8523
 
8437
- var handleNativeResponse = function(response) {
8438
- if(!has('native-xhr2-blob') && response.options.handleAs === 'blob' && typeof Blob !== 'undefined'){
8439
- return new Blob([ response.xhr.response ], { type: response.xhr.getResponseHeader('Content-Type') });
8440
- }
8524
+ _updateDeselectionAspect: function (collection) {
8525
+ // summary:
8526
+ // Hooks up logic to handle deselection of removed items.
8527
+ // Aspects to a trackable collection's notify method if applicable,
8528
+ // or to the list/grid's removeRow method otherwise.
8441
8529
 
8442
- return response.xhr.response;
8443
- };
8530
+ var self = this,
8531
+ signals;
8444
8532
 
8445
- var handlers = {
8446
- 'javascript': function(response){
8447
- return kernel.eval(response.text || '');
8533
+ function ifSelected(rowArg, methodName) {
8534
+ // Calls a method if the row corresponding to the object is selected.
8535
+ var row = self.row(rowArg),
8536
+ selection = row && self.selection[row.id];
8537
+ // Is the row currently in the selection list.
8538
+ if (selection) {
8539
+ self[methodName](row);
8540
+ }
8541
+ }
8542
+
8543
+ // Remove anything previously configured
8544
+ if (this._removeDeselectSignals) {
8545
+ this._removeDeselectSignals();
8546
+ }
8547
+
8548
+ if (collection && collection.track && this._observeCollection) {
8549
+ signals = [
8550
+ aspect.before(this, '_observeCollection', function (collection) {
8551
+ signals.push(
8552
+ collection.on('delete', function (event) {
8553
+ if (typeof event.index === 'undefined') {
8554
+ // Call deselect on the row if the object is being removed. This allows the
8555
+ // deselect event to reference the row element while it still exists in the DOM.
8556
+ ifSelected(event.id, 'deselect');
8557
+ }
8558
+ })
8559
+ );
8560
+ }),
8561
+ aspect.after(this, '_observeCollection', function (collection) {
8562
+ signals.push(
8563
+ collection.on('update', function (event) {
8564
+ if (typeof event.index !== 'undefined') {
8565
+ // When List updates an item, the row element is removed and a new one inserted.
8566
+ // If at this point the object is still in grid.selection,
8567
+ // then call select on the row so the element's CSS is updated.
8568
+ ifSelected(collection.getIdentity(event.target), 'select');
8569
+ }
8570
+ })
8571
+ );
8572
+ }, true)
8573
+ ];
8574
+ }
8575
+ else {
8576
+ signals = [
8577
+ aspect.before(this, 'removeRow', function (rowElement, preserveDom) {
8578
+ var row;
8579
+ if (!preserveDom) {
8580
+ row = this.row(rowElement);
8581
+ // if it is a real row removal for a selected item, deselect it
8582
+ if (row && (row.id in this.selection)) {
8583
+ this.deselect(row);
8584
+ }
8585
+ }
8586
+ })
8587
+ ];
8588
+ }
8589
+
8590
+ this._removeDeselectSignals = function () {
8591
+ for (var i = signals.length; i--;) {
8592
+ signals[i].remove();
8593
+ }
8594
+ signals = [];
8595
+ };
8448
8596
  },
8449
- 'json': function(response){
8450
- return JSON.parse(response.text || null);
8597
+
8598
+ allowSelect: function () {
8599
+ // summary:
8600
+ // A method that can be overriden to determine whether or not a row (or
8601
+ // cell) can be selected. By default, all rows (or cells) are selectable.
8602
+ // target: Object
8603
+ // Row object (for Selection) or Cell object (for CellSelection) for the
8604
+ // row/cell in question
8605
+ return true;
8451
8606
  },
8452
- 'xml': handleXML,
8453
- 'blob': handleNativeResponse,
8454
- 'arraybuffer': handleNativeResponse,
8455
- 'document': handleNativeResponse
8456
- };
8457
8607
 
8458
- function handle(response){
8459
- var handler = handlers[response.options.handleAs];
8608
+ _fireSelectionEvent: function (type) {
8609
+ // summary:
8610
+ // Fires an event for the accumulated rows once a selection
8611
+ // operation is finished (whether singular or for a range)
8460
8612
 
8461
- response.data = handler ? handler(response) : (response.data || response.text);
8613
+ var queue = this._selectionEventQueues[type],
8614
+ triggerEvent = this._selectionTriggerEvent,
8615
+ eventObject;
8462
8616
 
8463
- return response;
8464
- }
8617
+ eventObject = {
8618
+ bubbles: true,
8619
+ grid: this
8620
+ };
8621
+ if (triggerEvent) {
8622
+ eventObject.parentType = triggerEvent.type;
8623
+ }
8624
+ eventObject[this._selectionTargetType] = queue;
8465
8625
 
8466
- handle.register = function(name, handler){
8467
- handlers[name] = handler;
8468
- };
8626
+ // Clear the queue so that the next round of (de)selections starts anew
8627
+ this._selectionEventQueues[type] = [];
8469
8628
 
8470
- return handle;
8471
- }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
8472
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
8629
+ on.emit(this.contentNode, 'dgrid-' + type, eventObject);
8630
+ },
8473
8631
 
8632
+ _fireSelectionEvents: function () {
8633
+ var queues = this._selectionEventQueues,
8634
+ type;
8474
8635
 
8475
- /***/ }),
8636
+ for (type in queues) {
8637
+ if (queues[type].length) {
8638
+ this._fireSelectionEvent(type);
8639
+ }
8640
+ }
8641
+ },
8476
8642
 
8477
- /***/ 2616:
8478
- /*!****************************************!*\
8479
- !*** ../../node_modules/dojo/sniff.js ***!
8480
- \****************************************/
8481
- /***/ ((module, exports, __webpack_require__) => {
8643
+ _select: function (row, toRow, value) {
8644
+ // summary:
8645
+ // Contains logic for determining whether to select targets, but
8646
+ // does not emit events. Called from select, deselect, selectAll,
8647
+ // and clearSelection.
8482
8648
 
8483
- __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./has */ 6356)], __WEBPACK_AMD_DEFINE_RESULT__ = (function(has){
8484
- // module:
8485
- // dojo/sniff
8649
+ var selection,
8650
+ previousValue,
8651
+ element,
8652
+ toElement,
8653
+ direction;
8486
8654
 
8487
- /*=====
8488
- return function(){
8489
- // summary:
8490
- // This module sets has() flags based on the current browser.
8491
- // It returns the has() function.
8492
- };
8493
- =====*/
8655
+ if (typeof value === 'undefined') {
8656
+ // default to true
8657
+ value = true;
8658
+ }
8659
+ if (!row.element) {
8660
+ row = this.row(row);
8661
+ }
8494
8662
 
8495
- if(has("host-browser")){
8496
- var n = navigator,
8497
- dua = n.userAgent,
8498
- dav = n.appVersion,
8499
- tv = parseFloat(dav);
8500
- has.add("air", dua.indexOf("AdobeAIR") >= 0);
8501
- has.add("wp", parseFloat(dua.split("Windows Phone")[1]) || undefined);
8502
- has.add("msapp", parseFloat(dua.split("MSAppHost/")[1]) || undefined);
8503
- has.add("khtml", dav.indexOf("Konqueror") >= 0 ? tv : undefined);
8504
- has.add("edge", parseFloat(dua.split("Edge/")[1]) || undefined);
8505
- has.add("opr", parseFloat(dua.split("OPR/")[1]) || undefined);
8506
- // NOTE: https://dev.opera.com/blog/opera-user-agent-strings-opera-15-and-beyond/
8507
- has.add("webkit", !has("wp") // NOTE: necessary since Windows Phone 8.1 Update 1, see #18540
8508
- && !has("edge") && parseFloat(dua.split("WebKit/")[1]) || undefined);
8509
- has.add("chrome", !has("edge") && !has("opr")
8510
- && parseFloat(dua.split("Chrome/")[1]) || undefined);
8511
- has.add("android", !has("wp") // NOTE: necessary since Windows Phone 8.1 Update 1, see #18528
8512
- && parseFloat(dua.split("Android ")[1]) || undefined);
8513
- has.add("safari", dav.indexOf("Safari") >= 0
8514
- && !has("wp") // NOTE: necessary since Windows Phone 8.1 Update 1, see #18540
8515
- && !has("chrome") && !has("android") && !has("edge") && !has("opr") ?
8516
- parseFloat(dav.split("Version/")[1]) : undefined);
8517
- has.add("mac", dav.indexOf("Macintosh") >= 0);
8518
- has.add("quirks", document.compatMode == "BackCompat");
8519
- if(!has("wp") // NOTE: necessary since Windows Phone 8.1 Update 1, see #18528
8520
- && dua.match(/(iPhone|iPod|iPad)/)){
8521
- var p = RegExp.$1.replace(/P/, "p");
8522
- var v = dua.match(/OS ([\d_]+)/) ? RegExp.$1 : "1";
8523
- var os = parseFloat(v.replace(/_/, ".").replace(/_/g, ""));
8524
- has.add(p, os); // "iphone", "ipad" or "ipod"
8525
- has.add("ios", os);
8526
- }
8527
- has.add("bb", (dua.indexOf("BlackBerry") >= 0 || dua.indexOf("BB10") >= 0) && parseFloat(dua.split("Version/")[1]) || undefined);
8528
- has.add("trident", parseFloat(dav.split("Trident/")[1]) || undefined);
8663
+ // Check whether we're allowed to select the given row before proceeding.
8664
+ // If a deselect operation is being performed, this check is skipped,
8665
+ // to avoid errors when changing column definitions, and since disabled
8666
+ // rows shouldn't ever be selected anyway.
8667
+ if (value === false || this.allowSelect(row)) {
8668
+ selection = this.selection;
8669
+ previousValue = !!selection[row.id];
8670
+ if (value === null) {
8671
+ // indicates a toggle
8672
+ value = !previousValue;
8673
+ }
8674
+ element = row.element;
8675
+ if (!value && !this.allSelected) {
8676
+ delete this.selection[row.id];
8677
+ }
8678
+ else {
8679
+ selection[row.id] = value;
8680
+ }
8681
+ if (element) {
8682
+ // add or remove classes as appropriate
8683
+ if (value) {
8684
+ domClass.add(element, 'dgrid-selected' +
8685
+ (this.addUiClasses ? ' ui-state-active' : ''));
8686
+ }
8687
+ else {
8688
+ domClass.remove(element, 'dgrid-selected ui-state-active');
8689
+ }
8690
+ }
8691
+ if (value !== previousValue && element) {
8692
+ // add to the queue of row events
8693
+ this._selectionEventQueues[(value ? '' : 'de') + 'select'].push(row);
8694
+ }
8529
8695
 
8530
- has.add("svg", typeof SVGAngle !== "undefined");
8696
+ if (toRow) {
8697
+ if (!toRow.element) {
8698
+ toRow = this.row(toRow);
8699
+ }
8531
8700
 
8532
- if(!has("webkit")){
8533
- // Opera
8534
- if(dua.indexOf("Opera") >= 0){
8535
- // see http://dev.opera.com/articles/view/opera-ua-string-changes and http://www.useragentstring.com/pages/Opera/
8536
- // 9.8 has both styles; <9.8, 9.9 only old style
8537
- has.add("opera", tv >= 9.8 ? parseFloat(dua.split("Version/")[1]) || tv : tv);
8701
+ if (!toRow) {
8702
+ this._lastSelected = element;
8703
+ console.warn('The selection range has been reset because the ' +
8704
+ 'beginning of the selection is no longer in the DOM. ' +
8705
+ 'If you are using OnDemandList, you may wish to increase ' +
8706
+ 'farOffRemoval to avoid this, but note that keeping more nodes ' +
8707
+ 'in the DOM may impact performance.');
8708
+ return;
8709
+ }
8710
+
8711
+ toElement = toRow.element;
8712
+ if (toElement) {
8713
+ direction = this._determineSelectionDirection(element, toElement);
8714
+ if (!direction) {
8715
+ // The original element was actually replaced
8716
+ toElement = document.getElementById(toElement.id);
8717
+ direction = this._determineSelectionDirection(element, toElement);
8718
+ }
8719
+ while (row.element !== toElement && (row = this[direction](row))) {
8720
+ this._select(row, null, value);
8721
+ }
8722
+ }
8723
+ }
8538
8724
  }
8725
+ },
8539
8726
 
8540
- // Mozilla and firefox
8541
- if(dua.indexOf("Gecko") >= 0 && !has("wp") // NOTE: necessary since Windows Phone 8.1 Update 1
8542
- && !has("khtml") && !has("trident") && !has("edge")){
8543
- has.add("mozilla", tv);
8727
+ // Implement _determineSelectionDirection differently based on whether the
8728
+ // browser supports element.compareDocumentPosition; use sourceIndex for IE<9
8729
+ _determineSelectionDirection: has('dom-comparedocumentposition') ? function (from, to) {
8730
+ var result = to.compareDocumentPosition(from);
8731
+ if (result & 1) {
8732
+ return false; // Out of document
8544
8733
  }
8545
- if(has("mozilla")){
8546
- //We really need to get away from this. Consider a sane isGecko approach for the future.
8547
- has.add("ff", parseFloat(dua.split("Firefox/")[1] || dua.split("Minefield/")[1]) || undefined);
8734
+ return result === 2 ? 'down' : 'up';
8735
+ } : function (from, to) {
8736
+ if (to.sourceIndex < 1) {
8737
+ return false; // Out of document
8548
8738
  }
8739
+ return to.sourceIndex > from.sourceIndex ? 'down' : 'up';
8740
+ },
8549
8741
 
8550
- // IE
8551
- if(document.all && !has("opera")){
8552
- var isIE = parseFloat(dav.split("MSIE ")[1]) || undefined;
8742
+ select: function (row, toRow, value) {
8743
+ // summary:
8744
+ // Selects or deselects the given row or range of rows.
8745
+ // row: Mixed
8746
+ // Row object (or something that can resolve to one) to (de)select
8747
+ // toRow: Mixed
8748
+ // If specified, the inclusive range between row and toRow will
8749
+ // be (de)selected
8750
+ // value: Boolean|Null
8751
+ // Whether to select (true/default), deselect (false), or toggle
8752
+ // (null) the row
8553
8753
 
8554
- //In cases where the page has an HTTP header or META tag with
8555
- //X-UA-Compatible, then it is in emulation mode.
8556
- //Make sure isIE reflects the desired version.
8557
- //document.documentMode of 5 means quirks mode.
8558
- //Only switch the value if documentMode's major version
8559
- //is different from isIE's major version.
8560
- var mode = document.documentMode;
8561
- if(mode && mode != 5 && Math.floor(isIE) != mode){
8562
- isIE = mode;
8754
+ this._select(row, toRow, value);
8755
+ this._fireSelectionEvents();
8756
+ },
8757
+ deselect: function (row, toRow) {
8758
+ // summary:
8759
+ // Deselects the given row or range of rows.
8760
+ // row: Mixed
8761
+ // Row object (or something that can resolve to one) to deselect
8762
+ // toRow: Mixed
8763
+ // If specified, the inclusive range between row and toRow will
8764
+ // be deselected
8765
+
8766
+ this.select(row, toRow, false);
8767
+ },
8768
+
8769
+ clearSelection: function (exceptId, dontResetLastSelected) {
8770
+ // summary:
8771
+ // Deselects any currently-selected items.
8772
+ // exceptId: Mixed?
8773
+ // If specified, the given id will not be deselected.
8774
+
8775
+ this.allSelected = false;
8776
+ for (var id in this.selection) {
8777
+ if (exceptId !== id) {
8778
+ this._select(id, null, false);
8779
+ }
8780
+ }
8781
+ if (!dontResetLastSelected) {
8782
+ this._lastSelected = null;
8783
+ }
8784
+ this._fireSelectionEvents();
8785
+ },
8786
+ selectAll: function () {
8787
+ this.allSelected = true;
8788
+ this.selection = {}; // we do this to clear out pages from previous sorts
8789
+ for (var i in this._rowIdToObject) {
8790
+ var row = this.row(this._rowIdToObject[i]);
8791
+ this._select(row.id, null, true);
8792
+ }
8793
+ this._fireSelectionEvents();
8794
+ },
8795
+
8796
+ getSelectedCount: function () {
8797
+ var count = 0;
8798
+
8799
+ for (var id in this.selection) {
8800
+ if (id) {
8801
+ count += 1;
8563
8802
  }
8803
+ }
8564
8804
 
8565
- has.add("ie", isIE);
8805
+ return count;
8806
+ },
8807
+
8808
+ isSelected: function (object) {
8809
+ // summary:
8810
+ // Returns true if the indicated row is selected.
8811
+
8812
+ if (typeof object === 'undefined' || object === null) {
8813
+ return false;
8814
+ }
8815
+ if (!object.element) {
8816
+ object = this.row(object);
8566
8817
  }
8567
8818
 
8568
- // Wii
8569
- has.add("wii", typeof opera != "undefined" && opera.wiiremote);
8570
- }
8571
- }
8819
+ // First check whether the given row is indicated in the selection hash;
8820
+ // failing that, check if allSelected is true (testing against the
8821
+ // allowSelect method if possible)
8822
+ return (object.id in this.selection) ? !!this.selection[object.id] :
8823
+ this.allSelected && (!object.data || this.allowSelect(object));
8824
+ },
8572
8825
 
8573
- return has;
8826
+ refresh: function () {
8827
+ if (this.deselectOnRefresh) {
8828
+ this.clearSelection();
8829
+ }
8830
+ this._lastSelected = null;
8831
+ return this.inherited(arguments);
8832
+ },
8833
+
8834
+ renderArray: function () {
8835
+ var rows = this.inherited(arguments),
8836
+ selection = this.selection,
8837
+ i,
8838
+ row,
8839
+ selected;
8840
+
8841
+ for (i = 0; i < rows.length; i++) {
8842
+ row = this.row(rows[i]);
8843
+ selected = row.id in selection ? selection[row.id] : this.allSelected;
8844
+ if (selected) {
8845
+ this.select(row, null, selected);
8846
+ }
8847
+ }
8848
+ this._fireSelectionEvents();
8849
+ return rows;
8850
+ }
8851
+ });
8852
+ }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
8853
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
8854
+
8855
+
8856
+ /***/ }),
8857
+
8858
+ /***/ 2573:
8859
+ /*!***************************************************!*\
8860
+ !*** ../../node_modules/dojo/request/handlers.js ***!
8861
+ \***************************************************/
8862
+ /***/ ((module, exports, __webpack_require__) => {
8863
+
8864
+ __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
8865
+ __webpack_require__(/*! ../json */ 8212),
8866
+ __webpack_require__(/*! ../_base/kernel */ 1054),
8867
+ __webpack_require__(/*! ../_base/array */ 6974),
8868
+ __webpack_require__(/*! ../has */ 6356),
8869
+ __webpack_require__(/*! ../../node_modules/dojo-webpack-plugin/lib/NoModule.js */ 8819) // only included for has() qsa tests
8870
+ ], __WEBPACK_AMD_DEFINE_RESULT__ = (function(JSON, kernel, array, has){
8871
+ has.add('activex', typeof ActiveXObject !== 'undefined');
8872
+ has.add('dom-parser', function(global){
8873
+ return 'DOMParser' in global;
8874
+ });
8875
+
8876
+ var handleXML;
8877
+ if(has('activex')){
8878
+ // GUIDs obtained from http://msdn.microsoft.com/en-us/library/ms757837(VS.85).aspx
8879
+ var dp = [
8880
+ 'Msxml2.DOMDocument.6.0',
8881
+ 'Msxml2.DOMDocument.4.0',
8882
+ 'MSXML2.DOMDocument.3.0',
8883
+ 'MSXML.DOMDocument' // 2.0
8884
+ ];
8885
+ var lastParser;
8886
+
8887
+ handleXML = function(response){
8888
+ var result = response.data;
8889
+ var text = response.text;
8890
+
8891
+ if(result && has('dom-qsa2.1') && !result.querySelectorAll && has('dom-parser')){
8892
+ // http://bugs.dojotoolkit.org/ticket/15631
8893
+ // IE9 supports a CSS3 querySelectorAll implementation, but the DOM implementation
8894
+ // returned by IE9 xhr.responseXML does not. Manually create the XML DOM to gain
8895
+ // the fuller-featured implementation and avoid bugs caused by the inconsistency
8896
+ result = new DOMParser().parseFromString(text, 'application/xml');
8897
+ }
8898
+
8899
+ function createDocument(p) {
8900
+ try{
8901
+ var dom = new ActiveXObject(p);
8902
+ dom.async = false;
8903
+ dom.loadXML(text);
8904
+ result = dom;
8905
+ lastParser = p;
8906
+ }catch(e){ return false; }
8907
+ return true;
8908
+ }
8909
+
8910
+ if(!result || !result.documentElement){
8911
+ // The creation of an ActiveX object is expensive, so we cache the
8912
+ // parser type to avoid trying all parser types each time we handle a
8913
+ // document. There is some concern that some parser types might fail
8914
+ // depending on the document being parsed. If parsing using the cached
8915
+ // parser type fails, we do the more expensive operation of finding one
8916
+ // that works for the given document.
8917
+ // https://bugs.dojotoolkit.org/ticket/15246
8918
+ if(!lastParser || !createDocument(lastParser)) {
8919
+ array.some(dp, createDocument);
8920
+ }
8921
+ }
8922
+
8923
+ return result;
8924
+ };
8925
+ }
8926
+
8927
+ var handleNativeResponse = function(response) {
8928
+ if(!has('native-xhr2-blob') && response.options.handleAs === 'blob' && typeof Blob !== 'undefined'){
8929
+ return new Blob([ response.xhr.response ], { type: response.xhr.getResponseHeader('Content-Type') });
8930
+ }
8931
+
8932
+ return response.xhr.response;
8933
+ };
8934
+
8935
+ var handlers = {
8936
+ 'javascript': function(response){
8937
+ return kernel.eval(response.text || '');
8938
+ },
8939
+ 'json': function(response){
8940
+ return JSON.parse(response.text || null);
8941
+ },
8942
+ 'xml': handleXML,
8943
+ 'blob': handleNativeResponse,
8944
+ 'arraybuffer': handleNativeResponse,
8945
+ 'document': handleNativeResponse
8946
+ };
8947
+
8948
+ function handle(response){
8949
+ var handler = handlers[response.options.handleAs];
8950
+
8951
+ response.data = handler ? handler(response) : (response.data || response.text);
8952
+
8953
+ return response;
8954
+ }
8955
+
8956
+ handle.register = function(name, handler){
8957
+ handlers[name] = handler;
8958
+ };
8959
+
8960
+ return handle;
8961
+ }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
8962
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
8963
+
8964
+
8965
+ /***/ }),
8966
+
8967
+ /***/ 2616:
8968
+ /*!****************************************!*\
8969
+ !*** ../../node_modules/dojo/sniff.js ***!
8970
+ \****************************************/
8971
+ /***/ ((module, exports, __webpack_require__) => {
8972
+
8973
+ __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./has */ 6356)], __WEBPACK_AMD_DEFINE_RESULT__ = (function(has){
8974
+ // module:
8975
+ // dojo/sniff
8976
+
8977
+ /*=====
8978
+ return function(){
8979
+ // summary:
8980
+ // This module sets has() flags based on the current browser.
8981
+ // It returns the has() function.
8982
+ };
8983
+ =====*/
8984
+
8985
+ if(has("host-browser")){
8986
+ var n = navigator,
8987
+ dua = n.userAgent,
8988
+ dav = n.appVersion,
8989
+ tv = parseFloat(dav);
8990
+ has.add("air", dua.indexOf("AdobeAIR") >= 0);
8991
+ has.add("wp", parseFloat(dua.split("Windows Phone")[1]) || undefined);
8992
+ has.add("msapp", parseFloat(dua.split("MSAppHost/")[1]) || undefined);
8993
+ has.add("khtml", dav.indexOf("Konqueror") >= 0 ? tv : undefined);
8994
+ has.add("edge", parseFloat(dua.split("Edge/")[1]) || undefined);
8995
+ has.add("opr", parseFloat(dua.split("OPR/")[1]) || undefined);
8996
+ // NOTE: https://dev.opera.com/blog/opera-user-agent-strings-opera-15-and-beyond/
8997
+ has.add("webkit", !has("wp") // NOTE: necessary since Windows Phone 8.1 Update 1, see #18540
8998
+ && !has("edge") && parseFloat(dua.split("WebKit/")[1]) || undefined);
8999
+ has.add("chrome", !has("edge") && !has("opr")
9000
+ && parseFloat(dua.split("Chrome/")[1]) || undefined);
9001
+ has.add("android", !has("wp") // NOTE: necessary since Windows Phone 8.1 Update 1, see #18528
9002
+ && parseFloat(dua.split("Android ")[1]) || undefined);
9003
+ has.add("safari", dav.indexOf("Safari") >= 0
9004
+ && !has("wp") // NOTE: necessary since Windows Phone 8.1 Update 1, see #18540
9005
+ && !has("chrome") && !has("android") && !has("edge") && !has("opr") ?
9006
+ parseFloat(dav.split("Version/")[1]) : undefined);
9007
+ has.add("mac", dav.indexOf("Macintosh") >= 0);
9008
+ has.add("quirks", document.compatMode == "BackCompat");
9009
+ if(!has("wp") // NOTE: necessary since Windows Phone 8.1 Update 1, see #18528
9010
+ && dua.match(/(iPhone|iPod|iPad)/)){
9011
+ var p = RegExp.$1.replace(/P/, "p");
9012
+ var v = dua.match(/OS ([\d_]+)/) ? RegExp.$1 : "1";
9013
+ var os = parseFloat(v.replace(/_/, ".").replace(/_/g, ""));
9014
+ has.add(p, os); // "iphone", "ipad" or "ipod"
9015
+ has.add("ios", os);
9016
+ }
9017
+ has.add("bb", (dua.indexOf("BlackBerry") >= 0 || dua.indexOf("BB10") >= 0) && parseFloat(dua.split("Version/")[1]) || undefined);
9018
+ has.add("trident", parseFloat(dav.split("Trident/")[1]) || undefined);
9019
+
9020
+ has.add("svg", typeof SVGAngle !== "undefined");
9021
+
9022
+ if(!has("webkit")){
9023
+ // Opera
9024
+ if(dua.indexOf("Opera") >= 0){
9025
+ // see http://dev.opera.com/articles/view/opera-ua-string-changes and http://www.useragentstring.com/pages/Opera/
9026
+ // 9.8 has both styles; <9.8, 9.9 only old style
9027
+ has.add("opera", tv >= 9.8 ? parseFloat(dua.split("Version/")[1]) || tv : tv);
9028
+ }
9029
+
9030
+ // Mozilla and firefox
9031
+ if(dua.indexOf("Gecko") >= 0 && !has("wp") // NOTE: necessary since Windows Phone 8.1 Update 1
9032
+ && !has("khtml") && !has("trident") && !has("edge")){
9033
+ has.add("mozilla", tv);
9034
+ }
9035
+ if(has("mozilla")){
9036
+ //We really need to get away from this. Consider a sane isGecko approach for the future.
9037
+ has.add("ff", parseFloat(dua.split("Firefox/")[1] || dua.split("Minefield/")[1]) || undefined);
9038
+ }
9039
+
9040
+ // IE
9041
+ if(document.all && !has("opera")){
9042
+ var isIE = parseFloat(dav.split("MSIE ")[1]) || undefined;
9043
+
9044
+ //In cases where the page has an HTTP header or META tag with
9045
+ //X-UA-Compatible, then it is in emulation mode.
9046
+ //Make sure isIE reflects the desired version.
9047
+ //document.documentMode of 5 means quirks mode.
9048
+ //Only switch the value if documentMode's major version
9049
+ //is different from isIE's major version.
9050
+ var mode = document.documentMode;
9051
+ if(mode && mode != 5 && Math.floor(isIE) != mode){
9052
+ isIE = mode;
9053
+ }
9054
+
9055
+ has.add("ie", isIE);
9056
+ }
9057
+
9058
+ // Wii
9059
+ has.add("wii", typeof opera != "undefined" && opera.wiiremote);
9060
+ }
9061
+ }
9062
+
9063
+ return has;
8574
9064
  }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
8575
9065
  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
8576
9066
 
@@ -9356,7 +9846,7 @@ function requireDist () {
9356
9846
  exports.BUILD_VERSION = exports.PKG_VERSION = exports.PKG_NAME = void 0;
9357
9847
  exports.PKG_NAME = "@hpcc-js/dgrid-shim";
9358
9848
  exports.PKG_VERSION = "2.26.0";
9359
- exports.BUILD_VERSION = "2.108.2";
9849
+ exports.BUILD_VERSION = "2.108.4";
9360
9850
 
9361
9851
 
9362
9852
  /***/ }),
@@ -26537,1000 +27027,510 @@ function requireDist () {
26537
27027
  promise = dfd.promise;
26538
27028
  }
26539
27029
 
26540
- promise.otherwise(function (err) {
26541
- emitError.call(self, err);
26542
- });
26543
- return promise;
26544
- },
26545
-
26546
- removeRow: function (rowElement, preserveDom, options) {
26547
- var row = {element: rowElement};
26548
- // Check to see if we are now empty...
26549
- if (!preserveDom && (this.up(row).element === rowElement) && (this.down(row).element === rowElement)) {
26550
- // ...we are empty, so show the no data message.
26551
- this._insertNoDataNode();
26552
- }
26553
-
26554
- var rows = (options && options.rows) || this._rows;
26555
- if (rows) {
26556
- delete rows[rowElement.rowIndex];
26557
- }
26558
-
26559
- return this.inherited(arguments);
26560
- },
26561
-
26562
- renderQueryResults: function (results, beforeNode, options) {
26563
- // summary:
26564
- // Renders objects from QueryResults as rows, before the given node.
26565
-
26566
- options = lang.mixin({ rows: this._rows }, options);
26567
- var self = this;
26568
-
26569
- if (!has('dojo-built')) {
26570
- // Check for null/undefined totalResults to help diagnose faulty services/stores
26571
- results.totalLength.then(function (total) {
26572
- if (total == null) {
26573
- console.warn('Store reported null or undefined totalLength. ' +
26574
- 'Make sure your store (and service, if applicable) are reporting total correctly!');
26575
- }
26576
- });
26577
- }
26578
-
26579
- return results.then(function (resolvedResults) {
26580
- var resolvedRows = self.renderArray(resolvedResults, beforeNode, options);
26581
- delete self._lastCollection; // used only for non-store List/Grid
26582
- return resolvedRows;
26583
- });
26584
- },
26585
-
26586
- _observeCollection: function (collection, container, options) {
26587
- var self = this,
26588
- rows = options.rows,
26589
- row;
26590
-
26591
- var handles = [
26592
- collection.on('delete, update', function (event) {
26593
- var from = event.previousIndex;
26594
- var to = event.index;
26595
-
26596
- if (from !== undefined && rows[from]) {
26597
- if ('max' in rows && (to === undefined || to < rows.min || to > rows.max)) {
26598
- rows.max--;
26599
- }
26600
-
26601
- // max should never be less than zero; if it is the logic in the 'add, update' handler
26602
- // below will prevent insertion of rows (https://github.com/SitePen/dgrid/issues/1305)
26603
- if (rows.max < 0) {
26604
- rows.max = 0;
26605
- }
26606
-
26607
- row = rows[from];
26608
-
26609
- // check to make the sure the node is still there before we try to remove it
26610
- // (in case it was moved to a different place in the DOM)
26611
- if (row.parentNode === container) {
26612
- self.removeRow(row, false, options);
26613
- }
26614
-
26615
- // remove the old slot
26616
- rows.splice(from, 1);
26617
-
26618
- if (event.type === 'delete' ||
26619
- (event.type === 'update' && (from < to || to === undefined))) {
26620
- // adjust the rowIndex so adjustRowIndices has the right starting point
26621
- rows[from] && rows[from].rowIndex--;
26622
- }
26623
- }
26624
- if (event.type === 'delete') {
26625
- // Reset row in case this is later followed by an add;
26626
- // only update events should retain the row variable below
26627
- row = null;
26628
- }
26629
- }),
26630
-
26631
- collection.on('add, update', function (event) {
26632
- var from = event.previousIndex;
26633
- var to = event.index;
26634
- var nextNode;
26635
-
26636
- function advanceNext() {
26637
- nextNode = (nextNode.connected || nextNode).nextSibling;
26638
- }
26639
-
26640
- // When possible, restrict observations to the actually rendered range
26641
- if (to !== undefined && (!('max' in rows) || (to >= rows.min && to <= rows.max))) {
26642
- if ('max' in rows && (from === undefined || from < rows.min || from > rows.max)) {
26643
- rows.max++;
26644
- }
26645
- // Add to new slot (either before an existing row, or at the end)
26646
- // First determine the DOM node that this should be placed before.
26647
- if (rows.length) {
26648
- nextNode = rows[to];
26649
- if (!nextNode) {
26650
- nextNode = rows[to - 1];
26651
- if (nextNode) {
26652
- // Make sure to skip connected nodes, so we don't accidentally
26653
- // insert a row in between a parent and its children.
26654
- advanceNext();
26655
- }
26656
- }
26657
- }
26658
- else {
26659
- // There are no rows. Allow for subclasses to insert new rows somewhere other than
26660
- // at the end of the parent node.
26661
- nextNode = self._getFirstRowSibling && self._getFirstRowSibling(container);
26662
- }
26663
- // Make sure we don't trip over a stale reference to a
26664
- // node that was removed, or try to place a node before
26665
- // itself (due to overlapped queries)
26666
- if (row && nextNode && row.id === nextNode.id) {
26667
- advanceNext();
26668
- }
26669
- if (nextNode && !nextNode.parentNode) {
26670
- nextNode = document.getElementById(nextNode.id);
26671
- }
26672
- rows.splice(to, 0, undefined);
26673
- row = self.insertRow(event.target, container, nextNode, to, options);
26674
- self.highlightRow(row);
26675
- }
26676
- // Reset row so it doesn't get reused on the next event
26677
- row = null;
26678
- }),
26679
-
26680
- collection.on('add, delete, update', function (event) {
26681
- var from = (typeof event.previousIndex !== 'undefined') ? event.previousIndex : Infinity,
26682
- to = (typeof event.index !== 'undefined') ? event.index : Infinity,
26683
- adjustAtIndex = Math.min(from, to);
26684
- from !== to && rows[adjustAtIndex] && self.adjustRowIndices(rows[adjustAtIndex]);
26685
-
26686
- // the removal of rows could cause us to need to page in more items
26687
- if (from !== Infinity && self._processScroll && (rows[from] || rows[from - 1])) {
26688
- self._processScroll();
26689
- }
26690
-
26691
- // Fire _onNotification, even for out-of-viewport notifications,
26692
- // since some things may still need to update (e.g. Pagination's status/navigation)
26693
- self._onNotification(rows, event, collection);
26694
-
26695
- // Update _total after _onNotification so that it can potentially
26696
- // decide whether to perform actions based on whether the total changed
26697
- if (collection === self._renderedCollection && 'totalLength' in event) {
26698
- self._total = event.totalLength;
26699
- }
26700
- })
26701
- ];
26702
-
26703
- return {
26704
- remove: function () {
26705
- while (handles.length > 0) {
26706
- handles.pop().remove();
26707
- }
26708
- }
26709
- };
26710
- },
26711
-
26712
- _onNotification: function () {
26713
- // summary:
26714
- // Protected method called whenever a store notification is observed.
26715
- // Intended to be extended as necessary by mixins/extensions.
26716
- // rows: Array
26717
- // A sparse array of row nodes corresponding to data objects in the collection.
26718
- // event: Object
26719
- // The notification event
26720
- // collection: Object
26721
- // The collection that the notification is relevant to.
26722
- // Useful for distinguishing child-level from top-level notifications.
26723
- }
26724
- });
26725
- }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
26726
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
26727
-
26728
-
26729
- /***/ }),
26730
-
26731
- /***/ 8471:
26732
- /*!****************************************!*\
26733
- !*** ../../node_modules/dojo/mouse.js ***!
26734
- \****************************************/
26735
- /***/ ((module, exports, __webpack_require__) => {
26736
-
26737
- __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./_base/kernel */ 1054), __webpack_require__(/*! ./on */ 2075), __webpack_require__(/*! ./has */ 6356), __webpack_require__(/*! ./dom */ 2284), __webpack_require__(/*! ./_base/window */ 5075)], __WEBPACK_AMD_DEFINE_RESULT__ = (function(dojo, on, has, dom, win){
26738
-
26739
- // module:
26740
- // dojo/mouse
26741
-
26742
- has.add("dom-quirks", win.doc && win.doc.compatMode == "BackCompat");
26743
- has.add("events-mouseenter", win.doc && "onmouseenter" in win.doc.createElement("div"));
26744
- has.add("events-mousewheel", win.doc && 'onmousewheel' in win.doc);
26745
-
26746
- var mouseButtons;
26747
- if((has("dom-quirks") && has("ie")) || !has("dom-addeventlistener")){
26748
- mouseButtons = {
26749
- LEFT: 1,
26750
- MIDDLE: 4,
26751
- RIGHT: 2,
26752
- // helper functions
26753
- isButton: function(e, button){ return e.button & button; },
26754
- isLeft: function(e){ return e.button & 1; },
26755
- isMiddle: function(e){ return e.button & 4; },
26756
- isRight: function(e){ return e.button & 2; }
26757
- };
26758
- }else {
26759
- mouseButtons = {
26760
- LEFT: 0,
26761
- MIDDLE: 1,
26762
- RIGHT: 2,
26763
- // helper functions
26764
- isButton: function(e, button){ return e.button == button; },
26765
- isLeft: function(e){ return e.button == 0; },
26766
- isMiddle: function(e){ return e.button == 1; },
26767
- isRight: function(e){ return e.button == 2; }
26768
- };
26769
- }
26770
- dojo.mouseButtons = mouseButtons;
26771
-
26772
- /*=====
26773
- dojo.mouseButtons = {
26774
- // LEFT: Number
26775
- // Numeric value of the left mouse button for the platform.
26776
- LEFT: 0,
26777
- // MIDDLE: Number
26778
- // Numeric value of the middle mouse button for the platform.
26779
- MIDDLE: 1,
26780
- // RIGHT: Number
26781
- // Numeric value of the right mouse button for the platform.
26782
- RIGHT: 2,
26783
-
26784
- isButton: function(e, button){
26785
- // summary:
26786
- // Checks an event object for a pressed button
26787
- // e: Event
26788
- // Event object to examine
26789
- // button: Number
26790
- // The button value (example: dojo.mouseButton.LEFT)
26791
- return e.button == button; // Boolean
26792
- },
26793
- isLeft: function(e){
26794
- // summary:
26795
- // Checks an event object for the pressed left button
26796
- // e: Event
26797
- // Event object to examine
26798
- return e.button == 0; // Boolean
26799
- },
26800
- isMiddle: function(e){
26801
- // summary:
26802
- // Checks an event object for the pressed middle button
26803
- // e: Event
26804
- // Event object to examine
26805
- return e.button == 1; // Boolean
26806
- },
26807
- isRight: function(e){
26808
- // summary:
26809
- // Checks an event object for the pressed right button
26810
- // e: Event
26811
- // Event object to examine
26812
- return e.button == 2; // Boolean
26813
- }
26814
- };
26815
- =====*/
26816
-
26817
- function eventHandler(type, selectHandler){
26818
- // emulation of mouseenter/leave with mouseover/out using descendant checking
26819
- var handler = function(node, listener){
26820
- return on(node, type, function(evt){
26821
- if(selectHandler){
26822
- return selectHandler(evt, listener);
26823
- }
26824
- if(!dom.isDescendant(evt.relatedTarget, node)){
26825
- return listener.call(this, evt);
26826
- }
26827
- });
26828
- };
26829
- handler.bubble = function(select){
26830
- return eventHandler(type, function(evt, listener){
26831
- // using a selector, use the select function to determine if the mouse moved inside the selector and was previously outside the selector
26832
- var target = select(evt.target);
26833
- var relatedTarget = evt.relatedTarget;
26834
- if(target && (target != (relatedTarget && relatedTarget.nodeType == 1 && select(relatedTarget)))){
26835
- return listener.call(target, evt);
26836
- }
26837
- });
26838
- };
26839
- return handler;
26840
- }
26841
- var wheel;
26842
- if(has("events-mousewheel")){
26843
- wheel = 'mousewheel';
26844
- }else { //firefox
26845
- wheel = function(node, listener){
26846
- return on(node, 'DOMMouseScroll', function(evt){
26847
- evt.wheelDelta = -evt.detail;
26848
- listener.call(this, evt);
26849
- });
26850
- };
26851
- }
26852
- return {
26853
- // summary:
26854
- // This module provide mouse event handling utility functions and exports
26855
- // mouseenter and mouseleave event emulation.
26856
- // example:
26857
- // To use these events, you register a mouseenter like this:
26858
- // | define(["dojo/on", "dojo/mouse"], function(on, mouse){
26859
- // | on(targetNode, mouse.enter, function(event){
26860
- // | dojo.addClass(targetNode, "highlighted");
26861
- // | });
26862
- // | on(targetNode, mouse.leave, function(event){
26863
- // | dojo.removeClass(targetNode, "highlighted");
26864
- // | });
26865
-
26866
- _eventHandler: eventHandler, // for dojo/touch
26867
-
26868
- // enter: Synthetic Event
26869
- // This is an extension event for the mouseenter that IE provides, emulating the
26870
- // behavior on other browsers.
26871
- enter: eventHandler("mouseover"),
26872
-
26873
- // leave: Synthetic Event
26874
- // This is an extension event for the mouseleave that IE provides, emulating the
26875
- // behavior on other browsers.
26876
- leave: eventHandler("mouseout"),
26877
-
26878
- // wheel: Normalized Mouse Wheel Event
26879
- // This is an extension event for the mousewheel that non-Mozilla browsers provide,
26880
- // emulating the behavior on Mozilla based browsers.
26881
- wheel: wheel,
26882
-
26883
- isLeft: mouseButtons.isLeft,
26884
- /*=====
26885
- isLeft: function(){
26886
- // summary:
26887
- // Test an event object (from a mousedown event) to see if the left button was pressed.
26888
- },
26889
- =====*/
26890
-
26891
- isMiddle: mouseButtons.isMiddle,
26892
- /*=====
26893
- isMiddle: function(){
26894
- // summary:
26895
- // Test an event object (from a mousedown event) to see if the middle button was pressed.
26896
- },
26897
- =====*/
26898
-
26899
- isRight: mouseButtons.isRight
26900
- /*=====
26901
- , isRight: function(){
26902
- // summary:
26903
- // Test an event object (from a mousedown event) to see if the right button was pressed.
26904
- }
26905
- =====*/
26906
- };
26907
- }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
26908
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
26909
-
26910
-
26911
- /***/ }),
26912
-
26913
- /***/ 8709:
26914
- /*!******************************************************!*\
26915
- !*** ../../node_modules/dijit/_OnDijitClickMixin.js ***!
26916
- \******************************************************/
26917
- /***/ ((module, exports, __webpack_require__) => {
26918
-
26919
- __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
26920
- __webpack_require__(/*! dojo/on */ 2075),
26921
- __webpack_require__(/*! dojo/_base/array */ 6974), // array.forEach
26922
- __webpack_require__(/*! dojo/keys */ 4266), // keys.ENTER keys.SPACE
26923
- __webpack_require__(/*! dojo/_base/declare */ 6345), // declare
26924
- __webpack_require__(/*! dojo/has */ 6356), // has("dom-addeventlistener")
26925
- __webpack_require__(/*! ./a11yclick */ 8240)
26926
- ], __WEBPACK_AMD_DEFINE_RESULT__ = (function(on, array, keys, declare, has, a11yclick){
26927
-
26928
- // module:
26929
- // dijit/_OnDijitClickMixin
26930
-
26931
- var ret = declare("dijit._OnDijitClickMixin", null, {
26932
- // summary:
26933
- // Deprecated. New code should access the dijit/a11yclick event directly, ex:
26934
- // | this.own(on(node, a11yclick, function(){ ... }));
26935
- //
26936
- // Mixing in this class will make _WidgetBase.connect(node, "ondijitclick", ...) work.
26937
- // It also used to be necessary to make templates with ondijitclick work, but now you can just require
26938
- // dijit/a11yclick.
26939
-
26940
- connect: function(obj, event, method){
26941
- // override _WidgetBase.connect() to make this.connect(node, "ondijitclick", ...) work
26942
- return this.inherited(arguments, [obj, event == "ondijitclick" ? a11yclick : event, method]);
26943
- }
26944
- });
26945
-
26946
- ret.a11yclick = a11yclick; // back compat
26947
-
26948
- return ret;
26949
- }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
26950
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
26951
-
26952
-
26953
- /***/ }),
26954
-
26955
- /***/ 8769:
26956
- /*!******************************************!*\
26957
- !*** ../../node_modules/dojo/request.js ***!
26958
- \******************************************/
26959
- /***/ ((module, exports, __webpack_require__) => {
26960
-
26961
- __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
26962
- __webpack_require__(/*! ./request/default! */ 9648)/*=====,
26963
- './_base/declare',
26964
- './promise/Promise' =====*/
26965
- ], __WEBPACK_AMD_DEFINE_RESULT__ = (function(request/*=====, declare, Promise =====*/){
26966
- /*=====
26967
- request = function(url, options){
26968
- // summary:
26969
- // Send a request using the default transport for the current platform.
26970
- // url: String
26971
- // The URL to request.
26972
- // options: dojo/request.__Options?
26973
- // Options for the request.
26974
- // returns: dojo/request.__Promise
26975
- };
26976
- request.__Promise = declare(Promise, {
26977
- // response: dojo/promise/Promise
26978
- // A promise resolving to an object representing
26979
- // the response from the server.
26980
- });
26981
- request.__BaseOptions = declare(null, {
26982
- // query: String|Object?
26983
- // Query parameters to append to the URL.
26984
- // data: String|Object?
26985
- // Data to transfer. This is ignored for GET and DELETE
26986
- // requests.
26987
- // preventCache: Boolean?
26988
- // Whether to append a cache-busting parameter to the URL.
26989
- // timeout: Integer?
26990
- // Milliseconds to wait for the response. If this time
26991
- // passes, the then the promise is rejected.
26992
- // handleAs: String?
26993
- // How to handle the response from the server. Default is
26994
- // 'text'. Other values are 'json', 'javascript', and 'xml'.
26995
- });
26996
- request.__MethodOptions = declare(null, {
26997
- // method: String?
26998
- // The HTTP method to use to make the request. Must be
26999
- // uppercase.
27000
- });
27001
- request.__Options = declare([request.__BaseOptions, request.__MethodOptions]);
27002
-
27003
- request.get = function(url, options){
27004
- // summary:
27005
- // Send an HTTP GET request using the default transport for the current platform.
27006
- // url: String
27007
- // URL to request
27008
- // options: dojo/request.__BaseOptions?
27009
- // Options for the request.
27010
- // returns: dojo/request.__Promise
27011
- };
27012
- request.post = function(url, options){
27013
- // summary:
27014
- // Send an HTTP POST request using the default transport for the current platform.
27015
- // url: String
27016
- // URL to request
27017
- // options: dojo/request.__BaseOptions?
27018
- // Options for the request.
27019
- // returns: dojo/request.__Promise
27020
- };
27021
- request.put = function(url, options){
27022
- // summary:
27023
- // Send an HTTP POST request using the default transport for the current platform.
27024
- // url: String
27025
- // URL to request
27026
- // options: dojo/request.__BaseOptions?
27027
- // Options for the request.
27028
- // returns: dojo/request.__Promise
27029
- };
27030
- request.del = function(url, options){
27031
- // summary:
27032
- // Send an HTTP DELETE request using the default transport for the current platform.
27033
- // url: String
27034
- // URL to request
27035
- // options: dojo/request.__BaseOptions?
27036
- // Options for the request.
27037
- // returns: dojo/request.__Promise
27038
- };
27039
- =====*/
27040
- return request;
27041
- }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
27042
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27043
-
27044
-
27045
- /***/ }),
27046
-
27047
- /***/ 8810:
27048
- /*!******************************************************************!*\
27049
- !*** ../../../../../../../tmp/tmp-5913NTIcDVnVQIZ1/dojo/dojo.js ***!
27050
- \******************************************************************/
27051
- /***/ ((module) => {
27052
-
27053
- module.exports = function(userConfig, defaultConfig, global, window) { this.loaderVersion = "1.17.3"; (function(
27054
- userConfig,
27055
- defaultConfig
27056
- ){
27057
- // summary:
27058
- // This is the "source loader" and is the entry point for Dojo during development. You may also load Dojo with
27059
- // any AMD-compliant loader via the package main module dojo/main.
27060
- // description:
27061
- // This is the "source loader" for Dojo. It provides an AMD-compliant loader that can be configured
27062
- // to operate in either synchronous or asynchronous modes. After the loader is defined, dojo is loaded
27063
- // IAW the package main module dojo/main. In the event you wish to use a foreign loader, you may load dojo as a package
27064
- // via the package main module dojo/main and this loader is not required; see dojo/package.json for details.
27065
- //
27066
- // In order to keep compatibility with the v1.x line, this loader includes additional machinery that enables
27067
- // the dojo.provide, dojo.require et al API. This machinery is loaded by default, but may be dynamically removed
27068
- // via the has.js API and statically removed via the build system.
27069
- //
27070
- // This loader includes sniffing machinery to determine the environment; the following environments are supported:
27071
- //
27072
- // - browser
27073
- // - node.js
27074
- // - rhino
27075
- //
27076
- // This is the so-called "source loader". As such, it includes many optional features that may be discarded by
27077
- // building a customized version with the build system.
27078
-
27079
- // Design and Implementation Notes
27080
- //
27081
- // This is a dojo-specific adaption of bdLoad, donated to the dojo foundation by Altoviso LLC.
27082
- //
27083
- // This function defines an AMD-compliant (http://wiki.commonjs.org/wiki/Modules/AsynchronousDefinition)
27084
- // loader that can be configured to operate in either synchronous or asynchronous modes.
27085
- //
27086
- // Since this machinery implements a loader, it does not have the luxury of using a load system and/or
27087
- // leveraging a utility library. This results in an unpleasantly long file; here is a road map of the contents:
27088
- //
27089
- // 1. Small library for use implementing the loader.
27090
- // 2. Define the has.js API; this is used throughout the loader to bracket features.
27091
- // 3. Define the node.js and rhino sniffs and sniff.
27092
- // 4. Define the loader's data.
27093
- // 5. Define the configuration machinery.
27094
- // 6. Define the script element sniffing machinery and sniff for configuration data.
27095
- // 7. Configure the loader IAW the provided user, default, and sniffing data.
27096
- // 8. Define the global require function.
27097
- // 9. Define the module resolution machinery.
27098
- // 10. Define the module and plugin module definition machinery
27099
- // 11. Define the script injection machinery.
27100
- // 12. Define the window load detection.
27101
- // 13. Define the logging API.
27102
- // 14. Define the tracing API.
27103
- // 16. Define the AMD define function.
27104
- // 17. Define the dojo v1.x provide/require machinery--so called "legacy" modes.
27105
- // 18. Publish global variables.
27106
- //
27107
- // Language and Acronyms and Idioms
27108
- //
27109
- // moduleId: a CJS module identifier, (used for public APIs)
27110
- // mid: moduleId (used internally)
27111
- // packageId: a package identifier (used for public APIs)
27112
- // pid: packageId (used internally); the implied system or default package has pid===""
27113
- // pack: package is used internally to reference a package object (since javascript has reserved words including "package")
27114
- // prid: plugin resource identifier
27115
- // The integer constant 1 is used in place of true and 0 in place of false.
27116
- //
27117
- // The "foreign-loader" has condition is defined if another loader is being used (e.g. webpack) and this code is only
27118
- // needed for resolving module identifiers based on the config. In this case, only the functions require.toUrl and
27119
- // require.toAbsMid are supported. The require and define functions are not supported.
27120
-
27121
- // define global
27122
- var globalObject = (function(){
27123
- if (typeof global !== 'undefined' && typeof global !== 'function') {
27124
- // global spec defines a reference to the global object called 'global'
27125
- // https://github.com/tc39/proposal-global
27126
- // `global` is also defined in NodeJS
27127
- return global;
27128
- }
27129
- else if (typeof window !== 'undefined') {
27130
- // window is defined in browsers
27131
- return window;
27132
- }
27133
- else if (typeof self !== 'undefined') {
27134
- // self is defined in WebWorkers
27135
- return self;
27136
- }
27137
- return this;
27138
- })();
27139
-
27140
- // define a minimal library to help build the loader
27141
- var noop = function(){
27142
- },
27143
-
27144
- toString = {}.toString,
27145
-
27146
- isFunction = function(it){
27147
- return toString.call(it) == "[object Function]";
27030
+ promise.otherwise(function (err) {
27031
+ emitError.call(self, err);
27032
+ });
27033
+ return promise;
27148
27034
  },
27149
27035
 
27150
- isArray = function(it){
27151
- return toString.call(it) == "[object Array]";
27152
- },
27036
+ removeRow: function (rowElement, preserveDom, options) {
27037
+ var row = {element: rowElement};
27038
+ // Check to see if we are now empty...
27039
+ if (!preserveDom && (this.up(row).element === rowElement) && (this.down(row).element === rowElement)) {
27040
+ // ...we are empty, so show the no data message.
27041
+ this._insertNoDataNode();
27042
+ }
27153
27043
 
27154
- forEach = function(vector, callback){
27155
- if(vector){
27156
- for(var i = 0; i < vector.length;){
27157
- callback(vector[i++]);
27158
- }
27044
+ var rows = (options && options.rows) || this._rows;
27045
+ if (rows) {
27046
+ delete rows[rowElement.rowIndex];
27159
27047
  }
27048
+
27049
+ return this.inherited(arguments);
27160
27050
  },
27161
27051
 
27162
- mix = function(dest, src){
27163
- for(var p in src){
27164
- dest[p] = src[p];
27052
+ renderQueryResults: function (results, beforeNode, options) {
27053
+ // summary:
27054
+ // Renders objects from QueryResults as rows, before the given node.
27055
+
27056
+ options = lang.mixin({ rows: this._rows }, options);
27057
+ var self = this;
27058
+
27059
+ if (!has('dojo-built')) {
27060
+ // Check for null/undefined totalResults to help diagnose faulty services/stores
27061
+ results.totalLength.then(function (total) {
27062
+ if (total == null) {
27063
+ console.warn('Store reported null or undefined totalLength. ' +
27064
+ 'Make sure your store (and service, if applicable) are reporting total correctly!');
27065
+ }
27066
+ });
27165
27067
  }
27166
- return dest;
27167
- },
27168
27068
 
27169
- makeError = function(error, info){
27170
- return mix(new Error(error), {src:"dojoLoader", info:info});
27069
+ return results.then(function (resolvedResults) {
27070
+ var resolvedRows = self.renderArray(resolvedResults, beforeNode, options);
27071
+ delete self._lastCollection; // used only for non-store List/Grid
27072
+ return resolvedRows;
27073
+ });
27171
27074
  },
27172
27075
 
27173
- uidSeed = 1,
27076
+ _observeCollection: function (collection, container, options) {
27077
+ var self = this,
27078
+ rows = options.rows,
27079
+ row;
27174
27080
 
27175
- uid = function(){
27176
- // Returns a unique identifier (within the lifetime of the document) of the form /_d+/.
27177
- return "_" + uidSeed++;
27178
- },
27081
+ var handles = [
27082
+ collection.on('delete, update', function (event) {
27083
+ var from = event.previousIndex;
27084
+ var to = event.index;
27179
27085
 
27180
- // FIXME: how to doc window.require() api
27086
+ if (from !== undefined && rows[from]) {
27087
+ if ('max' in rows && (to === undefined || to < rows.min || to > rows.max)) {
27088
+ rows.max--;
27089
+ }
27181
27090
 
27182
- // this will be the global require function; define it immediately so we can start hanging things off of it
27183
- req = function(
27184
- config, //(object, optional) hash of configuration properties
27185
- dependencies, //(array of commonjs.moduleId, optional) list of modules to be loaded before applying callback
27186
- callback //(function, optional) lambda expression to apply to module values implied by dependencies
27187
- ){
27188
- return contextRequire(config, dependencies, callback, 0, req);
27189
- },
27091
+ // max should never be less than zero; if it is the logic in the 'add, update' handler
27092
+ // below will prevent insertion of rows (https://github.com/SitePen/dgrid/issues/1305)
27093
+ if (rows.max < 0) {
27094
+ rows.max = 0;
27095
+ }
27190
27096
 
27191
- // the loader uses the has.js API to control feature inclusion/exclusion; define then use throughout
27192
- global = globalObject,
27097
+ row = rows[from];
27193
27098
 
27194
- doc = global.document,
27099
+ // check to make the sure the node is still there before we try to remove it
27100
+ // (in case it was moved to a different place in the DOM)
27101
+ if (row.parentNode === container) {
27102
+ self.removeRow(row, false, options);
27103
+ }
27195
27104
 
27196
- element = doc && doc.createElement("DiV"),
27105
+ // remove the old slot
27106
+ rows.splice(from, 1);
27197
27107
 
27198
- has = req.has = function(name){
27199
- return isFunction(hasCache[name]) ? (hasCache[name] = hasCache[name](global, doc, element)) : hasCache[name];
27200
- },
27108
+ if (event.type === 'delete' ||
27109
+ (event.type === 'update' && (from < to || to === undefined))) {
27110
+ // adjust the rowIndex so adjustRowIndices has the right starting point
27111
+ rows[from] && rows[from].rowIndex--;
27112
+ }
27113
+ }
27114
+ if (event.type === 'delete') {
27115
+ // Reset row in case this is later followed by an add;
27116
+ // only update events should retain the row variable below
27117
+ row = null;
27118
+ }
27119
+ }),
27201
27120
 
27202
- hasCache = has.cache = defaultConfig.hasCache;
27121
+ collection.on('add, update', function (event) {
27122
+ var from = event.previousIndex;
27123
+ var to = event.index;
27124
+ var nextNode;
27203
27125
 
27204
- if (isFunction(userConfig)) {
27205
- userConfig = userConfig(globalObject);
27206
- }
27126
+ function advanceNext() {
27127
+ nextNode = (nextNode.connected || nextNode).nextSibling;
27128
+ }
27207
27129
 
27208
- has.add = function(name, test, now, force){
27209
- (hasCache[name]===undefined || force) && (hasCache[name] = test);
27210
- return now && has(name);
27211
- };
27130
+ // When possible, restrict observations to the actually rendered range
27131
+ if (to !== undefined && (!('max' in rows) || (to >= rows.min && to <= rows.max))) {
27132
+ if ('max' in rows && (from === undefined || from < rows.min || from > rows.max)) {
27133
+ rows.max++;
27134
+ }
27135
+ // Add to new slot (either before an existing row, or at the end)
27136
+ // First determine the DOM node that this should be placed before.
27137
+ if (rows.length) {
27138
+ nextNode = rows[to];
27139
+ if (!nextNode) {
27140
+ nextNode = rows[to - 1];
27141
+ if (nextNode) {
27142
+ // Make sure to skip connected nodes, so we don't accidentally
27143
+ // insert a row in between a parent and its children.
27144
+ advanceNext();
27145
+ }
27146
+ }
27147
+ }
27148
+ else {
27149
+ // There are no rows. Allow for subclasses to insert new rows somewhere other than
27150
+ // at the end of the parent node.
27151
+ nextNode = self._getFirstRowSibling && self._getFirstRowSibling(container);
27152
+ }
27153
+ // Make sure we don't trip over a stale reference to a
27154
+ // node that was removed, or try to place a node before
27155
+ // itself (due to overlapped queries)
27156
+ if (row && nextNode && row.id === nextNode.id) {
27157
+ advanceNext();
27158
+ }
27159
+ if (nextNode && !nextNode.parentNode) {
27160
+ nextNode = document.getElementById(nextNode.id);
27161
+ }
27162
+ rows.splice(to, 0, undefined);
27163
+ row = self.insertRow(event.target, container, nextNode, to, options);
27164
+ self.highlightRow(row);
27165
+ }
27166
+ // Reset row so it doesn't get reused on the next event
27167
+ row = null;
27168
+ }),
27212
27169
 
27213
- // userConfig has tests override defaultConfig has tests; do this after the environment detection because
27214
- // the environment detection usually sets some has feature values in the hasCache.
27215
- for(var p in userConfig.has){
27216
- has.add(p, userConfig.has[p], 0, 1);
27217
- }
27218
- {
27219
- req.async = 1;
27220
- }
27170
+ collection.on('add, delete, update', function (event) {
27171
+ var from = (typeof event.previousIndex !== 'undefined') ? event.previousIndex : Infinity,
27172
+ to = (typeof event.index !== 'undefined') ? event.index : Infinity,
27173
+ adjustAtIndex = Math.min(from, to);
27174
+ from !== to && rows[adjustAtIndex] && self.adjustRowIndices(rows[adjustAtIndex]);
27221
27175
 
27222
- //
27223
- // loader eval
27224
- //
27225
- var eval_ = // noop eval if there are csp restrictions
27226
- function(){} ;
27176
+ // the removal of rows could cause us to need to page in more items
27177
+ if (from !== Infinity && self._processScroll && (rows[from] || rows[from - 1])) {
27178
+ self._processScroll();
27179
+ }
27227
27180
 
27228
- req.eval =
27229
- function(text, hint){
27230
- return eval_();
27231
- };
27181
+ // Fire _onNotification, even for out-of-viewport notifications,
27182
+ // since some things may still need to update (e.g. Pagination's status/navigation)
27183
+ self._onNotification(rows, event, collection);
27184
+
27185
+ // Update _total after _onNotification so that it can potentially
27186
+ // decide whether to perform actions based on whether the total changed
27187
+ if (collection === self._renderedCollection && 'totalLength' in event) {
27188
+ self._total = event.totalLength;
27189
+ }
27190
+ })
27191
+ ];
27232
27192
 
27233
- //
27234
- // loader micro events API
27235
- //
27236
- var listenerQueues = {},
27237
- error = "error";
27238
- req.signal = function(type, args){
27239
- var queue = listenerQueues[type];
27240
- // notice we run a copy of the queue; this allows listeners to add/remove
27241
- // other listeners without affecting this particular signal
27242
- forEach(queue && queue.slice(0), function(listener){
27243
- listener.apply(null, isArray(args) ? args : [args]);
27244
- });
27245
- };
27246
- var on = req.on = function(type, listener){
27247
- // notice a queue is not created until a client actually connects
27248
- var queue = listenerQueues[type] || (listenerQueues[type] = []);
27249
- queue.push(listener);
27250
27193
  return {
27251
- remove:function(){
27252
- for(var i = 0; i<queue.length; i++){
27253
- if(queue[i]===listener){
27254
- queue.splice(i, 1);
27255
- return;
27256
- }
27194
+ remove: function () {
27195
+ while (handles.length > 0) {
27196
+ handles.pop().remove();
27257
27197
  }
27258
27198
  }
27259
27199
  };
27260
- };
27261
-
27262
- // configuration machinery; with an optimized/built defaultConfig, all configuration machinery can be discarded
27263
- // lexical variables hold key loader data structures to help with minification; these may be completely,
27264
- // one-time initialized by defaultConfig for optimized/built versions
27265
- var aliases
27266
- // a vector of pairs of [regexs or string, replacement] => (alias, actual)
27267
- = [],
27268
-
27269
- pathsMapProg
27270
- // list of (from-path, to-path, regex, length) derived from paths;
27271
- // a "program" to apply paths; see computeMapProg
27272
- = [],
27200
+ },
27273
27201
 
27274
- packs
27275
- // a map from packageId to package configuration object; see fixupPackageInfo
27276
- = {};
27202
+ _onNotification: function () {
27203
+ // summary:
27204
+ // Protected method called whenever a store notification is observed.
27205
+ // Intended to be extended as necessary by mixins/extensions.
27206
+ // rows: Array
27207
+ // A sparse array of row nodes corresponding to data objects in the collection.
27208
+ // event: Object
27209
+ // The notification event
27210
+ // collection: Object
27211
+ // The collection that the notification is relevant to.
27212
+ // Useful for distinguishing child-level from top-level notifications.
27213
+ }
27214
+ });
27215
+ }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
27216
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27277
27217
 
27278
- req.map
27279
- // AMD map config variable; dojo/_base/kernel needs req.map to figure out the scope map
27280
- = {};
27281
27218
 
27282
- var mapProgs
27283
- // vector of quads as described by computeMapProg; map-key is AMD map key, map-value is AMD map value
27284
- = [],
27219
+ /***/ }),
27285
27220
 
27286
- modules
27287
- // A hash:(mid) --> (module-object) the module namespace
27288
- //
27289
- // pid: the package identifier to which the module belongs (e.g., "dojo"); "" indicates the system or default package
27290
- // mid: the fully-resolved (i.e., mappings have been applied) module identifier without the package identifier (e.g., "dojo/io/script")
27291
- // url: the URL from which the module was retrieved
27292
- // pack: the package object of the package to which the module belongs
27293
- // executed: 0 => not executed; executing => in the process of traversing deps and running factory; executed => factory has been executed
27294
- // deps: the dependency vector for this module (vector of modules objects)
27295
- // def: the factory for this module
27296
- // result: the result of the running the factory for this module
27297
- // injected: (0 | requested | arrived) the status of the module; nonmodule means the resource did not call define
27298
- // load: plugin load function; applicable only for plugins
27299
- //
27300
- // Modules go through several phases in creation:
27301
- //
27302
- // 1. Requested: some other module's definition or a require application contained the requested module in
27303
- // its dependency vector or executing code explicitly demands a module via req.require.
27304
- //
27305
- // 2. Injected: a script element has been appended to the insert-point element demanding the resource implied by the URL
27306
- //
27307
- // 3. Loaded: the resource injected in [2] has been evaluated.
27308
- //
27309
- // 4. Defined: the resource contained a define statement that advised the loader about the module. Notice that some
27310
- // resources may just contain a bundle of code and never formally define a module via define
27311
- //
27312
- // 5. Evaluated: the module was defined via define and the loader has evaluated the factory and computed a result.
27313
- = {},
27221
+ /***/ 8471:
27222
+ /*!****************************************!*\
27223
+ !*** ../../node_modules/dojo/mouse.js ***!
27224
+ \****************************************/
27225
+ /***/ ((module, exports, __webpack_require__) => {
27314
27226
 
27315
- cacheBust
27316
- // query string to append to module URLs to bust browser cache
27317
- = "",
27227
+ __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ./_base/kernel */ 1054), __webpack_require__(/*! ./on */ 2075), __webpack_require__(/*! ./has */ 6356), __webpack_require__(/*! ./dom */ 2284), __webpack_require__(/*! ./_base/window */ 5075)], __WEBPACK_AMD_DEFINE_RESULT__ = (function(dojo, on, has, dom, win){
27318
27228
 
27319
- cache
27320
- // hash:(mid | url)-->(function | string)
27321
- //
27322
- // A cache of resources. The resources arrive via a config.cache object, which is a hash from either mid --> function or
27323
- // url --> string. The url key is distinguished from the mid key by always containing the prefix "url:". url keys as provided
27324
- // by config.cache always have a string value that represents the contents of the resource at the given url. mid keys as provided
27325
- // by configl.cache always have a function value that causes the same code to execute as if the module was script injected.
27326
- //
27327
- // Both kinds of key-value pairs are entered into cache via the function consumePendingCache, which may relocate keys as given
27328
- // by any mappings *iff* the config.cache was received as part of a module resource request.
27329
- //
27330
- // Further, for mid keys, the implied url is computed and the value is entered into that key as well. This allows mapped modules
27331
- // to retrieve cached items that may have arrived consequent to another namespace.
27332
- //
27333
- = {};
27229
+ // module:
27230
+ // dojo/mouse
27334
27231
 
27335
- var match; {
27336
- // no config API, assume defaultConfig has everything the loader needs...for the entire lifetime of the application
27337
- defaultConfig.paths;
27338
- pathsMapProg = defaultConfig.pathsMapProg;
27339
- packs = defaultConfig.packs;
27340
- aliases = defaultConfig.aliases;
27341
- mapProgs = defaultConfig.mapProgs;
27342
- modules = defaultConfig.modules;
27343
- cache = defaultConfig.cache;
27344
- cacheBust = defaultConfig.cacheBust;
27232
+ has.add("dom-quirks", win.doc && win.doc.compatMode == "BackCompat");
27233
+ has.add("events-mouseenter", win.doc && "onmouseenter" in win.doc.createElement("div"));
27234
+ has.add("events-mousewheel", win.doc && 'onmousewheel' in win.doc);
27345
27235
 
27346
- // remember the default config for other processes (e.g., dojo/config)
27347
- req.rawConfig = defaultConfig;
27236
+ var mouseButtons;
27237
+ if((has("dom-quirks") && has("ie")) || !has("dom-addeventlistener")){
27238
+ mouseButtons = {
27239
+ LEFT: 1,
27240
+ MIDDLE: 4,
27241
+ RIGHT: 2,
27242
+ // helper functions
27243
+ isButton: function(e, button){ return e.button & button; },
27244
+ isLeft: function(e){ return e.button & 1; },
27245
+ isMiddle: function(e){ return e.button & 4; },
27246
+ isRight: function(e){ return e.button & 2; }
27247
+ };
27248
+ }else {
27249
+ mouseButtons = {
27250
+ LEFT: 0,
27251
+ MIDDLE: 1,
27252
+ RIGHT: 2,
27253
+ // helper functions
27254
+ isButton: function(e, button){ return e.button == button; },
27255
+ isLeft: function(e){ return e.button == 0; },
27256
+ isMiddle: function(e){ return e.button == 1; },
27257
+ isRight: function(e){ return e.button == 2; }
27258
+ };
27348
27259
  }
27260
+ dojo.mouseButtons = mouseButtons;
27349
27261
 
27262
+ /*=====
27263
+ dojo.mouseButtons = {
27264
+ // LEFT: Number
27265
+ // Numeric value of the left mouse button for the platform.
27266
+ LEFT: 0,
27267
+ // MIDDLE: Number
27268
+ // Numeric value of the middle mouse button for the platform.
27269
+ MIDDLE: 1,
27270
+ // RIGHT: Number
27271
+ // Numeric value of the right mouse button for the platform.
27272
+ RIGHT: 2,
27350
27273
 
27351
- var contextRequire;
27274
+ isButton: function(e, button){
27275
+ // summary:
27276
+ // Checks an event object for a pressed button
27277
+ // e: Event
27278
+ // Event object to examine
27279
+ // button: Number
27280
+ // The button value (example: dojo.mouseButton.LEFT)
27281
+ return e.button == button; // Boolean
27282
+ },
27283
+ isLeft: function(e){
27284
+ // summary:
27285
+ // Checks an event object for the pressed left button
27286
+ // e: Event
27287
+ // Event object to examine
27288
+ return e.button == 0; // Boolean
27289
+ },
27290
+ isMiddle: function(e){
27291
+ // summary:
27292
+ // Checks an event object for the pressed middle button
27293
+ // e: Event
27294
+ // Event object to examine
27295
+ return e.button == 1; // Boolean
27296
+ },
27297
+ isRight: function(e){
27298
+ // summary:
27299
+ // Checks an event object for the pressed right button
27300
+ // e: Event
27301
+ // Event object to examine
27302
+ return e.button == 2; // Boolean
27303
+ }
27304
+ };
27305
+ =====*/
27352
27306
 
27353
- var runMapProg = function(targetMid, map){
27354
- // search for targetMid in map; return the map item if found; falsy otherwise
27355
- if(map){
27356
- for(var i = 0; i < map.length; i++){
27357
- if(map[i][2].test(targetMid)){
27358
- return map[i];
27307
+ function eventHandler(type, selectHandler){
27308
+ // emulation of mouseenter/leave with mouseover/out using descendant checking
27309
+ var handler = function(node, listener){
27310
+ return on(node, type, function(evt){
27311
+ if(selectHandler){
27312
+ return selectHandler(evt, listener);
27359
27313
  }
27360
- }
27361
- }
27362
- return 0;
27363
- },
27314
+ if(!dom.isDescendant(evt.relatedTarget, node)){
27315
+ return listener.call(this, evt);
27316
+ }
27317
+ });
27318
+ };
27319
+ handler.bubble = function(select){
27320
+ return eventHandler(type, function(evt, listener){
27321
+ // using a selector, use the select function to determine if the mouse moved inside the selector and was previously outside the selector
27322
+ var target = select(evt.target);
27323
+ var relatedTarget = evt.relatedTarget;
27324
+ if(target && (target != (relatedTarget && relatedTarget.nodeType == 1 && select(relatedTarget)))){
27325
+ return listener.call(target, evt);
27326
+ }
27327
+ });
27328
+ };
27329
+ return handler;
27330
+ }
27331
+ var wheel;
27332
+ if(has("events-mousewheel")){
27333
+ wheel = 'mousewheel';
27334
+ }else { //firefox
27335
+ wheel = function(node, listener){
27336
+ return on(node, 'DOMMouseScroll', function(evt){
27337
+ evt.wheelDelta = -evt.detail;
27338
+ listener.call(this, evt);
27339
+ });
27340
+ };
27341
+ }
27342
+ return {
27343
+ // summary:
27344
+ // This module provide mouse event handling utility functions and exports
27345
+ // mouseenter and mouseleave event emulation.
27346
+ // example:
27347
+ // To use these events, you register a mouseenter like this:
27348
+ // | define(["dojo/on", "dojo/mouse"], function(on, mouse){
27349
+ // | on(targetNode, mouse.enter, function(event){
27350
+ // | dojo.addClass(targetNode, "highlighted");
27351
+ // | });
27352
+ // | on(targetNode, mouse.leave, function(event){
27353
+ // | dojo.removeClass(targetNode, "highlighted");
27354
+ // | });
27364
27355
 
27365
- compactPath = function(path){
27366
- var result = [],
27367
- segment, lastSegment;
27368
- path = path.replace(/\\/g, '/').split('/');
27369
- while(path.length){
27370
- segment = path.shift();
27371
- if(segment==".." && result.length && lastSegment!=".."){
27372
- result.pop();
27373
- lastSegment = result[result.length - 1];
27374
- }else if(segment!="."){
27375
- result.push(lastSegment= segment);
27376
- } // else ignore "."
27377
- }
27378
- return result.join("/");
27379
- },
27356
+ _eventHandler: eventHandler, // for dojo/touch
27380
27357
 
27381
- makeModuleInfo = function(pid, mid, pack, url){
27382
- {
27383
- return {pid:pid, mid:mid, pack:pack, url:url, executed:0, def:0};
27384
- }
27358
+ // enter: Synthetic Event
27359
+ // This is an extension event for the mouseenter that IE provides, emulating the
27360
+ // behavior on other browsers.
27361
+ enter: eventHandler("mouseover"),
27362
+
27363
+ // leave: Synthetic Event
27364
+ // This is an extension event for the mouseleave that IE provides, emulating the
27365
+ // behavior on other browsers.
27366
+ leave: eventHandler("mouseout"),
27367
+
27368
+ // wheel: Normalized Mouse Wheel Event
27369
+ // This is an extension event for the mousewheel that non-Mozilla browsers provide,
27370
+ // emulating the behavior on Mozilla based browsers.
27371
+ wheel: wheel,
27372
+
27373
+ isLeft: mouseButtons.isLeft,
27374
+ /*=====
27375
+ isLeft: function(){
27376
+ // summary:
27377
+ // Test an event object (from a mousedown event) to see if the left button was pressed.
27385
27378
  },
27379
+ =====*/
27386
27380
 
27387
- getModuleInfo_ = function(mid, referenceModule, packs, modules, baseUrl, mapProgs, pathsMapProg, aliases, alwaysCreate, fromPendingCache){
27388
- // arguments are passed instead of using lexical variables so that this function my be used independent of the loader (e.g., the builder)
27389
- // alwaysCreate is useful in this case so that getModuleInfo never returns references to real modules owned by the loader
27390
- var pid, pack, midInPackage, mapItem, url, result, isRelative;
27391
- isRelative = /^\./.test(mid);
27392
- if(/(^\/)|(\:)|(\.js$)/.test(mid) || (isRelative && !referenceModule)){
27393
- // absolute path or protocol of .js filetype, or relative path but no reference module and therefore relative to page
27394
- // whatever it is, it's not a module but just a URL of some sort
27395
- // note: pid===0 indicates the routine is returning an unmodified mid
27381
+ isMiddle: mouseButtons.isMiddle,
27382
+ /*=====
27383
+ isMiddle: function(){
27384
+ // summary:
27385
+ // Test an event object (from a mousedown event) to see if the middle button was pressed.
27386
+ },
27387
+ =====*/
27396
27388
 
27397
- return makeModuleInfo(0, mid, 0, mid);
27398
- }else {
27399
- // relative module ids are relative to the referenceModule; get rid of any dots
27400
- mid = compactPath(isRelative ? (referenceModule.mid + "/../" + mid) : mid);
27401
- if(/^\./.test(mid)){
27402
- throw makeError("irrationalPath", mid);
27403
- }
27404
- // at this point, mid is an absolute mid
27389
+ isRight: mouseButtons.isRight
27390
+ /*=====
27391
+ , isRight: function(){
27392
+ // summary:
27393
+ // Test an event object (from a mousedown event) to see if the right button was pressed.
27394
+ }
27395
+ =====*/
27396
+ };
27397
+ }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
27398
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27405
27399
 
27406
- // map the mid
27407
- if(!isRelative && mapProgs.star){
27408
- mapItem = runMapProg(mid, mapProgs.star[1]);
27409
- }
27410
- if(!mapItem && referenceModule){
27411
- mapItem = runMapProg(referenceModule.mid, mapProgs);
27412
- mapItem = mapItem && runMapProg(mid, mapItem[1]);
27413
- }
27414
27400
 
27415
- if(mapItem){
27416
- mid = mapItem[1] + mid.substring(mapItem[3]);
27417
- }
27401
+ /***/ }),
27418
27402
 
27419
- match = mid.match(/^([^\/]+)(\/(.+))?$/);
27420
- pid = match ? match[1] : "";
27421
- if((pack = packs[pid])){
27422
- mid = pid + "/" + (midInPackage = (match[3] || pack.main));
27423
- }else {
27424
- pid = "";
27425
- }
27403
+ /***/ 8709:
27404
+ /*!******************************************************!*\
27405
+ !*** ../../node_modules/dijit/_OnDijitClickMixin.js ***!
27406
+ \******************************************************/
27407
+ /***/ ((module, exports, __webpack_require__) => {
27426
27408
 
27427
- // search aliases
27428
- var candidateLength = 0,
27429
- candidate = 0;
27430
- forEach(aliases, function(pair){
27431
- var match = mid.match(pair[0]);
27432
- if(match && match.length>candidateLength){
27433
- candidate = isFunction(pair[1]) ? mid.replace(pair[0], pair[1]) : pair[1];
27434
- }
27435
- });
27436
- if(candidate){
27437
- return getModuleInfo_(candidate, 0, packs, modules, baseUrl, mapProgs, pathsMapProg, aliases, alwaysCreate);
27438
- }
27409
+ __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
27410
+ __webpack_require__(/*! dojo/on */ 2075),
27411
+ __webpack_require__(/*! dojo/_base/array */ 6974), // array.forEach
27412
+ __webpack_require__(/*! dojo/keys */ 4266), // keys.ENTER keys.SPACE
27413
+ __webpack_require__(/*! dojo/_base/declare */ 6345), // declare
27414
+ __webpack_require__(/*! dojo/has */ 6356), // has("dom-addeventlistener")
27415
+ __webpack_require__(/*! ./a11yclick */ 8240)
27416
+ ], __WEBPACK_AMD_DEFINE_RESULT__ = (function(on, array, keys, declare, has, a11yclick){
27439
27417
 
27440
- result = modules[mid];
27441
- if(result){
27442
- return alwaysCreate ? makeModuleInfo(result.pid, result.mid, result.pack, result.url) : modules[mid];
27443
- }
27444
- }
27445
- // get here iff the sought-after module does not yet exist; therefore, we need to compute the URL given the
27446
- // fully resolved (i.e., all relative indicators and package mapping resolved) module id
27418
+ // module:
27419
+ // dijit/_OnDijitClickMixin
27447
27420
 
27448
- // note: pid!==0 indicates the routine is returning a url that has .js appended unmodified mid
27449
- mapItem = runMapProg(mid, pathsMapProg);
27450
- if(mapItem){
27451
- url = mapItem[1] + mid.substring(mapItem[3]);
27452
- }else if(pid){
27453
- url = (pack.location.slice(-1) === '/' ? pack.location.slice(0, -1) : pack.location) + "/" + midInPackage;
27454
- }else {
27455
- url = mid;
27456
- }
27457
- // if result is not absolute, add baseUrl
27458
- if(!(/(^\/)|(\:)/.test(url))){
27459
- url = baseUrl + url;
27460
- }
27461
- url += ".js";
27462
- return makeModuleInfo(pid, mid, pack, compactPath(url));
27463
- },
27421
+ var ret = declare("dijit._OnDijitClickMixin", null, {
27422
+ // summary:
27423
+ // Deprecated. New code should access the dijit/a11yclick event directly, ex:
27424
+ // | this.own(on(node, a11yclick, function(){ ... }));
27425
+ //
27426
+ // Mixing in this class will make _WidgetBase.connect(node, "ondijitclick", ...) work.
27427
+ // It also used to be necessary to make templates with ondijitclick work, but now you can just require
27428
+ // dijit/a11yclick.
27464
27429
 
27465
- getModuleInfo = function(mid, referenceModule, fromPendingCache){
27466
- return getModuleInfo_(mid, referenceModule, packs, modules, req.baseUrl, mapProgs, pathsMapProg, aliases, undefined);
27467
- };
27430
+ connect: function(obj, event, method){
27431
+ // override _WidgetBase.connect() to make this.connect(node, "ondijitclick", ...) work
27432
+ return this.inherited(arguments, [obj, event == "ondijitclick" ? a11yclick : event, method]);
27433
+ }
27434
+ });
27468
27435
 
27469
- req.toAbsMid = function(mid, referenceModule){
27470
- return getModuleInfo(mid, referenceModule).mid;
27471
- };
27436
+ ret.a11yclick = a11yclick; // back compat
27472
27437
 
27473
- req.toUrl = function(name, referenceModule){
27474
- var moduleInfo = getModuleInfo(name+"/x", referenceModule),
27475
- url= moduleInfo.url;
27476
- return fixupUrl(moduleInfo.pid===0 ?
27477
- // if pid===0, then name had a protocol or absolute path; either way, toUrl is the identify function in such cases
27478
- name :
27479
- // "/x.js" since getModuleInfo automatically appends ".js" and we appended "/x" to make name look like a module id
27480
- url.substring(0, url.length-5)
27481
- );
27482
- };
27438
+ return ret;
27439
+ }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
27440
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27483
27441
 
27484
- var fixupUrl= typeof userConfig.fixupUrl == "function" ? userConfig.fixupUrl : function(url){
27485
- url += ""; // make sure url is a Javascript string (some paths may be a Java string)
27486
- return url + (cacheBust ? ((/\?/.test(url) ? "&" : "?") + cacheBust) : "");
27487
- };
27488
27442
 
27489
- {
27490
- req.log = noop;
27491
- }
27443
+ /***/ }),
27492
27444
 
27493
- {
27494
- req.trace = noop;
27495
- }
27496
- var def; {
27497
- var def = noop;
27498
- }
27499
- // allow config to override default implementation of named functions; this is useful for
27500
- // non-browser environments, e.g., overriding injectUrl, getText, log, etc. in node.js, Rhino, etc.
27501
- // also useful for testing and monkey patching loader
27502
- mix(mix(req, defaultConfig.loaderPatch), userConfig.loaderPatch);
27445
+ /***/ 8769:
27446
+ /*!******************************************!*\
27447
+ !*** ../../node_modules/dojo/request.js ***!
27448
+ \******************************************/
27449
+ /***/ ((module, exports, __webpack_require__) => {
27503
27450
 
27504
- // now that req is fully initialized and won't change, we can hook it up to the error signal
27505
- on(error, function(arg){
27506
- try{
27507
- console.error(arg);
27508
- if(arg instanceof Error){
27509
- for(var p in arg){
27510
- console.log(p + ":", arg[p]);
27511
- }
27512
- console.log(".");
27513
- }
27514
- }catch(e){}
27451
+ __webpack_require__.dj.r;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
27452
+ __webpack_require__(/*! ./request/default! */ 9648)/*=====,
27453
+ './_base/declare',
27454
+ './promise/Promise' =====*/
27455
+ ], __WEBPACK_AMD_DEFINE_RESULT__ = (function(request/*=====, declare, Promise =====*/){
27456
+ /*=====
27457
+ request = function(url, options){
27458
+ // summary:
27459
+ // Send a request using the default transport for the current platform.
27460
+ // url: String
27461
+ // The URL to request.
27462
+ // options: dojo/request.__Options?
27463
+ // Options for the request.
27464
+ // returns: dojo/request.__Promise
27465
+ };
27466
+ request.__Promise = declare(Promise, {
27467
+ // response: dojo/promise/Promise
27468
+ // A promise resolving to an object representing
27469
+ // the response from the server.
27515
27470
  });
27516
-
27517
- // always publish these
27518
- mix(req, {
27519
- uid:uid,
27520
- cache:cache,
27521
- packs:packs
27471
+ request.__BaseOptions = declare(null, {
27472
+ // query: String|Object?
27473
+ // Query parameters to append to the URL.
27474
+ // data: String|Object?
27475
+ // Data to transfer. This is ignored for GET and DELETE
27476
+ // requests.
27477
+ // preventCache: Boolean?
27478
+ // Whether to append a cache-busting parameter to the URL.
27479
+ // timeout: Integer?
27480
+ // Milliseconds to wait for the response. If this time
27481
+ // passes, the then the promise is rejected.
27482
+ // handleAs: String?
27483
+ // How to handle the response from the server. Default is
27484
+ // 'text'. Other values are 'json', 'javascript', and 'xml'.
27485
+ });
27486
+ request.__MethodOptions = declare(null, {
27487
+ // method: String?
27488
+ // The HTTP method to use to make the request. Must be
27489
+ // uppercase.
27522
27490
  });
27491
+ request.__Options = declare([request.__BaseOptions, request.__MethodOptions]);
27492
+
27493
+ request.get = function(url, options){
27494
+ // summary:
27495
+ // Send an HTTP GET request using the default transport for the current platform.
27496
+ // url: String
27497
+ // URL to request
27498
+ // options: dojo/request.__BaseOptions?
27499
+ // Options for the request.
27500
+ // returns: dojo/request.__Promise
27501
+ };
27502
+ request.post = function(url, options){
27503
+ // summary:
27504
+ // Send an HTTP POST request using the default transport for the current platform.
27505
+ // url: String
27506
+ // URL to request
27507
+ // options: dojo/request.__BaseOptions?
27508
+ // Options for the request.
27509
+ // returns: dojo/request.__Promise
27510
+ };
27511
+ request.put = function(url, options){
27512
+ // summary:
27513
+ // Send an HTTP POST request using the default transport for the current platform.
27514
+ // url: String
27515
+ // URL to request
27516
+ // options: dojo/request.__BaseOptions?
27517
+ // Options for the request.
27518
+ // returns: dojo/request.__Promise
27519
+ };
27520
+ request.del = function(url, options){
27521
+ // summary:
27522
+ // Send an HTTP DELETE request using the default transport for the current platform.
27523
+ // url: String
27524
+ // URL to request
27525
+ // options: dojo/request.__BaseOptions?
27526
+ // Options for the request.
27527
+ // returns: dojo/request.__Promise
27528
+ };
27529
+ =====*/
27530
+ return request;
27531
+ }).apply(null, __WEBPACK_AMD_DEFINE_ARRAY__),
27532
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27523
27533
 
27524
- // the loader can be defined exactly once; look for global define which is the symbol AMD loaders are
27525
- // *required* to define (as opposed to require, which is optional)
27526
- if(global.define){
27527
- return;
27528
- }else {
27529
- global.define = def;
27530
- global.require = req;
27531
- }
27532
- })
27533
- .call(this, userConfig, defaultConfig);};
27534
27534
 
27535
27535
  /***/ }),
27536
27536
 
@@ -29970,7 +29970,7 @@ function requireDist () {
29970
29970
  /******/ "dojo/_base/query":4203,
29971
29971
  /******/ "dojo/_base/NodeList":6659,
29972
29972
  /******/ "dojo/NodeList-dom":8288
29973
- /******/ // "/tmp/tmp-5913NTIcDVnVQIZ1/dojo/dojo.js" = 8810
29973
+ /******/ // "/tmp/tmp-5915xSdKDAV2AL3m/dojo/dojo.js" = 2093
29974
29974
  /******/ });
29975
29975
  /******/
29976
29976
  /******/ globalObj.require = req;
@@ -30006,7 +30006,7 @@ function requireDist () {
30006
30006
  /******/ return url;
30007
30007
  /******/ })}));
30008
30008
  /******/ var defaultConfig = ({'hasCache':({'webpack':1,'host-browser':1,'dom':1,'dojo-loader':1,'dojo-has-api':1,'dojo-dom-ready-api':1,'dojo-sniff':1,'dojo-test-sniff':1,'config-deferredInstrumentation':1,'config-tlmSiblingOfDojo':1}),'paths':({'js':'js','theme':'theme','css':'//chuckdumont.github.io/dojo-css-plugin/1.0.0/css'}),'pathsMapProg':[['theme','theme',/^theme(\/|$)/,5],['css','//chuckdumont.github.io/dojo-css-plugin/1.0.0/css',/^css(\/|$)/,3],['js','js',/^js(\/|$)/,2]],'packs':({'dojo':({'main':'main','name':'dojo','location':'./dist/dojo','lib':'.'}),'dijit':({'main':'main','name':'dijit','location':'./dist/dijit','lib':'.'}),'dojox':({'main':'main','name':'dojox','location':'./dist/dojox','lib':'.'}),'dijit-themes':({'main':'main','name':'dijit-themes','location':'./dist/dijit-themes','lib':'.'}),'dgrid':({'main':'main','name':'dgrid','location':'./dist/dgrid','lib':'.'}),'dstore':({'main':'main','name':'dstore','location':'./dist/dojo-dstore','lib':'.'})}),'aliases':[],'mapProgs':[],'cacheBust':undefined,'modules':({}),'cache':({})});
30009
- /******/ var dojoLoader = __webpack_require__(8810);
30009
+ /******/ var dojoLoader = __webpack_require__(2093);
30010
30010
  /******/ dojoLoader.call(loaderScope, userConfig, defaultConfig, loaderScope, loaderScope);
30011
30011
  /******/ loaderScope.require.baseUrl = "./";
30012
30012
  /******/ Object.keys(loaderScope.require.packs).forEach(function(key) {