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