1require({cache:{ 2'RadioButtonList/widget/AttrRadioButtonList':function(){ 3/*jslint browser: true, devel:true, nomen:true, unparam:true, regexp: true, plusplus:true*/ 4/*global require, define, console, mx, mendix*/ 5define([ 6 "dojo/_base/declare", 7 "mxui/widget/_WidgetBase", 8 "dijit/_TemplatedMixin", 9 "dijit/focus", 10 "mxui/dom", 11 "dojo/dom-class", 12 "dojo/dom-style", 13 "dojo/dom-construct", 14 "dojo/dom-attr", 15 "dojo/_base/array", 16 "dojo/_base/lang", 17 "dojo/html", 18 "dojo/text!RadioButtonList/widget/template/RadioButtonList.html" 19], function (declare, _WidgetBase, _TemplatedMixin, focusUtil, dom, dojoClass, dojoStyle, dojoConstruct, dojoAttr, dojoArray, lang, dojoHtml, widgetTemplate) { 20 "use strict"; 21 22 // Declare widget's prototype. 23 return declare("RadioButtonList.widget.AttrRadioButtonList", [_WidgetBase, _TemplatedMixin], { 24 25 templateString: widgetTemplate, 26 27 // DOM elements 28 inputNodes: null, 29 30 // Parameters configurable in Business Modeler. 31 entity: null, 32 direction: "vertical", 33 captiontrue: "", 34 captionfalse: "", 35 readonly: false, 36 onchangeAction: "", 37 allowDeselect: false, 38 formOrientation: null, 39 40 // Internal variables. Non-primitives created in the prototype are shared between all widget instances. 41 _handles: null, 42 _contextObj: null, 43 _alertDiv: null, 44 _radioButtonOptions: null, 45 _setup: false, 46 _radioContainer: null, 47 48 constructor: function () { 49 this._handles = []; 50 }, 51 52 postCreate: function () { 53 console.debug(this.id + ".postCreate"); 54 }, 55 56 update: function (obj, callback) { 57 console.debug(this.id + ".update"); 58 this._contextObj = obj;
59 this._resetSubscriptions(); 60 this._setRadiobuttonOptions(); 61 62 if (!this._setup) { 63 this._setupWidget(lang.hitch(this, function () { 64 this._updateRendering(callback); 65 })); 66 } else { 67 this._updateRendering(callback); 68 } 69 }, 70 71 _setupWidget: function (callback) { 72 console.debug(this.id + "._setupWidget"); 73 74 if (this.readOnly || this.get("disabled") || this.readonly) { 75 //this.readOnly isn"t available in client API, this.get("disabled") works correctly since 5.18. 76 this._isReadOnly = true; 77 } 78 79 // adjust the template based on the display settings. 80 if (this.showLabel) { 81 if (dojoClass.contains(this.radioButtonLabel, "hidden")) { 82 dojoClass.remove(this.radioButtonLabel, "hidden"); 83 } 84 85 if (this.formOrientation === "horizontal") { 86 // width needs to be between 1 and 11 87 var labelWidth = this.labelWidth < 1 ? 1 : this.labelWidth; 88 labelWidth = this.labelWidth > 11 ? 11 : this.labelWidth; 89 90 var controlWidth = 12 - labelWidth, 91 comboLabelClass = "col-sm-" + labelWidth; 92 93 dojoClass.add(this.radioButtonLabel, comboLabelClass); 94 95 this._radioContainer = dojoConstruct.place(dojoConstruct.create("div", { 96 "class": "col-sm-" + controlWidth 97 }), this.radioButtonContainer, "last"); 98 99 dojoConstruct.place(this.inputNodes, this._radioContainer, "only"); 100 } else { 101 dojoClass.add(this.radioButtonContainer, "no-columns"); 102 } 103 104 this.radioButtonLabel.innerHTML = this.fieldCaption; 105 } else { 106 if (!dojoClass.contains(this.radioButtonLabel, "hidden")) { 107 dojoClass.add(this.radioButtonLabel, "hidden"); 108 } 109 dojoClass.add(this.radioButtonContainer, "no-columns"); 110 } 111 112 if (this.direction === "horizontal") { 113 dojoClass.add(this.radioButtonContainer, "inline"); 114 } 115 116 this._setup = true; 117 118 this._executeCallback(callback, "_setupWidget"); 119 }, 120 121 resize: function (box) {}, 122 123 uninitialize: function () { 124 if (this._handles) { 125 dojoArray.forEach(this._handles, function (handle, i) { 126 mx.data.unsubscribe(handle); 127 }); 128 this._handles = []; 129 } 130 }, 131 132 _updateRendering: function (callback) { 133 console.debug(this.id + "._updateRendering"); 134 135 if (this._contextObj !== null) { 136 dojoStyle.set(this.domNode, "display", ""); 137 this._createRadiobuttonNodes(callback); 138 } else { 139 dojoStyle.set(this.domNode, "display", "none"); 140 this._executeCallback(callback, " _updateRendering no contextObj"); 141 } 142 143 // Important to clear all validations! 144 this._clearValidations(); 145 }, 146 147 _handleValidation: function (validations) { 148 console.debug(this.id + "._handleValidation"); 149 this._clearValidations(); 150 151 var validation = validations[0], 152 message = validation.getReasonByAttribute(this.entity); 153 154 if (this._isReadOnly || this._contextObj.isReadonlyAttr(this.entity)) { 155 return; 156 } 157 158 this._addValidation(message); 159 validation.removeAttribute(this.entity); 160 }, 161 162 _clearValidations: function () { 163 console.debug(this.id + "._clearValidations"); 164 dojoConstruct.destroy(this._alertDiv); 165 this._alertDiv = null; 166 dojoClass.remove(this.radioButtonContainer, "has-error"); 167 }, 168 169 _showError: function (message) { 170 console.debug(this.id + "._showError"); 171 if (this._alertDiv !== null) { 172 dojoHtml.set(this._alertDiv, message); 173 return true; 174 } 175 this._alertDiv = dojoConstruct.create("div", { 176 "class": "alert alert-danger mx-validation-message", 177 "role": "alert", 178 "innerHTML": message 179 }); 180 dojoConstruct.place(this._alertDiv, this._radioContainer ? this._radioContainer : this.radioButtonContainer); 181 }, 182 183 _addValidation: function (message) { 184 console.debug(this.id + "._addValidation"); 185 if(message) { 186 this._showError(message); 187 dojoClass.add(this.radioButtonContainer, "has-error"); 188 } 189 }, 190 191 _resetSubscriptions: function () { 192 console.debug(this.id + "._resetSubscriptions");
193 var validationHandle = null, 194 objectHandle = null, 195 attrHandle = null; 196 197 // Release handles on previous object, if any. 198 this.unsubscribeAll(); 199 200 // When a mendix object exists create subscribtions. 201 if (this._contextObj) { 202 this.subscribe({ 203 guid: this._contextObj.getGuid(), 204 val: true, 205 callback: lang.hitch(this, this._handleValidation) 206 }); 207 208 this.subscribe({ 209 guid: this._contextObj.getGuid(), 210 callback: lang.hitch(this, function (guid) { 211 this._updateRendering(); 212 }) 213 }); 214 215 this.subscribe({ 216 guid: this._contextObj.getGuid(), 217 attr: this.entity, 218 callback: lang.hitch(this, function (guid, attr, attrValue) { 219 this._updateRendering(); 220 }) 221 }); 222 } 223 }, 224 225 _setRadiobuttonOptions: function () { 226 console.debug(this.id + "._setRadiobuttonOptions"); 227 if (this.entity !== "" && this._contextObj) { 228 //get enumeration for current attribute 229 if (this._contextObj.getAttributeType(this.entity) === "Enum") { 230 var enumMap = this._contextObj.getEnumMap(this.entity); 231 this._radioButtonOptions = {}; 232 for(var i = 0; i < enumMap.length; i++) { 233 this._radioButtonOptions[enumMap[i].key] = enumMap[i].caption; 234 } 235 } else if (this._contextObj.getAttributeType(this.entity) === "Boolean") { 236 this._radioButtonOptions = {}; 237 this._radioButtonOptions["true"] = this.captiontrue; 238 this._radioButtonOptions["false"] = this.captionfalse; 239 } 240 } 241 }, 242 243 _createRadiobuttonNodes: function (callback) { 244 console.debug(this.id + "._createRadiobuttonNode"); 245 var labelNode = null, 246 radioButtonNode = null, 247 i = 0, 248 j = 0, 249 nodelength = null, 250 enclosingDivElement = null; 251 252 if(this.inputNodes !== null) { 253 if (this.inputNodes.children !== null) { 254 nodelength = this.inputNodes.children.length; 255 } 256 257 dojoConstruct.empty(this.inputNodes); 258 259 for (var option in this._radioButtonOptions) { 260 if (this._radioButtonOptions.hasOwnProperty(option)) { 261 262 labelNode = this._createLabelNode(option, this._radioButtonOptions[option], i); 263 radioButtonNode = this._createRadiobuttonNode(option, this._radioButtonOptions[option], i); 264 265 //an enclosing div element is required to vertically align a radiobuttonlist in bootstrap. 266 if (this.inputNodes.children && this.inputNodes.children[i]) { 267 enclosingDivElement = this.inputNodes.children[i]; 268 } else { 269 enclosingDivElement = dojoConstruct.create("div", { 270 "class": "radio" 271 }); 272 } 273 if (enclosingDivElement.children[0]) { 274 dojoConstruct.destroy(enclosingDivElement.children[0]); 275 } 276 277 dojoConstruct.place(radioButtonNode, enclosingDivElement, "first"); 278 dojoConstruct.place(labelNode, enclosingDivElement, "last"); 279 280 if (!this.inputNodes.children[i]) { 281 dojoConstruct.place(enclosingDivElement, this.inputNodes, "last"); 282 if(dojoAttr.get(radioButtonNode, "defaultChecked")) {
283 focusUtil.focus(radioButtonNode); 284 } 285 } 286 } 287 288 i++; 289 } 290 291 j = i; 292 if (j > 0) { 293 for (j; j <= nodelength; j++) { 294 dojoConstruct.destroy(this.inputNodes.children[i]); 295 } 296 } 297 298 this._executeCallback(callback, "_createRadiobuttonNodes"); 299 } 300 }, 301 302 _createLabelNode: function (key, value, index) { 303 console.debug(this.id + "._createLabelNode"); 304 var labelNode = dojoConstruct.create("label", { 305 "for": this.entity + "_" + this.id + "_" + index, 306 "innerHTML": value 307 }); 308 309 return labelNode; 310 }, 311 312 _createRadiobuttonNode: function (key, value, index) { 313 console.debug(this.id + "._createRadiobuttonNode"); 314 var radiobuttonNode = null; 315 316 radiobuttonNode = dojoConstruct.create("input", { 317 "type": "radio", 318 "value": key, 319 "id": this.entity + "_" + this.id + "_" + index 320 }); 321 322 dojoAttr.set(radiobuttonNode, "name", "radio" + this._contextObj.getGuid() + "_" + this.id); 323 324 if (this._isReadOnly || 325 this._contextObj.isReadonlyAttr(this.entity)) { 326 dojoAttr.set(radiobuttonNode, "disabled", "disabled"); 327 dojoAttr.set(radiobuttonNode, "readonly", "readonly"); 328 } 329 330 if ("" + this._contextObj.get(this.entity) === key) { 331 dojoAttr.set(radiobuttonNode, "defaultChecked", true); 332 } 333 334 this._addOnclickToRadiobuttonItem(radiobuttonNode, key); 335 336 return radiobuttonNode; 337 }, 338 339 _addOnclickToRadiobuttonItem: function (radiobuttonNode, rbvalue) { 340 console.debug(this.id + "._addOnclickToRadiobuttonItem"); 341 this.connect(radiobuttonNode, "onclick", lang.hitch(this, function () { 342 343 if (this._isReadOnly || 344 this._contextObj.isReadonlyAttr(this.entity)) { 345 return; 346 } 347 348 if ("Boolean" === this._contextObj.getAttributeType(this.entity)) { 349 rbvalue = rbvalue === "true"; 350 } 351 352 if (this.allowDeselect && this._contextObj.get(this.entity) === rbvalue) { 353 dojoAttr.set(radiobuttonNode, "checked", false); 354 this._contextObj.set(this.entity, ""); 355 } else { 356 dojoAttr.set(radiobuttonNode, "checked", true); 357 this._contextObj.set(this.entity, rbvalue); 358 } 359 360 if (this.onchangeAction) { 361 var action = { 362 params: { 363 applyto: "selection", 364 actionname: this.onchangeAction, 365 guids: [this._contextObj.getGuid()] 366 }, 367 error: lang.hitch(this, function (error) { 368 console.error(this.id + ": XAS error executing microflow; " + error.description); 369 }) 370 }; 371 372 if (!mx.version || !!mx.version && 7 > parseInt(mx.version.split(".")[ 0 ], 10)) { 373 action.store = { 374 caller: this.mxform, 375 }; 376 } else { 377 action.origin = this.mxform; 378 } 379 380 mx.data.action(action, this); 381 } 382 })); 383 }, 384 385 _executeCallback: function (cb, from) { 386 console.debug(this.id + "._executeCallback " + (typeof cb) + (from ? " from " + from : "")); 387 if (cb && typeof cb === "function") { 388 cb(); 389 } 390 } 391 });
392}); 393 394require(["RadioButtonList/widget/AttrRadioButtonList"]); 395 396}, 397'dojo/html':function(){
vendor: 13,537 bytes, lines 398-776
398define(["./_base/kernel", "./_base/lang", "./_base/array", "./_base/declare", "./dom", "./dom-construct", "./parser"], 399 function(kernel, lang, darray, declare, dom, domConstruct, parser){ 400 // module: 401 // dojo/html 402 403 // the parser might be needed.. 404 405 // idCounter is incremented with each instantiation to allow assignment of a unique id for tracking, logging purposes 406 var idCounter = 0; 407 408 var html = { 409 // summary: 410 // TODOC 411 412 _secureForInnerHtml: function(/*String*/ cont){ 413 // summary: 414 // removes !DOCTYPE and title elements from the html string. 415 // 416 // khtml is picky about dom faults, you can't attach a style or `<title>` node as child of body 417 // must go into head, so we need to cut out those tags 418 // cont: 419 // An html string for insertion into the dom 420 // 421 return cont.replace(/(?:\s*<!DOCTYPE\s[^>]+>|<title[^>]*>[\s\S]*?<\/title>)/ig, ""); // String 422 }, 423 424 // Deprecated, should use dojo/dom-constuct.empty() directly, remove in 2.0. 425 _emptyNode: domConstruct.empty, 426 427 _setNodeContent: function(/*DomNode*/ node, /*String|DomNode|NodeList*/ cont){ 428 // summary: 429 // inserts the given content into the given node 430 // node: 431 // the parent element 432 // content: 433 // the content to be set on the parent element. 434 // This can be an html string, a node reference or a NodeList, dojo/NodeList, Array or other enumerable list of nodes 435 436 // always empty 437 domConstruct.empty(node); 438 439 if(cont){ 440 if(typeof cont == "number"){ 441 cont = cont.toString(); 442 } 443 if(typeof cont == "string"){ 444 cont = domConstruct.toDom(cont, node.ownerDocument); 445 } 446 if(!cont.nodeType && lang.isArrayLike(cont)){ 447 // handle as enumerable, but it may shrink as we enumerate it 448 for(var startlen=cont.length, i=0; i<cont.length; i=startlen==cont.length ? i+1 : 0){ 449 domConstruct.place( cont[i], node, "last"); 450 } 451 }else{ 452 // pass nodes, documentFragments and unknowns through to dojo.place 453 domConstruct.place(cont, node, "last"); 454 } 455 } 456 457 // return DomNode 458 return node; 459 }, 460 461 // we wrap up the content-setting operation in a object 462 _ContentSetter: declare("dojo.html._ContentSetter", null, { 463 // node: DomNode|String 464 // An node which will be the parent element that we set content into 465 node: "", 466 467 // content: String|DomNode|DomNode[] 468 // The content to be placed in the node. Can be an HTML string, a node reference, or a enumerable list of nodes 469 content: "", 470 471 // id: String? 472 // Usually only used internally, and auto-generated with each instance 473 id: "", 474 475 // cleanContent: Boolean 476 // Should the content be treated as a full html document, 477 // and the real content stripped of <html>, <body> wrapper before injection 478 cleanContent: false, 479 480 // extractContent: Boolean 481 // Should the content be treated as a full html document, 482 // and the real content stripped of `<html> <body>` wrapper before injection 483 extractContent: false, 484 485 // parseContent: Boolean 486 // Should the node by passed to the parser after the new content is set 487 parseContent: false, 488 489 // parserScope: String 490 // Flag passed to parser. Root for attribute names to search for. If scopeName is dojo, 491 // will search for data-dojo-type (or dojoType). For backwards compatibility 492 // reasons defaults to dojo._scopeName (which is "dojo" except when 493 // multi-version support is used, when it will be something like dojo16, dojo20, etc.) 494 parserScope: kernel._scopeName, 495 496 // startup: Boolean 497 // Start the child widgets after parsing them. Only obeyed if parseContent is true. 498 startup: true, 499 500 // lifecycle methods 501 constructor: function(/*Object*/ params, /*String|DomNode*/ node){ 502 // summary: 503 // Provides a configurable, extensible object to wrap the setting on content on a node 504 // call the set() method to actually set the content.. 505 506 // the original params are mixed directly into the instance "this" 507 lang.mixin(this, params || {}); 508 509 // give precedence to params.node vs. the node argument 510 // and ensure its a node, not an id string 511 node = this.node = dom.byId( this.node || node ); 512 513 if(!this.id){ 514 this.id = [ 515 "Setter", 516 (node) ? node.id || node.tagName : "", 517 idCounter++ 518 ].join("_"); 519 } 520 }, 521 set: function(/* String|DomNode|NodeList? */ cont, /*Object?*/ params){ 522 // summary: 523 // front-end to the set-content sequence 524 // cont: 525 // An html string, node or enumerable list of nodes for insertion into the dom 526 // If not provided, the object's content property will be used 527 if(undefined !== cont){ 528 this.content = cont; 529 } 530 if(typeof cont == 'number'){ 531 cont = cont.toString(); 532 } 533 // in the re-use scenario, set needs to be able to mixin new configuration 534 if(params){ 535 this._mixin(params); 536 } 537 538 this.onBegin(); 539 this.setContent(); 540 541 var ret = this.onEnd(); 542 543 if(ret && ret.then){ 544 // Make dojox/html/_ContentSetter.set() return a Promise that resolves when load and parse complete. 545 return ret; 546 }else{ 547 // Vanilla dojo/html._ContentSetter.set() returns a DOMNode for back compat. For 2.0, switch it to 548 // return a Deferred like above. 549 return this.node; 550 } 551 }, 552 553 setContent: function(){ 554 // summary: 555 // sets the content on the node 556 557 var node = this.node; 558 if(!node){ 559 // can't proceed 560 throw new Error(this.declaredClass + ": setContent given no node"); 561 } 562 try{ 563 node = html._setNodeContent(node, this.content); 564 }catch(e){ 565 // check if a domfault occurs when we are appending this.errorMessage 566 // like for instance if domNode is a UL and we try append a DIV 567 568 // FIXME: need to allow the user to provide a content error message string 569 var errMess = this.onContentError(e); 570 try{ 571 node.innerHTML = errMess; 572 }catch(e){ 573 console.error('Fatal ' + this.declaredClass + '.setContent could not change content due to '+e.message, e); 574 } 575 } 576 // always put back the node for the next method 577 this.node = node; // DomNode 578 }, 579 580 empty: function(){ 581 // summary: 582 // cleanly empty out existing content 583 584 // If there is a parse in progress, cancel it. 585 if(this.parseDeferred){ 586 if(!this.parseDeferred.isResolved()){ 587 this.parseDeferred.cancel(); 588 } 589 delete this.parseDeferred; 590 } 591 592 // destroy any widgets from a previous run 593 // NOTE: if you don't want this you'll need to empty 594 // the parseResults array property yourself to avoid bad things happening 595 if(this.parseResults && this.parseResults.length){ 596 darray.forEach(this.parseResults, function(w){ 597 if(w.destroy){ 598 w.destroy(); 599 } 600 }); 601 delete this.parseResults; 602 } 603 // this is fast, but if you know its already empty or safe, you could 604 // override empty to skip this step 605 domConstruct.empty(this.node); 606 }, 607 608 onBegin: function(){ 609 // summary: 610 // Called after instantiation, but before set(); 611 // It allows modification of any of the object properties - 612 // including the node and content provided - before the set operation actually takes place 613 // This default implementation checks for cleanContent and extractContent flags to 614 // optionally pre-process html string content 615 var cont = this.content; 616 617 if(lang.isString(cont)){ 618 if(this.cleanContent){ 619 cont = html._secureForInnerHtml(cont); 620 } 621 622 if(this.extractContent){ 623 var match = cont.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im); 624 if(match){ cont = match[1]; } 625 } 626 } 627 628 // clean out the node and any cruft associated with it - like widgets 629 this.empty(); 630 631 this.content = cont; 632 return this.node; // DomNode 633 }, 634 635 onEnd: function(){ 636 // summary: 637 // Called after set(), when the new content has been pushed into the node 638 // It provides an opportunity for post-processing before handing back the node to the caller 639 // This default implementation checks a parseContent flag to optionally run the dojo parser over the new content 640 if(this.parseContent){ 641 // populates this.parseResults and this.parseDeferred if you need those.. 642 this._parse(); 643 } 644 return this.node; // DomNode 645 // TODO: for 2.0 return a Promise indicating that the parse completed. 646 }, 647 648 tearDown: function(){ 649 // summary: 650 // manually reset the Setter instance if its being re-used for example for another set() 651 // description: 652 // tearDown() is not called automatically. 653 // In normal use, the Setter instance properties are simply allowed to fall out of scope 654 // but the tearDown method can be called to explicitly reset this instance. 655 delete this.parseResults; 656 delete this.parseDeferred; 657 delete this.node; 658 delete this.content; 659 }, 660 661 onContentError: function(err){ 662 return "Error occurred setting content: " + err; 663 }, 664 665 onExecError: function(err){ 666 return "Error occurred executing scripts: " + err; 667 }, 668 669 _mixin: function(params){ 670 // mix properties/methods into the instance 671 // TODO: the intention with tearDown is to put the Setter's state 672 // back to that of the original constructor (vs. deleting/resetting everything regardless of ctor params) 673 // so we could do something here to move the original properties aside for later restoration 674 var empty = {}, key; 675 for(key in params){ 676 if(key in empty){ continue; } 677 // TODO: here's our opportunity to mask the properties we don't consider configurable/overridable 678 // .. but history shows we'll almost always guess wrong 679 this[key] = params[key]; 680 } 681 }, 682 _parse: function(){ 683 // summary: 684 // runs the dojo parser over the node contents, storing any results in this.parseResults 685 // and the parse promise in this.parseDeferred 686 // Any errors resulting from parsing are passed to _onError for handling 687 688 var rootNode = this.node; 689 try{ 690 // store the results (widgets, whatever) for potential retrieval 691 var inherited = {}; 692 darray.forEach(["dir", "lang", "textDir"], function(name){ 693 if(this[name]){ 694 inherited[name] = this[name]; 695 } 696 }, this); 697 var self = this; 698 this.parseDeferred = parser.parse({ 699 rootNode: rootNode, 700 noStart: !this.startup, 701 inherited: inherited, 702 scope: this.parserScope 703 }).then(function(results){ 704 return self.parseResults = results; 705 }, function(e){ 706 self._onError('Content', e, "Error parsing in _ContentSetter#" + self.id); 707 }); 708 }catch(e){ 709 this._onError('Content', e, "Error parsing in _ContentSetter#" + this.id); 710 } 711 }, 712 713 _onError: function(type, err, consoleText){ 714 // summary: 715 // shows user the string that is returned by on[type]Error 716 // override/implement on[type]Error and return your own string to customize 717 var errText = this['on' + type + 'Error'].call(this, err); 718 if(consoleText){ 719 console.error(consoleText, err); 720 }else if(errText){ // a empty string won't change current content 721 html._setNodeContent(this.node, errText, true); 722 } 723 } 724 }), // end declare() 725 726 set: function(/*DomNode*/ node, /*String|DomNode|NodeList*/ cont, /*Object?*/ params){ 727 // summary: 728 // inserts (replaces) the given content into the given node. dojo/dom-construct.place(cont, node, "only") 729 // may be a better choice for simple HTML insertion. 730 // description: 731 // Unless you need to use the params capabilities of this method, you should use 732 // dojo/dom-construct.place(cont, node, "only"). dojo/dom-construct..place() has more robust support for injecting 733 // an HTML string into the DOM, but it only handles inserting an HTML string as DOM 734 // elements, or inserting a DOM node. dojo/dom-construct..place does not handle NodeList insertions 735 // dojo/dom-construct.place(cont, node, "only"). dojo/dom-construct.place() has more robust support for injecting 736 // an HTML string into the DOM, but it only handles inserting an HTML string as DOM 737 // elements, or inserting a DOM node. dojo/dom-construct.place does not handle NodeList insertions 738 // or the other capabilities as defined by the params object for this method. 739 // node: 740 // the parent element that will receive the content 741 // cont: 742 // the content to be set on the parent element. 743 // This can be an html string, a node reference or a NodeList, dojo/NodeList, Array or other enumerable list of nodes 744 // params: 745 // Optional flags/properties to configure the content-setting. See dojo/html/_ContentSetter 746 // example: 747 // A safe string/node/nodelist content replacement/injection with hooks for extension 748 // Example Usage: 749 // | html.set(node, "some string"); 750 // | html.set(node, contentNode, {options}); 751 // | html.set(node, myNode.childNodes, {options}); 752 if(undefined == cont){ 753 console.warn("dojo.html.set: no cont argument provided, using empty string"); 754 cont = ""; 755 } 756 if (typeof cont == 'number'){ 757 cont = cont.toString(); 758 } 759 if(!params){ 760 // simple and fast 761 return html._setNodeContent(node, cont, true); 762 }else{ 763 // more options but slower 764 // note the arguments are reversed in order, to match the convention for instantiation via the parser 765 var op = new html._ContentSetter(lang.mixin( 766 params, 767 { content: cont, node: node } 768 )); 769 return op.set(); 770 } 771 } 772 }; 773 lang.setObject("dojo.html", html); 774 775 return html; 776});
777 778}, 779'dojo/parser':function(){
vendor: 35,449 bytes, lines 780-1704
780define([ 781 "require", "./_base/kernel", "./_base/lang", "./_base/array", "./_base/config", "./dom", "./_base/window", 782 "./_base/url", "./aspect", "./promise/all", "./date/stamp", "./Deferred", "./has", "./json5", "./query", "./on", 783 "./ready" 784], function(require, dojo, dlang, darray, config, dom, dwindow, _Url, aspect, all, dates, Deferred, has, json5, query, 785 don, ready){ 786 787 // module: 788 // dojo/parser 789 790 new Date("X"); // workaround for #11279, new Date("") == NaN 791 792 var myEval; 793 if(has('csp-restrictions')) { 794 // JSON5 data attributes can be parsed without using eval; JS expressions will throw an error 795 myEval = json5.parse; 796 } 797 else { 798 myEval = function(text){ 799 // data-dojo-props etc. is not restricted to JSON, it can be any javascript 800 /* jshint -W061 */ 801 return eval("(" + text + ")"); 802 }; 803 } 804 805 // Widgets like BorderContainer add properties to _Widget via dojo.extend(). 806 // If BorderContainer is loaded after _Widget's parameter list has been cached, 807 // we need to refresh that parameter list (for _Widget and all widgets that extend _Widget). 808 var extendCnt = 0; 809 aspect.after(dlang, "extend", function(){ 810 extendCnt++; 811 }, true); 812 813 function getNameMap(ctor){ 814 // summary: 815 // Returns map from lowercase name to attribute name in class, ex: {onclick: "onClick"} 816 var map = ctor._nameCaseMap, proto = ctor.prototype; 817 818 // Create the map if it's undefined. 819 // Refresh the map if a superclass was possibly extended with new methods since the map was created. 820 if(!map || map._extendCnt < extendCnt){ 821 map = ctor._nameCaseMap = {}; 822 for(var name in proto){ 823 if(name.charAt(0) === "_"){ 824 continue; 825 } // skip internal properties 826 map[name.toLowerCase()] = name; 827 } 828 map._extendCnt = extendCnt; 829 } 830 return map; 831 } 832 833 function getCtor(/*String[]*/ types, /*Function?*/ contextRequire){ 834 // summary: 835 // Retrieves a constructor. If the types array contains more than one class/MID then the 836 // subsequent classes will be mixed into the first class and a unique constructor will be 837 // returned for that array. 838 839 if(!contextRequire){ 840 contextRequire = require; 841 } 842 843 // Map from widget name or list of widget names(ex: "dijit/form/Button,acme/MyMixin") to a constructor. 844 // Keep separate map for each requireContext to avoid false matches (ex: "./Foo" can mean different things 845 // depending on context.) 846 var ctorMap = contextRequire._dojoParserCtorMap || (contextRequire._dojoParserCtorMap = {}); 847 848 var ts = types.join(); 849 if(!ctorMap[ts]){ 850 var mixins = []; 851 for(var i = 0, l = types.length; i < l; i++){ 852 var t = types[i]; 853 // TODO: Consider swapping getObject and require in the future 854 mixins[mixins.length] = (ctorMap[t] = ctorMap[t] || (dlang.getObject(t) || (~t.indexOf('/') && 855 contextRequire(t)))); 856 } 857 var ctor = mixins.shift(); 858 ctorMap[ts] = mixins.length ? (ctor.createSubclass ? ctor.createSubclass(mixins) : ctor.extend.apply(ctor, mixins)) : ctor; 859 } 860 861 return ctorMap[ts]; 862 } 863 864 var parser = { 865 // summary: 866 // The Dom/Widget parsing package 867 868 _clearCache: function(){ 869 // summary: 870 // Clear cached data. Used mainly for benchmarking. 871 extendCnt++; 872 _ctorMap = {}; 873 }, 874 875 _functionFromScript: function(script, attrData){ 876 // summary: 877 // Convert a `<script type="dojo/method" args="a, b, c"> ... </script>` 878 // into a function 879 // script: DOMNode 880 // The `<script>` DOMNode 881 // attrData: String 882 // For HTML5 compliance, searches for attrData + "args" (typically 883 // "data-dojo-args") instead of "args" 884 var preamble = "", 885 suffix = "", 886 argsStr = (script.getAttribute(attrData + "args") || script.getAttribute("args")), 887 withStr = script.getAttribute("with"); 888 889 // Convert any arguments supplied in script tag into an array to be passed to the 890 var fnArgs = (argsStr || "").split(/\s*,\s*/); 891 892 if(withStr && withStr.length){ 893 darray.forEach(withStr.split(/\s*,\s*/), function(part){ 894 preamble += "with(" + part + "){"; 895 suffix += "}"; 896 }); 897 } 898 899 return new Function(fnArgs, preamble + script.innerHTML + suffix); 900 }, 901 902 instantiate: function(nodes, mixin, options){ 903 // summary: 904 // Takes array of nodes, and turns them into class instances and 905 // potentially calls a startup method to allow them to connect with 906 // any children. 907 // nodes: Array 908 // Array of DOM nodes 909 // mixin: Object? 910 // An object that will be mixed in with each node in the array. 911 // Values in the mixin will override values in the node, if they 912 // exist. 913 // options: Object? 914 // An object used to hold kwArgs for instantiation. 915 // See parse.options argument for details. 916 // returns: 917 // Array of instances. 918 919 mixin = mixin || {}; 920 options = options || {}; 921 922 var dojoType = (options.scope || dojo._scopeName) + "Type", // typically "dojoType" 923 attrData = "data-" + (options.scope || dojo._scopeName) + "-", // typically "data-dojo-" 924 dataDojoType = attrData + "type", // typically "data-dojo-type" 925 dataDojoMixins = attrData + "mixins"; // typically "data-dojo-mixins" 926 927 var list = []; 928 darray.forEach(nodes, function(node){ 929 var type = dojoType in mixin ? mixin[dojoType] : node.getAttribute(dataDojoType) || node.getAttribute(dojoType); 930 if(type){ 931 var mixinsValue = node.getAttribute(dataDojoMixins), 932 types = mixinsValue ? [type].concat(mixinsValue.split(/\s*,\s*/)) : [type]; 933 934 list.push({ 935 node: node, 936 types: types 937 }); 938 } 939 }); 940 941 // Instantiate the nodes and return the list of instances. 942 return this._instantiate(list, mixin, options); 943 }, 944 945 _instantiate: function(nodes, mixin, options, returnPromise){ 946 // summary: 947 // Takes array of objects representing nodes, and turns them into class instances and 948 // potentially calls a startup method to allow them to connect with 949 // any children. 950 // nodes: Array 951 // Array of objects like 952 // | { 953 // | ctor: Function (may be null) 954 // | types: ["dijit/form/Button", "acme/MyMixin"] (used if ctor not specified) 955 // | node: DOMNode, 956 // | scripts: [ ... ], // array of <script type="dojo/..."> children of node 957 // | inherited: { ... } // settings inherited from ancestors like dir, theme, etc. 958 // | } 959 // mixin: Object 960 // An object that will be mixed in with each node in the array. 961 // Values in the mixin will override values in the node, if they 962 // exist. 963 // options: Object 964 // An options object used to hold kwArgs for instantiation. 965 // See parse.options argument for details. 966 // returnPromise: Boolean 967 // Return a Promise rather than the instance; supports asynchronous widget creation. 968 // returns: 969 // Array of instances, or if returnPromise is true, a promise for array of instances 970 // that resolves when instances have finished initializing. 971 972 // Call widget constructors. Some may be asynchronous and return promises. 973 var thelist = darray.map(nodes, function(obj){ 974 var ctor = obj.ctor || getCtor(obj.types, options.contextRequire); 975 // If we still haven't resolved a ctor, it is fatal now 976 if(!ctor){ 977 throw new Error("Unable to resolve constructor for: '" + obj.types.join() + "'"); 978 } 979 return this.construct(ctor, obj.node, mixin, options, obj.scripts, obj.inherited); 980 }, this); 981 982 // After all widget construction finishes, call startup on each top level instance if it makes sense (as for 983 // widgets). Parent widgets will recursively call startup on their (non-top level) children 984 function onConstruct(thelist){ 985 if(!mixin._started && !options.noStart){ 986 darray.forEach(thelist, function(instance){ 987 if(typeof instance.startup === "function" && !instance._started){ 988 instance.startup(); 989 } 990 }); 991 } 992 993 return thelist; 994 } 995 996 if(returnPromise){ 997 return all(thelist).then(onConstruct); 998 }else{ 999 // Back-compat path, remove for 2.0 1000 return onConstruct(thelist); 1001 } 1002 }, 1003 1004 construct: function(ctor, node, mixin, options, scripts, inherited){ 1005 // summary: 1006 // Calls new ctor(params, node), where params is the hash of parameters specified on the node, 1007 // excluding data-dojo-type and data-dojo-mixins. Does not call startup(). 1008 // ctor: Function 1009 // Widget constructor. 1010 // node: DOMNode 1011 // This node will be replaced/attached to by the widget. It also specifies the arguments to pass to ctor. 1012 // mixin: Object? 1013 // Attributes in this object will be passed as parameters to ctor, 1014 // overriding attributes specified on the node. 1015 // options: Object? 1016 // An options object used to hold kwArgs for instantiation. See parse.options argument for details. 1017 // scripts: DomNode[]? 1018 // Array of `<script type="dojo/*">` DOMNodes. If not specified, will search for `<script>` tags inside node. 1019 // inherited: Object? 1020 // Settings from dir=rtl or lang=... on a node above this node. Overrides options.inherited. 1021 // returns: 1022 // Instance or Promise for the instance, if markupFactory() itself returned a promise 1023 1024 var proto = ctor && ctor.prototype; 1025 options = options || {}; 1026 1027 // Setup hash to hold parameter settings for this widget. Start with the parameter 1028 // settings inherited from ancestors ("dir" and "lang"). 1029 // Inherited setting may later be overridden by explicit settings on node itself. 1030 var params = {}; 1031 1032 if(options.defaults){ 1033 // settings for the document itself (or whatever subtree is being parsed) 1034 dlang.mixin(params, options.defaults); 1035 } 1036 if(inherited){ 1037 // settings from dir=rtl or lang=... on a node above this node 1038 dlang.mixin(params, inherited); 1039 } 1040 1041 // Get list of attributes explicitly listed in the markup 1042 var attributes; 1043 if(has("dom-attributes-explicit")){ 1044 // Standard path to get list of user specified attributes 1045 attributes = node.attributes; 1046 }else if(has("dom-attributes-specified-flag")){ 1047 // Special processing needed for IE8, to skip a few faux values in attributes[] 1048 attributes = darray.filter(node.attributes, function(a){ 1049 return a.specified; 1050 }); 1051 }else{ 1052 // Special path for IE6-7, avoid (sometimes >100) bogus entries in node.attributes 1053 var clone = /^input$|^img$/i.test(node.nodeName) ? node : node.cloneNode(false), 1054 attrs = clone.outerHTML.replace(/=[^\s"']+|="[^"]*"|='[^']*'/g, "").replace(/^\s*<[a-zA-Z0-9]*\s*/, "").replace(/\s*>.*$/, ""); 1055 1056 attributes = darray.map(attrs.split(/\s+/), function(name){ 1057 var lcName = name.toLowerCase(); 1058 return { 1059 name: name, 1060 // getAttribute() doesn't work for button.value, returns innerHTML of button. 1061 // but getAttributeNode().value doesn't work for the form.encType or li.value 1062 value: (node.nodeName == "LI" && name == "value") || lcName == "enctype" ? 1063 node.getAttribute(lcName) : node.getAttributeNode(lcName).value 1064 }; 1065 }); 1066 } 1067 1068 // Hash to convert scoped attribute name (ex: data-dojo17-params) to something friendly (ex: data-dojo-params) 1069 // TODO: remove scope for 2.0 1070 var scope = options.scope || dojo._scopeName, 1071 attrData = "data-" + scope + "-", // typically "data-dojo-" 1072 hash = {}; 1073 if(scope !== "dojo"){ 1074 hash[attrData + "props"] = "data-dojo-props"; 1075 hash[attrData + "type"] = "data-dojo-type"; 1076 hash[attrData + "mixins"] = "data-dojo-mixins"; 1077 hash[scope + "type"] = "dojotype"; 1078 hash[attrData + "id"] = "data-dojo-id"; 1079 } 1080 1081 // Read in attributes and process them, including data-dojo-props, data-dojo-type, 1082 // dojoAttachPoint, etc., as well as normal foo=bar attributes. 1083 var i = 0, item, funcAttrs = [], jsname, extra; 1084 while(item = attributes[i++]){ 1085 var name = item.name, 1086 lcName = name.toLowerCase(), 1087 value = item.value; 1088 1089 switch(hash[lcName] || lcName){ 1090 // Already processed, just ignore 1091 case "data-dojo-type": 1092 case "dojotype": 1093 case "data-dojo-mixins": 1094 break; 1095 1096 // Data-dojo-props. Save for later to make sure it overrides direct foo=bar settings 1097 case "data-dojo-props": 1098 extra = value; 1099 break; 1100 1101 // data-dojo-id or jsId. TODO: drop jsId in 2.0 1102 case "data-dojo-id": 1103 case "jsid": 1104 jsname = value; 1105 break; 1106 1107 // For the benefit of _Templated 1108 case "data-dojo-attach-point": 1109 case "dojoattachpoint": 1110 params.dojoAttachPoint = value; 1111 break; 1112 case "data-dojo-attach-event": 1113 case "dojoattachevent": 1114 params.dojoAttachEvent = value; 1115 break; 1116 1117 // Special parameter handling needed for IE 1118 case "class": 1119 params["class"] = node.className; 1120 break; 1121 case "style": 1122 params["style"] = node.style && node.style.cssText; 1123 break; 1124 default: 1125 // Normal attribute, ex: value="123" 1126 1127 // Find attribute in widget corresponding to specified name. 1128 // May involve case conversion, ex: onclick --> onClick 1129 if(!(name in proto)){ 1130 var map = getNameMap(ctor); 1131 name = map[lcName] || name; 1132 } 1133 1134 // Set params[name] to value, doing type conversion 1135 if(name in proto){ 1136 switch(typeof proto[name]){ 1137 case "string": 1138 params[name] = value; 1139 break; 1140 case "number": 1141 params[name] = value.length ? Number(value) : NaN; 1142 break; 1143 case "boolean": 1144 // for checked/disabled value might be "" or "checked". interpret as true. 1145 params[name] = value.toLowerCase() != "false"; 1146 break; 1147 case "function": 1148 if(value === "" || value.search(/[^\w\.]+/i) != -1){ 1149 // The user has specified some text for a function like "return x+5" 1150 params[name] = new Function(value); 1151 }else{ 1152 // The user has specified the name of a global function like "myOnClick" 1153 // or a single word function "return" 1154 params[name] = dlang.getObject(value, false) || new Function(value); 1155 } 1156 funcAttrs.push(name); // prevent "double connect", see #15026 1157 break; 1158 default: 1159 var pVal = proto[name]; 1160 try{ 1161 params[name] = 1162 (pVal && "length" in pVal) ? (value ? value.split(/\s*,\s*/) : []) : // array 1163 (pVal instanceof Date) ? 1164 (value == "" ? new Date("") : // the NaN of dates 1165 value == "now" ? new Date() : // current date 1166 dates.fromISOString(value)) : 1167 (pVal instanceof _Url) ? (dojo.baseUrl + value) : 1168 myEval(value); 1169 } 1170 catch(error){ 1171 console.error(error); 1172 } 1173 } 1174 }else{ 1175 params[name] = value; 1176 } 1177 } 1178 } 1179 1180 // Remove function attributes from DOMNode to prevent "double connect" problem, see #15026. 1181 // Do this as a separate loop since attributes[] is often a live collection (depends on the browser though). 1182 for(var j = 0; j < funcAttrs.length; j++){ 1183 var lcfname = funcAttrs[j].toLowerCase(); 1184 node.removeAttribute(lcfname); 1185 node[lcfname] = null; 1186 } 1187 1188 // Mix things found in data-dojo-props into the params, overriding any direct settings 1189 if(extra){ 1190 try{ 1191 extra = myEval.call(options.propsThis, "{" + extra + "}"); 1192 dlang.mixin(params, extra); 1193 }catch(e){ 1194 // give the user a pointer to their invalid parameters. FIXME: can we kill this in production? 1195 throw new Error(e.toString() + " in data-dojo-props='" + extra + "'"); 1196 } 1197 } 1198 1199 // Any parameters specified in "mixin" override everything else. 1200 dlang.mixin(params, mixin); 1201 1202 // Get <script> nodes associated with this widget, if they weren't specified explicitly 1203 if(!scripts){ 1204 scripts = (ctor && (ctor._noScript || proto._noScript) ? [] : query("> script[type^='dojo/']", node)); 1205 } 1206 1207 // Process <script type="dojo/*"> script tags 1208 // <script type="dojo/method" data-dojo-event="foo"> tags are added to params, and passed to 1209 // the widget on instantiation. 1210 // <script type="dojo/method"> tags (with no event) are executed after instantiation 1211 // <script type="dojo/connect" data-dojo-event="foo"> tags are dojo.connected after instantiation, 1212 // and likewise with <script type="dojo/aspect" data-dojo-method="foo"> 1213 // <script type="dojo/watch" data-dojo-prop="foo"> tags are dojo.watch after instantiation 1214 // <script type="dojo/on" data-dojo-event="foo"> tags are dojo.on after instantiation 1215 // note: dojo/* script tags cannot exist in self closing widgets, like <input /> 1216 var aspects = [], // aspects to connect after instantiation 1217 calls = [], // functions to call after instantiation 1218 watches = [], // functions to watch after instantiation 1219 ons = []; // functions to on after instantiation 1220 1221 if(scripts){ 1222 for(i = 0; i < scripts.length; i++){ 1223 var script = scripts[i]; 1224 node.removeChild(script); 1225 // FIXME: drop event="" support in 2.0. use data-dojo-event="" instead 1226 var event = (script.getAttribute(attrData + "event") || script.getAttribute("event")), 1227 prop = script.getAttribute(attrData + "prop"), 1228 method = script.getAttribute(attrData + "method"), 1229 advice = script.getAttribute(attrData + "advice"), 1230 scriptType = script.getAttribute("type"), 1231 nf = this._functionFromScript(script, attrData); 1232 if(event){ 1233 if(scriptType == "dojo/connect"){ 1234 aspects.push({ method: event, func: nf }); 1235 }else if(scriptType == "dojo/on"){ 1236 ons.push({ event: event, func: nf }); 1237 }else{ 1238 // <script type="dojo/method" data-dojo-event="foo"> 1239 // TODO for 2.0: use data-dojo-method="foo" instead (also affects dijit/Declaration) 1240 params[event] = nf; 1241 } 1242 }else if(scriptType == "dojo/aspect"){ 1243 aspects.push({ method: method, advice: advice, func: nf }); 1244 }else if(scriptType == "dojo/watch"){ 1245 watches.push({ prop: prop, func: nf }); 1246 }else{ 1247 calls.push(nf); 1248 } 1249 } 1250 } 1251 1252 // create the instance 1253 var markupFactory = ctor.markupFactory || proto.markupFactory; 1254 var instance = markupFactory ? markupFactory(params, node, ctor) : new ctor(params, node); 1255 1256 function onInstantiate(instance){ 1257 // map it to the JS namespace if that makes sense 1258 if(jsname){ 1259 dlang.setObject(jsname, instance); 1260 } 1261 1262 // process connections and startup functions 1263 for(i = 0; i < aspects.length; i++){ 1264 aspect[aspects[i].advice || "after"](instance, aspects[i].method, dlang.hitch(instance, aspects[i].func), true); 1265 } 1266 for(i = 0; i < calls.length; i++){ 1267 calls[i].call(instance); 1268 } 1269 for(i = 0; i < watches.length; i++){ 1270 instance.watch(watches[i].prop, watches[i].func); 1271 } 1272 for(i = 0; i < ons.length; i++){ 1273 don(instance, ons[i].event, ons[i].func); 1274 } 1275 1276 return instance; 1277 } 1278 1279 if(instance.then){ 1280 return instance.then(onInstantiate); 1281 }else{ 1282 return onInstantiate(instance); 1283 } 1284 }, 1285 1286 scan: function(root, options){ 1287 // summary: 1288 // Scan a DOM tree and return an array of objects representing the DOMNodes 1289 // that need to be turned into widgets. 1290 // description: 1291 // Search specified node (or document root node) recursively for class instances 1292 // and return an array of objects that represent potential widgets to be 1293 // instantiated. Searches for either data-dojo-type="MID" or dojoType="MID" where 1294 // "MID" is a module ID like "dijit/form/Button" or a fully qualified Class name 1295 // like "dijit/form/Button". If the MID is not currently available, scan will 1296 // attempt to require() in the module. 1297 // 1298 // See parser.parse() for details of markup. 1299 // root: DomNode? 1300 // A default starting root node from which to start the parsing. Can be 1301 // omitted, defaulting to the entire document. If omitted, the `options` 1302 // object can be passed in this place. If the `options` object has a 1303 // `rootNode` member, that is used. 1304 // options: Object 1305 // a kwArgs options object, see parse() for details 1306 // 1307 // returns: Promise 1308 // A promise that is resolved with the nodes that have been parsed. 1309 1310 var list = [], // Output List 1311 mids = [], // An array of modules that are not yet loaded 1312 midsHash = {}; // Used to keep the mids array unique 1313 1314 var dojoType = (options.scope || dojo._scopeName) + "Type", // typically "dojoType" 1315 attrData = "data-" + (options.scope || dojo._scopeName) + "-", // typically "data-dojo-" 1316 dataDojoType = attrData + "type", // typically "data-dojo-type" 1317 dataDojoTextDir = attrData + "textdir", // typically "data-dojo-textdir" 1318 dataDojoMixins = attrData + "mixins"; // typically "data-dojo-mixins" 1319 1320 // Info on DOMNode currently being processed 1321 var node = root.firstChild; 1322 1323 // Info on parent of DOMNode currently being processed 1324 // - inherited: dir, lang, and textDir setting of parent, or inherited by parent 1325 // - parent: pointer to identical structure for my parent (or null if no parent) 1326 // - scripts: if specified, collects <script type="dojo/..."> type nodes from children 1327 var inherited = options.inherited; 1328 if(!inherited){ 1329 var findAncestorAttr = function findAncestorAttr(node, attr){ 1330 return (node.getAttribute && node.getAttribute(attr)) || 1331 (node.parentNode && findAncestorAttr(node.parentNode, attr)); 1332 }; 1333 1334 inherited = { 1335 dir: findAncestorAttr(root, "dir"), 1336 lang: findAncestorAttr(root, "lang"), 1337 textDir: findAncestorAttr(root, dataDojoTextDir) 1338 }; 1339 for(var key in inherited){ 1340 if(!inherited[key]){ 1341 delete inherited[key]; 1342 } 1343 } 1344 } 1345 1346 // Metadata about parent node 1347 var parent = { 1348 inherited: inherited 1349 }; 1350 1351 // For collecting <script type="dojo/..."> type nodes (when null, we don't need to collect) 1352 var scripts; 1353 1354 // when true, only look for <script type="dojo/..."> tags, and don't recurse to children 1355 var scriptsOnly; 1356 1357 function getEffective(parent){ 1358 // summary: 1359 // Get effective dir, lang, textDir settings for specified obj 1360 // (matching "parent" object structure above), and do caching. 1361 // Take care not to return null entries. 1362 if(!parent.inherited){ 1363 parent.inherited = {}; 1364 var node = parent.node, 1365 grandparent = getEffective(parent.parent); 1366 var inherited = { 1367 dir: node.getAttribute("dir") || grandparent.dir, 1368 lang: node.getAttribute("lang") || grandparent.lang, 1369 textDir: node.getAttribute(dataDojoTextDir) || grandparent.textDir 1370 }; 1371 for(var key in inherited){ 1372 if(inherited[key]){ 1373 parent.inherited[key] = inherited[key]; 1374 } 1375 } 1376 } 1377 return parent.inherited; 1378 } 1379 1380 // DFS on DOM tree, collecting nodes with data-dojo-type specified. 1381 while(true){ 1382 if(!node){ 1383 // Finished this level, continue to parent's next sibling 1384 if(!parent || !parent.node){ 1385 break; 1386 } 1387 node = parent.node.nextSibling; 1388 scriptsOnly = false; 1389 parent = parent.parent; 1390 scripts = parent.scripts; 1391 continue; 1392 } 1393 1394 if(node.nodeType != 1){ 1395 // Text or comment node, skip to next sibling 1396 node = node.nextSibling; 1397 continue; 1398 } 1399 1400 if(scripts && node.nodeName.toLowerCase() == "script"){ 1401 // Save <script type="dojo/..."> for parent, then continue to next sibling 1402 type = node.getAttribute("type"); 1403 if(type && /^dojo\/\w/i.test(type)){ 1404 scripts.push(node); 1405 } 1406 node = node.nextSibling; 1407 continue; 1408 } 1409 if(scriptsOnly){ 1410 // scriptsOnly flag is set, we have already collected scripts if the parent wants them, so now we shouldn't 1411 // continue further analysis of the node and will continue to the next sibling 1412 node = node.nextSibling; 1413 continue; 1414 } 1415 1416 // Check for data-dojo-type attribute, fallback to backward compatible dojoType 1417 // TODO: Remove dojoType in 2.0 1418 var type = node.getAttribute(dataDojoType) || node.getAttribute(dojoType); 1419 1420 // Short circuit for leaf nodes containing nothing [but text] 1421 var firstChild = node.firstChild; 1422 if(!type && (!firstChild || (firstChild.nodeType == 3 && !firstChild.nextSibling))){ 1423 node = node.nextSibling; 1424 continue; 1425 } 1426 1427 // Meta data about current node 1428 var current; 1429 1430 var ctor = null; 1431 if(type){ 1432 // If dojoType/data-dojo-type specified, add to output array of nodes to instantiate. 1433 var mixinsValue = node.getAttribute(dataDojoMixins), 1434 types = mixinsValue ? [type].concat(mixinsValue.split(/\s*,\s*/)) : [type]; 1435 1436 // Note: won't find classes declared via dojo/Declaration or any modules that haven't been 1437 // loaded yet so use try/catch to avoid throw from require() 1438 try{ 1439 ctor = getCtor(types, options.contextRequire); 1440 }catch(e){} 1441 1442 // If the constructor was not found, check to see if it has modules that can be loaded 1443 if(!ctor){ 1444 darray.forEach(types, function(t){ 1445 if(~t.indexOf('/') && !midsHash[t]){ 1446 // If the type looks like a MID and it currently isn't in the array of MIDs to load, add it. 1447 midsHash[t] = true; 1448 mids[mids.length] = t; 1449 } 1450 }); 1451 } 1452 1453 var childScripts = ctor && !ctor.prototype._noScript ? [] : null; // <script> nodes that are parent's children 1454 1455 // Setup meta data about this widget node, and save it to list of nodes to instantiate 1456 current = { 1457 types: types, 1458 ctor: ctor, 1459 parent: parent, 1460 node: node, 1461 scripts: childScripts 1462 }; 1463 current.inherited = getEffective(current); // dir & lang settings for current node, explicit or inherited 1464 list.push(current); 1465 }else{ 1466 // Meta data about this non-widget node 1467 current = { 1468 node: node, 1469 scripts: scripts, 1470 parent: parent 1471 }; 1472 } 1473 1474 // Recurse, collecting <script type="dojo/..."> children, and also looking for 1475 // descendant nodes with dojoType specified (unless the widget has the stopParser flag). 1476 // When finished with children, go to my next sibling. 1477 scripts = childScripts; 1478 scriptsOnly = node.stopParser || (ctor && ctor.prototype.stopParser && !(options.template)); 1479 parent = current; 1480 node = firstChild; 1481 } 1482 1483 var d = new Deferred(); 1484 1485 // If there are modules to load then require them in 1486 if(mids.length){ 1487 // Warn that there are modules being auto-required 1488 if(has("dojo-debug-messages")){ 1489 console.warn("WARNING: Modules being Auto-Required: " + mids.join(", ")); 1490 } 1491 var r = options.contextRequire || require; 1492 r(mids, function(){ 1493 // Go through list of widget nodes, filling in missing constructors, and filtering out nodes that shouldn't 1494 // be instantiated due to a stopParser flag on an ancestor that we belatedly learned about due to 1495 // auto-require of a module like ContentPane. Assumes list is in DFS order. 1496 d.resolve(darray.filter(list, function(widget){ 1497 if(!widget.ctor){ 1498 // Attempt to find the constructor again. Still won't find classes defined via 1499 // dijit/Declaration so need to try/catch. 1500 try{ 1501 widget.ctor = getCtor(widget.types, options.contextRequire); 1502 }catch(e){} 1503 } 1504 1505 // Get the parent widget 1506 var parent = widget.parent; 1507 while(parent && !parent.types){ 1508 parent = parent.parent; 1509 } 1510 1511 // Return false if this node should be skipped due to stopParser on an ancestor. 1512 // Since list[] is in DFS order, this loop will always set parent.instantiateChildren before 1513 // trying to compute widget.instantiate. 1514 var proto = widget.ctor && widget.ctor.prototype; 1515 widget.instantiateChildren = !(proto && proto.stopParser && !(options.template)); 1516 widget.instantiate = !parent || (parent.instantiate && parent.instantiateChildren); 1517 return widget.instantiate; 1518 })); 1519 }); 1520 }else{ 1521 // There were no modules to load, so just resolve with the parsed nodes. This separate code path is for 1522 // efficiency, to avoid running the require() and the callback code above. 1523 d.resolve(list); 1524 } 1525 1526 // Return the promise 1527 return d.promise; 1528 }, 1529 1530 _require: function(/*DOMNode*/ script, /*Object?*/ options){ 1531 // summary: 1532 // Helper for _scanAMD(). Takes a `<script type=dojo/require>bar: "acme/bar", ...</script>` node, 1533 // calls require() to load the specified modules and (asynchronously) assign them to the specified global 1534 // variables, and returns a Promise for when that operation completes. 1535 // 1536 // In the example above, it is effectively doing a require(["acme/bar", ...], function(a){ bar = a; }). 1537 1538 var hash = myEval("{" + script.innerHTML + "}"), // can't use dojo/json::parse() because maybe no quotes 1539 vars = [], 1540 mids = [], 1541 d = new Deferred(); 1542 1543 var contextRequire = (options && options.contextRequire) || require; 1544 1545 for(var name in hash){ 1546 vars.push(name); 1547 mids.push(hash[name]); 1548 } 1549 1550 contextRequire(mids, function(){ 1551 for(var i = 0; i < vars.length; i++){ 1552 dlang.setObject(vars[i], arguments[i]); 1553 } 1554 d.resolve(arguments); 1555 }); 1556 1557 return d.promise; 1558 }, 1559 1560 _scanAmd: function(root, options){ 1561 // summary: 1562 // Scans the DOM for any declarative requires and returns their values. 1563 // description: 1564 // Looks for `<script type=dojo/require>bar: "acme/bar", ...</script>` node, calls require() to load the 1565 // specified modules and (asynchronously) assign them to the specified global variables, 1566 // and returns a Promise for when those operations complete. 1567 // root: DomNode 1568 // The node to base the scan from. 1569 // options: Object? 1570 // a kwArgs options object, see parse() for details 1571 1572 // Promise that resolves when all the <script type=dojo/require> nodes have finished loading. 1573 var deferred = new Deferred(), 1574 promise = deferred.promise; 1575 deferred.resolve(true); 1576 1577 var self = this; 1578 query("script[type='dojo/require']", root).forEach(function(node){ 1579 // Fire off require() call for specified modules. Chain this require to fire after 1580 // any previous requires complete, so that layers can be loaded before individual module require()'s fire. 1581 promise = promise.then(function(){ 1582 return self._require(node, options); 1583 }); 1584 1585 // Remove from DOM so it isn't seen again 1586 node.parentNode.removeChild(node); 1587 }); 1588 1589 return promise; 1590 }, 1591 1592 parse: function(rootNode, options){ 1593 // summary: 1594 // Scan the DOM for class instances, and instantiate them. 1595 // description: 1596 // Search specified node (or root node) recursively for class instances, 1597 // and instantiate them. Searches for either data-dojo-type="Class" or 1598 // dojoType="Class" where "Class" is a a fully qualified class name, 1599 // like `dijit/form/Button` 1600 // 1601 // Using `data-dojo-type`: 1602 // Attributes using can be mixed into the parameters used to instantiate the 1603 // Class by using a `data-dojo-props` attribute on the node being converted. 1604 // `data-dojo-props` should be a string attribute to be converted from JSON. 1605 // 1606 // Using `dojoType`: 1607 // Attributes are read from the original domNode and converted to appropriate 1608 // types by looking up the Class prototype values. This is the default behavior 1609 // from Dojo 1.0 to Dojo 1.5. `dojoType` support is deprecated, and will 1610 // go away in Dojo 2.0. 1611 // rootNode: DomNode? 1612 // A default starting root node from which to start the parsing. Can be 1613 // omitted, defaulting to the entire document. If omitted, the `options` 1614 // object can be passed in this place. If the `options` object has a 1615 // `rootNode` member, that is used. 1616 // options: Object? 1617 // A hash of options. 1618 // 1619 // - noStart: Boolean?: 1620 // when set will prevent the parser from calling .startup() 1621 // when locating the nodes. 1622 // - rootNode: DomNode?: 1623 // identical to the function's `rootNode` argument, though 1624 // allowed to be passed in via this `options object. 1625 // - template: Boolean: 1626 // If true, ignores ContentPane's stopParser flag and parses contents inside of 1627 // a ContentPane inside of a template. This allows dojoAttachPoint on widgets/nodes 1628 // nested inside the ContentPane to work. 1629 // - inherited: Object: 1630 // Hash possibly containing dir and lang settings to be applied to 1631 // parsed widgets, unless there's another setting on a sub-node that overrides 1632 // - scope: String: 1633 // Root for attribute names to search for. If scopeName is dojo, 1634 // will search for data-dojo-type (or dojoType). For backwards compatibility 1635 // reasons defaults to dojo._scopeName (which is "dojo" except when 1636 // multi-version support is used, when it will be something like dojo16, dojo20, etc.) 1637 // - propsThis: Object: 1638 // If specified, "this" referenced from data-dojo-props will refer to propsThis. 1639 // Intended for use from the widgets-in-template feature of `dijit._WidgetsInTemplateMixin` 1640 // - contextRequire: Function: 1641 // If specified, this require is utilised for looking resolving modules instead of the 1642 // `dojo/parser` context `require()`. Intended for use from the widgets-in-template feature of 1643 // `dijit._WidgetsInTemplateMixin`. 1644 // returns: Mixed 1645 // Returns a blended object that is an array of the instantiated objects, but also can include 1646 // a promise that is resolved with the instantiated objects. This is done for backwards 1647 // compatibility. If the parser auto-requires modules, it will always behave in a promise 1648 // fashion and `parser.parse().then(function(instances){...})` should be used. 1649 // example: 1650 // Parse all widgets on a page: 1651 // | parser.parse(); 1652 // example: 1653 // Parse all classes within the node with id="foo" 1654 // | parser.parse(dojo.byId('foo')); 1655 // example: 1656 // Parse all classes in a page, but do not call .startup() on any 1657 // child 1658 // | parser.parse({ noStart: true }) 1659 // example: 1660 // Parse all classes in a node, but do not call .startup() 1661 // | parser.parse(someNode, { noStart:true }); 1662 // | // or 1663 // | parser.parse({ noStart:true, rootNode: someNode }); 1664 1665 // determine the root node and options based on the passed arguments. 1666 if(rootNode && typeof rootNode != "string" && !("nodeType" in rootNode)){ 1667 // If called as parse(options) rather than parse(), parse(rootNode), or parse(rootNode, options)... 1668 options = rootNode; 1669 rootNode = options.rootNode; 1670 } 1671 var root = rootNode ? dom.byId(rootNode) : dwindow.body(); 1672 options = options || {}; 1673 1674 var mixin = options.template ? { template: true } : {}, 1675 instances = [], 1676 self = this; 1677 1678 // First scan for any <script type=dojo/require> nodes, and execute. 1679 // Then scan for all nodes with data-dojo-type, and load any unloaded modules. 1680 // Then build the object instances. Add instances to already existing (but empty) instances[] array, 1681 // which may already have been returned to caller. Also, use otherwise to collect and throw any errors 1682 // that occur during the parse(). 1683 var p = 1684 this._scanAmd(root, options).then(function(){ 1685 return self.scan(root, options); 1686 }).then(function(parsedNodes){ 1687 return self._instantiate(parsedNodes, mixin, options, true); 1688 }).then(function(_instances){ 1689 // Copy the instances into the instances[] array we declared above, and are accessing as 1690 // our return value. 1691 return instances = instances.concat(_instances); 1692 }).otherwise(function(e){ 1693 // TODO Modify to follow better pattern for promise error management when available 1694 console.error("dojo/parser::parse() error", e); 1695 throw e; 1696 }); 1697 1698 // Blend the array with the promise 1699 dlang.mixin(instances, p); 1700 return instances; 1701 } 1702 }; 1703 1704 if(
1704 1 ){ 1705 dojo.parser = parser; 1706 } 1707 1708 // Register the parser callback. It should be the first callback 1709 // after the a11y test. 1710 if(config.parseOnLoad){ 1711 ready(100, parser, "parse"); 1712 } 1713 1714 return parser; 1715}); 1716 1717}, 1718'dojo/_base/url':function(){ 1719define(["./kernel"], function(dojo){ 1720 // module: 1721 // dojo/url 1722 1723 var 1724 ore = new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"), 1725 ire = new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$"), 1726 _Url = function(){ 1727 var n = null, 1728 _a = arguments, 1729 uri = [_a[0]]; 1730 // resolve uri components relative to each other 1731 for(var i = 1; i<_a.length; i++){ 1732 if(!_a[i]){ continue; } 1733 1734 // Safari doesn't support this.constructor so we have to be explicit 1735 // FIXME: Tracked (and fixed) in Webkit bug 3537. 1736 // http://bugs.webkit.org/show_bug.cgi?id=3537 1737 var relobj = new _Url(_a[i]+""), 1738 uriobj = new _Url(uri[0]+""); 1739 1740 if( 1741 relobj.path == "" && 1742 !relobj.scheme && 1743 !relobj.authority && 1744 !relobj.query 1745 ){ 1746 if(relobj.fragment != n){ 1747 uriobj.fragment = relobj.fragment; 1748 } 1749 relobj = uriobj; 1750 }else if(!relobj.scheme){ 1751 relobj.scheme = uriobj.scheme; 1752 1753 if(!relobj.authority){ 1754 relobj.authority = uriobj.authority; 1755 1756 if(relobj.path.charAt(0) != "/"){ 1757 var path = uriobj.path.substring(0, 1758 uriobj.path.lastIndexOf("/") + 1) + relobj.path; 1759 1760 var segs = path.split("/"); 1761 for(var j = 0; j < segs.length; j++){ 1762 if(segs[j] == "."){ 1763 // flatten "./" references 1764 if(j == segs.length - 1){ 1765 segs[j] = ""; 1766 }else{ 1767 segs.splice(j, 1); 1768 j--; 1769 } 1770 }else if(j > 0 && !(j == 1 && segs[0] == "") && 1771 segs[j] == ".." && segs[j-1] != ".."){ 1772 // flatten "../" references 1773 if(j == (segs.length - 1)){ 1774 segs.splice(j, 1); 1775 segs[j - 1] = ""; 1776 }else{ 1777 segs.splice(j - 1, 2); 1778 j -= 2; 1779 } 1780 } 1781 } 1782 relobj.path = segs.join("/"); 1783 } 1784 } 1785 } 1786 1787 uri = []; 1788 if(relobj.scheme){ 1789 uri.push(relobj.scheme, ":"); 1790 } 1791 if(relobj.authority){ 1792 uri.push("//", relobj.authority); 1793 } 1794 uri.push(relobj.path); 1795 if(relobj.query){ 1796 uri.push("?", relobj.query); 1797 } 1798 if(relobj.fragment){ 1799 uri.push("#", relobj.fragment); 1800 } 1801 } 1802 1803 this.uri = uri.join(""); 1804 1805 // break the uri into its main components 1806 var r = this.uri.match(ore); 1807 1808 this.scheme = r[2] || (r[1] ? "" : n); 1809 this.authority = r[4] || (r[3] ? "" : n); 1810 this.path = r[5]; // can never be undefined 1811 this.query = r[7] || (r[6] ? "" : n); 1812 this.fragment = r[9] || (r[8] ? "" : n); 1813 1814 if(this.authority != n){ 1815 // server based naming authority 1816 r = this.authority.match(ire); 1817 1818 this.user = r[3] || n; 1819 this.password = r[4] || n; 1820 this.host = r[6] || r[7]; // ipv6 || ipv4 1821 this.port = r[9] || n; 1822 } 1823 }; 1824 _Url.prototype.toString = function(){ return this.uri; }; 1825 1826 return dojo._Url = _Url; 1827}); 1828 1829}, 1830'dojo/date/stamp':function(){ 1831define(["../_base/lang", "../_base/array"], function(lang, array){ 1832 1833// module: 1834// dojo/date/stamp 1835 1836var stamp = { 1837 // summary: 1838 // TODOC 1839}; 1840lang.setObject("dojo.date.stamp", stamp); 1841 1842// Methods to convert dates to or from a wire (string) format using well-known conventions 1843 1844stamp.fromISOString = function(/*String*/ formattedString, /*Number?*/ defaultTime){ 1845 // summary: 1846 // Returns a Date object given a string formatted according to a subset of the ISO-8601 standard. 1847 // 1848 // description: 1849 // Accepts a string formatted according to a profile of ISO8601 as defined by 1850 // [RFC3339](http://www.ietf.org/rfc/rfc3339.txt), except that partial input is allowed. 1851 // Can also process dates as specified [by the W3C](http://www.w3.org/TR/NOTE-datetime) 1852 // The following combinations are valid: 1853 // 1854 // - dates only 1855 // - yyyy 1856 // - yyyy-MM 1857 // - yyyy-MM-dd 1858 // - times only, with an optional time zone appended 1859 // - THH:mm 1860 // - THH:mm:ss 1861 // - THH:mm:ss.SSS 1862 // - and "datetimes" which could be any combination of the above 1863 // 1864 // timezones may be specified as Z (for UTC) or +/- followed by a time expression HH:mm 1865 // Assumes the local time zone if not specified. Does not val
1865idate. Improperly formatted 1866 // input may return null. Arguments which are out of bounds will be handled 1867 // by the Date constructor (e.g. January 32nd typically gets resolved to February 1st) 1868 // Only years between 100 and 9999 are supported. 1869 // formattedString: 1870 // A string such as 2005-06-30T08:05:00-07:00 or 2005-06-30 or T08:05:00 1871 // defaultTime: 1872 // Used for defaults for fields omitted in the formattedString. 1873 // Uses 1970-01-01T00:00:00.0Z by default. 1874 1875 if(!stamp._isoRegExp){ 1876 stamp._isoRegExp = 1877//TODO: could be more restrictive and check for 00-59, etc. 1878 /^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/; 1879 } 1880 1881 var match = stamp._isoRegExp.exec(formattedString), 1882 result = null; 1883 1884 if(match){ 1885 match.shift(); 1886 if(match[1]){match[1]--;} // Javascript Date months are 0-based 1887 if(match[6]){match[6] *= 1000;} // Javascript Date expects fractional seconds as milliseconds 1888 1889 if(defaultTime){ 1890 // mix in defaultTime. Relatively expensive, so use || operators for the fast path of defaultTime === 0 1891 defaultTime = new Date(defaultTime); 1892 array.forEach(array.map(["FullYear", "Month", "Date", "Hours", "Minutes", "Seconds", "Milliseconds"], function(prop){ 1893 return defaultTime["get" + prop](); 1894 }), function(value, index){ 1895 match[index] = match[index] || value; 1896 }); 1897 } 1898 result = new Date(match[0]||1970, match[1]||0, match[2]||1, match[3]||0, match[4]||0, match[5]||0, match[6]||0); //TODO: UTC defaults 1899 if(match[0] < 100){ 1900 result.setFullYear(match[0] || 1970); 1901 } 1902 1903 var offset = 0, 1904 zoneSign = match[7] && match[7].charAt(0); 1905 if(zoneSign != 'Z'){ 1906 offset = ((match[8] || 0) * 60) + (Number(match[9]) || 0); 1907 if(zoneSign != '-'){ offset *= -1; } 1908 } 1909 if(zoneSign){ 1910 offset -= result.getTimezoneOffset(); 1911 } 1912 if(offset){ 1913 result.setTime(result.getTime() + offset * 60000); 1914 } 1915 } 1916 1917 return result; // Date or null 1918}; 1919 1920/*===== 1921var __Options = { 1922 // selector: String 1923 // "date" or "time" for partial formatting of the Date object. 1924 // Both date and time will be formatted by default. 1925 // zulu: Boolean 1926 // if true, UTC/GMT is used for a timezone 1927 // milliseconds: Boolean 1928 // if true, output milliseconds 1929}; 1930=====*/ 1931 1932stamp.toISOString = function(/*Date*/ dateObject, /*__Options?*/ options){ 1933 // summary: 1934 // Format a Date object as a string according a subset of the ISO-8601 standard 1935 // 1936 // description: 1937 // When options.selector is omitted, output follows [RFC3339](http://www.ietf.org/rfc/rfc3339.txt) 1938 // The local time zone is included as an offset from GMT, except when selector=='time' (time without a date) 1939 // Does not check bounds. Only years between 100 and 9999 are supported. 1940 // 1941 // dateObject: 1942 // A Date object 1943 1944 var _ = function(n){ return (n < 10) ? "0" + n : n; }; 1945 options = options || {}; 1946 var formattedDate = [], 1947 getter = options.zulu ? "getUTC" : "get", 1948 date = ""; 1949 if(options.selector != "time"){ 1950 var year = dateObject[getter+"FullYear"](); 1951 date = ["0000".substr((year+"").length)+year, _(dateObject[getter+"Month"]()+1), _(dateObject[getter+"Date"]())].join('-'); 1952 } 1953 formattedDate.push(date); 1954 if(options.selector != "date"){ 1955 var time = [_(dateObject[getter+"Hours"]()), _(dateObject[getter+"Minutes"]()), _(dateObject[getter+"Seconds"]())].join(':'); 1956 var millis = dateObject[getter+"Milliseconds"](); 1957 if(options.milliseconds){ 1958 time += "."+ (millis < 100 ? "0" : "") + _(millis); 1959 } 1960 if(options.zulu){ 1961 time += "Z"; 1962 }else if(options.selector != "time"){ 1963 var timezoneOffset = dateObject.getTimezoneOffset(); 1964 var absOffset = Math.abs(timezoneOffset); 1965 time += (timezoneOffset > 0 ? "-" : "+") + 1966 _(Math.floor(absOffset/60)) + ":" + _(absOffset%60); 1967 } 1968 formattedDate.push(time); 1969 } 1970 return formattedDate.join('T'); // String 1971}; 1972 1973return stamp; 1974}); 1975 1976},
1977'dojo/json5':function(){ 1978define([ 1979 './json5/parse' 1980], function (parse) { 1981 return { 1982 parse: parse 1983 }; 1984}); 1985 1986}, 1987'dojo/json5/parse':function(){ 1988define([ 1989 '../string', 1990 './util' 1991], function (dstring, util) { 1992 var source; 1993 var parseState; 1994 var stack; 1995 var pos; 1996 var line; 1997 var column; 1998 var token; 1999 var key; 2000 var root; 2001 2002 function parse(text, reviver) { 2003 source = String(text); 2004 parseState = 'start'; 2005 stack = []; 2006 pos = 0; 2007 line = 1; 2008 column = 0; 2009 token = undefined; 2010 key = undefined; 2011 root = undefined; 2012 do { 2013 token = lex(); 2014 parseStates[parseState](); 2015 } while (token.type !== 'eof'); 2016 if (typeof reviver === 'function') { 2017 return internalize({ '': root }, '', reviver); 2018 } 2019 return root; 2020 } 2021 function internalize(holder, name, reviver) { 2022 var value = holder[name]; 2023 if (value != null && typeof value === 'object') { 2024 for (var key_1 in value) { 2025 var replacement = internalize(value, key_1, reviver); 2026 if (replacement === undefined) { 2027 delete value[key_1]; 2028 } 2029 else { 2030 value[key_1] = replacement; 2031 } 2032 } 2033 } 2034 return reviver.call(holder, name, value); 2035 } 2036 var lexState; 2037 var buffer; 2038 var doubleQuote; 2039 var sign; 2040 var c; 2041 function lex() { 2042 lexState = 'default'; 2043 buffer = ''; 2044 doubleQuote = false; 2045 sign = 1; 2046 for (;;) { 2047 c = peek(); 2048 var token_1 = lexStates[lexState](); 2049 if (token_1) { 2050 return token_1; 2051 } 2052 } 2053 } 2054 function peek() { 2055 if (source[pos]) { 2056 return dstring.fromCodePoint(dstring.codePointAt(source, pos)); 2057 } 2058 } 2059 function read() { 2060 var c = peek(); 2061 if (c === '\n') { 2062 line++; 2063 column = 0; 2064 } 2065 else if (c) { 2066 column += c.length; 2067 } 2068 else { 2069 column++; 2070 } 2071 if (c) { 2072 pos += c.length; 2073 } 2074 return c; 2075 } 2076 var lexStates = { 2077 'default': function () { 2078 switch (c) { 2079 case '\t': 2080 case '\v': 2081 case '\f': 2082 case ' ': 2083 case '\u00A0': 2084 case '\uFEFF': 2085 case '\n': 2086 case '\r': 2087 case '\u2028': 2088 case '\u2029': 2089 read(); 2090 return; 2091 case '/': 2092 read(); 2093 lexState = 'comment'; 2094 return; 2095 case undefined: 2096 read(); 2097 return newToken('eof'); 2098 } 2099 if (util.isSpaceSeparator(c)) { 2100 read(); 2101 return; 2102 } 2103 return lexStates[parseState](); 2104 }, 2105 comment: function () { 2106 switch (c) { 2107 case '*': 2108 read(); 2109 lexState = 'multiLineComment'; 2110 return; 2111 case '/': 2112 read(); 2113 lexState = 'singleLineComment'; 2114 return; 2115 } 2116 throw invalidChar(read()); 2117 }, 2118 multiLineComment: function () { 2119 switch (c) { 2120 case '*': 2121 read(); 2122 lexState = 'multiLineCommentAsterisk'; 2123 return; 2124 case undefined: 2125 throw invalidChar(read()); 2126 } 2127 read(); 2128 }, 2129 multiLineCommentAsterisk: function () { 2130 switch (c) { 2131 case '*': 2132 read(); 2133 return; 2134 case '/': 2135 read(); 2136 lexState = 'default'; 2137 return; 2138 case undefined: 2139 throw invalidChar(read()); 2140 } 2141 read(); 2142 lexState = 'multiLineComment'; 2143 }, 2144 singleLineComment: function () { 2145 switch (c) { 2146 case '\n': 2147 case '\r': 2148 case '\u2028': 2149 case '\u2029': 2150 read(); 2151 lexState = 'default'; 2152 return; 2153 case undefined: 2154 read(); 2155 return newToken('eof'); 2156 } 2157 read(); 2158 }, 2159 value: function () { 2160 switch (c) { 2161 case '{': 2162 case '[': 2163 return newToken('punctuator', read()); 2164 case 'n': 2165 read(); 2166 literal('ull'); 2167 return newToken('null', null); 2168 case 't': 2169 read(); 2170 literal('rue'); 2171 return newToken('boolean', true); 2172 case 'f': 2173 read(); 2174 literal('alse'); 2175 return newToken('boolean', false); 2176 case '-': 2177 case '+': 2178 if (read() === '-') { 2179 sign = -1; 2180 } 2181 lexState = 'sign'; 2182 return; 2183 case '.': 2184 buffer = read(); 2185 lexState = 'decimalPointLeading'; 2186 return; 2187 case '0': 2188 buffer = read(); 2189 lexState = 'zero'; 2190 return; 2191 case '1': 2192 case '2': 2193 case '3': 2194 case '4': 2195 case '5': 2196 case '6': 2197 case '7': 2198 case '8': 2199 case '9': 2200 buffer = read(); 2201 lexState = 'decimalInteger'; 2202 return; 2203 case 'I': 2204 read(); 2205 literal('nfinity'); 2206 return newToken('numeric', Infinity); 2207 case 'N': 2208 read(); 2209 literal('aN'); 2210 return newToken('numeric', NaN); 2211 case '"':
2212 case "'": 2213 doubleQuote = (read() === '"'); 2214 buffer = ''; 2215 lexState = 'string'; 2216 return; 2217 } 2218 throw invalidChar(read()); 2219 }, 2220 identifierNameStartEscape: function () { 2221 if (c !== 'u') { 2222 throw invalidChar(read()); 2223 } 2224 read(); 2225 var u = unicodeEscape(); 2226 switch (u) { 2227 case '$': 2228 case '_': 2229 break; 2230 default: 2231 if (!util.isIdStartChar(u)) { 2232 throw invalidIdentifier(); 2233 } 2234 break; 2235 } 2236 buffer += u; 2237 lexState = 'identifierName'; 2238 }, 2239 identifierName: function () { 2240 switch (c) { 2241 case '$': 2242 case '_': 2243 case '\u200C': 2244 case '\u200D': 2245 buffer += read(); 2246 return; 2247 case '\\': 2248 read(); 2249 lexState = 'identifierNameEscape'; 2250 return; 2251 } 2252 if (util.isIdContinueChar(c)) { 2253 buffer += read(); 2254 return; 2255 } 2256 return newToken('identifier', buffer); 2257 }, 2258 identifierNameEscape: function () { 2259 if (c !== 'u') { 2260 throw invalidChar(read()); 2261 } 2262 read(); 2263 var u = unicodeEscape(); 2264 switch (u) { 2265 case '$': 2266 case '_': 2267 case '\u200C': 2268 case '\u200D': 2269 break; 2270 default: 2271 if (!util.isIdContinueChar(u)) { 2272 throw invalidIdentifier(); 2273 } 2274 break; 2275 } 2276 buffer += u; 2277 lexState = 'identifierName'; 2278 }, 2279 sign: function () { 2280 switch (c) { 2281 case '.': 2282 buffer = read(); 2283 lexState = 'decimalPointLeading'; 2284 return; 2285 case '0': 2286 buffer = read(); 2287 lexState = 'zero'; 2288 return; 2289 case '1': 2290 case '2': 2291 case '3': 2292 case '4': 2293 case '5': 2294 case '6': 2295 case '7': 2296 case '8': 2297 case '9': 2298 buffer = read(); 2299 lexState = 'decimalInteger'; 2300 return; 2301 case 'I': 2302 read(); 2303 literal('nfinity'); 2304 return newToken('numeric', sign * Infinity); 2305 case 'N': 2306 read(); 2307 literal('aN'); 2308 return newToken('numeric', NaN); 2309 } 2310 throw invalidChar(read()); 2311 }, 2312 zero: function () { 2313 switch (c) { 2314 case '.': 2315 buffer += read(); 2316 lexState = 'decimalPoint'; 2317 return; 2318 case 'e': 2319 case 'E': 2320 buffer += read(); 2321 lexState = 'decimalExponent'; 2322 return; 2323 case 'x': 2324 case 'X': 2325 buffer += read(); 2326 lexState = 'hexadecimal'; 2327 return; 2328 } 2329 return newToken('numeric', sign * 0); 2330 }, 2331 decimalInteger: function () { 2332 switch (c) { 2333 case '.': 2334 buffer += read(); 2335 lexState = 'decimalPoint'; 2336 return; 2337 case 'e': 2338 case 'E': 2339 buffer += read(); 2340 lexState = 'decimalExponent'; 2341 return; 2342 } 2343 if (util.isDigit(c)) { 2344 buffer += read(); 2345 return; 2346 } 2347 return newToken('numeric', sign * Number(buffer)); 2348 }, 2349 decimalPointLeading: function () { 2350 if (util.isDigit(c)) { 2351 buffer += read(); 2352 lexState = 'decimalFraction'; 2353 return; 2354 } 2355 throw invalidChar(read()); 2356 }, 2357 decimalPoint: function () { 2358 switch (c) { 2359 case 'e': 2360 case 'E': 2361 buffer += read(); 2362 lexState = 'decimalExponent'; 2363 return; 2364 } 2365 if (util.isDigit(c)) { 2366 buffer += read(); 2367 lexState = 'decimalFraction'; 2368 return; 2369 } 2370 return newToken('numeric', sign * Number(buffer)); 2371 }, 2372 decimalFraction: function () { 2373 switch (c) { 2374 case 'e': 2375 case 'E': 2376 buffer += read(); 2377 lexState = 'decimalExponent'; 2378 return; 2379 } 2380 if (util.isDigit(c)) { 2381 buffer += read(); 2382 return; 2383 } 2384 return newToken('numeric', sign * Number(buffer)); 2385 }, 2386 decimalExponent: function () { 2387 switch (c) { 2388 case '+': 2389 case '-': 2390 buffer += read(); 2391 lexState = 'decimalExponentSign'; 2392 return; 2393 } 2394 if (util.isDigit(c)) { 2395 buffer += read(); 2396 lexState = 'decimalExponentInteger'; 2397 return; 2398 } 2399 throw invalidChar(read()); 2400 }, 2401 decimalExponentSign: function () { 2402 if (util.isDigit(c)) { 2403 buffer += read(); 2404 lexState = 'decimalExponentInteger'; 2405 return; 2406 } 2407 throw invalidChar(read()); 2408 }, 2409 decimalExponentInteger: function () { 2410 if (util.isDigit(c)) { 2411 buffer += read(); 2412 return; 2413 } 2414 return newToken('numeric', sign * Number(buffer)); 2415 }, 2416 hexadecimal: function () { 2417 if (util.isHexDigit(c)) { 2418 buffer += read(); 2419 lexState = 'hexadecimalInteger'; 2420 return; 2421 }
2422 throw invalidChar(read()); 2423 }, 2424 hexadecimalInteger: function () { 2425 if (util.isHexDigit(c)) { 2426 buffer += read(); 2427 return; 2428 } 2429 return newToken('numeric', sign * Number(buffer)); 2430 }, 2431 string: function () { 2432 switch (c) { 2433 case '\\': 2434 read(); 2435 buffer += escape(); 2436 return; 2437 case '"': 2438 if (doubleQuote) { 2439 read(); 2440 return newToken('string', buffer); 2441 } 2442 buffer += read(); 2443 return; 2444 case "'": 2445 if (!doubleQuote) { 2446 read(); 2447 return newToken('string', buffer); 2448 } 2449 buffer += read(); 2450 return; 2451 case '\n': 2452 case '\r': 2453 throw invalidChar(read()); 2454 case '\u2028': 2455 case '\u2029': 2456 separatorChar(c); 2457 break; 2458 case undefined: 2459 throw invalidChar(read()); 2460 } 2461 buffer += read(); 2462 }, 2463 start: function () { 2464 switch (c) { 2465 case '{': 2466 case '[': 2467 return newToken('punctuator', read()); 2468 } 2469 lexState = 'value'; 2470 }, 2471 beforePropertyName: function () { 2472 switch (c) { 2473 case '$': 2474 case '_': 2475 buffer = read(); 2476 lexState = 'identifierName'; 2477 return; 2478 case '\\': 2479 read(); 2480 lexState = 'identifierNameStartEscape'; 2481 return; 2482 case '}': 2483 return newToken('punctuator', read()); 2484 case '"': 2485 case "'": 2486 doubleQuote = (read() === '"'); 2487 lexState = 'string'; 2488 return; 2489 } 2490 if (util.isIdStartChar(c)) { 2491 buffer += read(); 2492 lexState = 'identifierName'; 2493 return; 2494 } 2495 throw invalidChar(read()); 2496 }, 2497 afterPropertyName: function () { 2498 if (c === ':') { 2499 return newToken('punctuator', read()); 2500 } 2501 throw invalidChar(read()); 2502 }, 2503 beforePropertyValue: function () { 2504 lexState = 'value'; 2505 }, 2506 afterPropertyValue: function () { 2507 switch (c) { 2508 case ',': 2509 case '}': 2510 return newToken('punctuator', read()); 2511 } 2512 throw invalidChar(read()); 2513 }, 2514 beforeArrayValue: function () { 2515 if (c === ']') { 2516 return newToken('punctuator', read()); 2517 } 2518 lexState = 'value'; 2519 }, 2520 afterArrayValue: function () { 2521 switch (c) { 2522 case ',': 2523 case ']': 2524 return newToken('punctuator', read()); 2525 } 2526 throw invalidChar(read()); 2527 }, 2528 end: function () { 2529 throw invalidChar(read()); 2530 } 2531 }; 2532 function newToken(type, value) { 2533 return { 2534 type: type, 2535 value: value, 2536 line: line, 2537 column: column 2538 }; 2539 } 2540 function literal(s) { 2541 for (var _i = 0, s_1 = s; _i < s_1.length; _i++) { 2542 var c_1 = s_1[_i]; 2543 var p = peek(); 2544 if (p !== c_1) { 2545 throw invalidChar(read()); 2546 } 2547 read(); 2548 } 2549 } 2550 function escape() { 2551 var c = peek(); 2552 switch (c) { 2553 case 'b': 2554 read(); 2555 return '\b'; 2556 case 'f': 2557 read(); 2558 return '\f'; 2559 case 'n': 2560 read(); 2561 return '\n'; 2562 case 'r': 2563 read(); 2564 return '\r'; 2565 case 't': 2566 read(); 2567 return '\t'; 2568 case 'v': 2569 read(); 2570 return '\v'; 2571 case '0': 2572 read(); 2573 if (util.isDigit(peek())) { 2574 throw invalidChar(read()); 2575 } 2576 return '\0'; 2577 case 'x': 2578 read(); 2579 return hexEscape(); 2580 case 'u': 2581 read(); 2582 return unicodeEscape(); 2583 case '\n': 2584 case '\u2028': 2585 case '\u2029': 2586 read(); 2587 return ''; 2588 case '\r': 2589 read(); 2590 if (peek() === '\n') { 2591 read(); 2592 } 2593 return ''; 2594 case '1': 2595 case '2': 2596 case '3': 2597 case '4': 2598 case '5': 2599 case '6': 2600 case '7': 2601 case '8': 2602 case '9': 2603 throw invalidChar(read()); 2604 case undefined: 2605 throw invalidChar(read()); 2606 } 2607 return read(); 2608 } 2609 function hexEscape() { 2610 var buffer = ''; 2611 var c = peek(); 2612 if (!util.isHexDigit(c)) { 2613 throw invalidChar(read()); 2614 } 2615 buffer += read(); 2616 c = peek(); 2617 if (!util.isHexDigit(c)) { 2618 throw invalidChar(read()); 2619 } 2620 buffer += read(); 2621 return dstring.fromCodePoint(parseInt(buffer, 16)); 2622 } 2623 function unicodeEscape() { 2624 var buffer = ''; 2625 var count = 4; 2626 while (count-- > 0) { 2627 var c_2 = peek(); 2628 if (!util.isHexDigit(c_2)) { 2629 throw invalidChar(read()); 2630 } 2631 buffer += read(); 2632 } 2633 return dstring.fromCodePoint(parseInt(buffer, 16)); 2634 } 2635 var parseStates = { 2636 start: function () { 2637 if (token.type === 'eof') { 2638 throw invalidEOF(); 2639 } 2640 push(); 2641 }, 2642 beforePropertyName: function () { 2643 switch (token.type) { 2644 case 'identifier': 2645 case 'string': 2646 key = token.value; 2647 parseState = 'afterPropertyName'; 2648 return; 2649 case 'punctuator': 2650 pop(); 2651 return; 2652 case 'eof':
2653 throw invalidEOF(); 2654 } 2655 }, 2656 afterPropertyName: function () { 2657 if (token.type === 'eof') { 2658 throw invalidEOF(); 2659 } 2660 parseState = 'beforePropertyValue'; 2661 }, 2662 beforePropertyValue: function () { 2663 if (token.type === 'eof') { 2664 throw invalidEOF(); 2665 } 2666 push(); 2667 }, 2668 beforeArrayValue: function () { 2669 if (token.type === 'eof') { 2670 throw invalidEOF(); 2671 } 2672 if (token.type === 'punctuator' && token.value === ']') { 2673 pop(); 2674 return; 2675 } 2676 push(); 2677 }, 2678 afterPropertyValue: function () { 2679 if (token.type === 'eof') { 2680 throw invalidEOF(); 2681 } 2682 switch (token.value) { 2683 case ',': 2684 parseState = 'beforePropertyName'; 2685 return; 2686 case '}': 2687 pop(); 2688 } 2689 }, 2690 afterArrayValue: function () { 2691 if (token.type === 'eof') { 2692 throw invalidEOF(); 2693 } 2694 switch (token.value) { 2695 case ',': 2696 parseState = 'beforeArrayValue'; 2697 return; 2698 case ']': 2699 pop(); 2700 } 2701 }, 2702 end: function () { 2703 } 2704 }; 2705 function push() { 2706 var value; 2707 switch (token.type) { 2708 case 'punctuator': 2709 switch (token.value) { 2710 case '{': 2711 value = {}; 2712 break; 2713 case '[': 2714 value = []; 2715 break; 2716 } 2717 break; 2718 case 'null': 2719 case 'boolean': 2720 case 'numeric': 2721 case 'string': 2722 value = token.value; 2723 break; 2724 } 2725 if (root === undefined) { 2726 root = value; 2727 } 2728 else { 2729 var parent_1 = stack[stack.length - 1]; 2730 if (Array.isArray(parent_1)) { 2731 parent_1.push(value); 2732 } 2733 else { 2734 parent_1[key] = value; 2735 } 2736 } 2737 if (value !== null && typeof value === 'object') { 2738 stack.push(value); 2739 if (Array.isArray(value)) { 2740 parseState = 'beforeArrayValue'; 2741 } 2742 else { 2743 parseState = 'beforePropertyName'; 2744 } 2745 } 2746 else { 2747 var current = stack[stack.length - 1]; 2748 if (current == null) { 2749 parseState = 'end'; 2750 } 2751 else if (Array.isArray(current)) { 2752 parseState = 'afterArrayValue'; 2753 } 2754 else { 2755 parseState = 'afterPropertyValue'; 2756 } 2757 } 2758 } 2759 function pop() { 2760 stack.pop(); 2761 var current = stack[stack.length - 1]; 2762 if (current == null) { 2763 parseState = 'end'; 2764 } 2765 else if (Array.isArray(current)) { 2766 parseState = 'afterArrayValue'; 2767 } 2768 else { 2769 parseState = 'afterPropertyValue'; 2770 } 2771 }
2772 function invalidChar(c) { 2773 if (c === undefined) { 2774 return syntaxError("JSON5: invalid end of input at " + line + ":" + column); 2775 } 2776 return syntaxError("JSON5: invalid character '" + formatChar(c) + "' at " + line + ":" + column); 2777 } 2778 function invalidEOF() { 2779 return syntaxError("JSON5: invalid end of input at " + line + ":" + column); 2780 } 2781 function invalidIdentifier() { 2782 column -= 5; 2783 return syntaxError("JSON5: invalid identifier character at " + line + ":" + column); 2784 } 2785 function separatorChar(c) { 2786 console.warn("JSON5: '" + formatChar(c) + "' in strings is not valid ECMAScript; consider escaping"); 2787 } 2788 function formatChar(c) { 2789 var replacements = { 2790 "'": "\\'", 2791 '"': '\\"', 2792 '\\': '\\\\', 2793 '\b': '\\b', 2794 '\f': '\\f', 2795 '\n': '\\n', 2796 '\r': '\\r', 2797 '\t': '\\t', 2798 '\v': '\\v', 2799 '\0': '\\0', 2800 '\u2028': '\\u2028', 2801 '\u2029': '\\u2029' 2802 }; 2803 if (replacements[c]) { 2804 return replacements[c]; 2805 } 2806 if (c < ' ') { 2807 var hexString = c.charCodeAt(0).toString(16); 2808 return '\\x' + ('00' + hexString).substring(hexString.length); 2809 } 2810 return c; 2811 } 2812 function syntaxError(message) { 2813 var err = new SyntaxError(message); 2814 err.lineNumber = line; 2815 err.columnNumber = column; 2816 return err; 2817 } 2818 2819 return parse; 2820}); 2821 2822}, 2823'dojo/json5/util':function(){ 2824define([ 2825 './unicode' 2826], function (unicode) { 2827 return { 2828 isSpaceSeparator: function (c) { 2829 return typeof c === 'string' && unicode.Space_Separator.test(c); 2830 }, 2831 isIdStartChar: function (c) { 2832 return typeof c === 'string' && ((c >= 'a' && c <= 'z') || 2833 (c >= 'A' && c <= 'Z') || 2834 (c === '$') || (c === '_') || 2835 unicode.ID_Start.test(c)); 2836 }, 2837 isIdContinueChar: function (c) { 2838 return typeof c === 'string' && ((c >= 'a' && c <= 'z') || 2839 (c >= 'A' && c <= 'Z') || 2840 (c >= '0' && c <= '9') || 2841 (c === '$') || (c === '_') || 2842 (c === '\u200C') || (c === '\u200D') || 2843 unicode.ID_Continue.test(c)); 2844 }, 2845 isDigit: function (c) { 2846 return typeof c === 'string' && /[0-9]/.test(c); 2847 }, 2848 isHexDigit: function (c) { 2849 return typeof c === 'string' && /[0-9A-Fa-f]/.test(c); 2850 }, 2851 }; 2852}); 2853 2854}, 2855'dojo/json5/unicode':function(){ 2856define(
vendor: 15,733 bytes, lines 2856-2860
2856{ 2857 Space_Separator: /[\u1680\u2000-\u200A\u202F\u205F\u3000]/, 2858 ID_Start: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/, 2859 ID_Continue: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ 2860}
2860); 2861 2862}, 2863'RadioButtonList/widget/AssocRadioButtonList':function(){ 2864/*jslint browser: true, devel:true, nomen:true, unparam:true, regexp: true, plusplus:true*/ 2865/*global require, define, console, mx, mendix*/ 2866define([ 2867 "dojo/_base/declare", 2868 "mxui/widget/_WidgetBase", 2869 "dijit/_TemplatedMixin", 2870 "dijit/focus", 2871 "mxui/dom", 2872 "dojo/dom-class", 2873 "dojo/dom-style", 2874 "dojo/dom-construct", 2875 "dojo/dom-attr", 2876 "dojo/_base/array", 2877 "dojo/_base/lang", 2878 "dojo/html", 2879 "dojo/text!RadioButtonList/widget/template/RadioButtonList.html" 2880 ], 2881 function (declare, _WidgetBase, _TemplatedMixin, focusUtil, dom, dojoClass, dojoStyle, dojoConstruct, dojoAttr, dojoArray, lang, dojoHtml, widgetTemplate) { 2882 "use strict"; 2883 2884 // Declare widget. 2885 return declare("RadioButtonList.widget.AssocRadioButtonList", [_WidgetBase, _TemplatedMixin], { 2886 2887 // Template path 2888 templateString: widgetTemplate, 2889 2890 // DOM elements 2891 inputNodes: null, 2892 2893 // Parameters configurable in Business Modeler. 2894 dataSourceType: null, 2895 RadioListObject: null, 2896 Constraint: "", 2897 sortAttr: "", 2898 sortOrder: false, 2899 RadioListItemAttribute: "", 2900 entity: null, 2901 direction: "vertical", 2902 readonly: false, 2903 onchangeAction: "", 2904 allowDeselect: false, 2905 formOrientation: null, 2906 htmlContent: "escape", 2907 2908 // Internal variables. Non-primitives created in the prototype are shared between all widget instances. 2909 _handles: null, 2910 _contextObj: null, 2911 _alertDiv: null, 2912 _radioButtonOptions: null, 2913 _isReadOnly: false, 2914 _assocName: null, 2915 _locatedInListview: false, 2916 _setup: false, 2917 _radioContainer: null, 2918 2919 constructor: function () { 2920 this._handles = []; 2921 }, 2922 2923 postCreate: function () { 2924 console.debug(this.id + ".postCreate"); 2925 this._assocName = (typeof this.entity !== "undefined" && this.entity !== "") ? this.entity.split("/")[0] : ""; 2926 this.entity = this._assocName; 2927 }, 2928 2929 update: function (obj, callback) { 2930 console.debug(this.id + ".update"); 2931 2932 this._contextObj = obj;
2933 this._resetSubscriptions(); 2934 2935 if (!this._setup) { 2936 this._setupWidget(lang.hitch(this, function () { 2937 this._setRadiobuttonOptions(callback); 2938 })); 2939 } else { 2940 this._setRadiobuttonOptions(callback); 2941 } 2942 }, 2943 2944 _setupWidget: function (callback) { 2945 console.debug(this.id + "._setupWidget"); 2946 2947 if (this.readOnly || this.get("disabled") || this.readonly) { 2948 //this.readOnly isn't available in client API, this.get("disabled") works correctly since 5.18. 2949 //this.readonly is a widget property 2950 this._isReadOnly = true; 2951 } 2952 2953 if (this.sortAttr === "") { 2954 this.sortAttr = this.RadioListItemAttribute; 2955 } 2956 2957 // adjust the template based on the display settings. 2958 if (this.showLabel) { 2959 if (dojoClass.contains(this.radioButtonLabel, "hidden")) { 2960 dojoClass.remove(this.radioButtonLabel, "hidden"); 2961 } 2962 2963 if (this.formOrientation === "horizontal") { 2964 // width needs to be between 1 and 11 2965 var labelWidth = this.labelWidth < 1 ? 1 : this.labelWidth; 2966 labelWidth = this.labelWidth > 11 ? 11 : this.labelWidth; 2967 2968 var controlWidth = 12 - labelWidth, 2969 comboLabelClass = "col-sm-" + labelWidth; 2970 2971 dojoClass.add(this.radioButtonLabel, comboLabelClass); 2972 2973 this._radioContainer = dojoConstruct.place(dojoConstruct.create("div", { 2974 "class": "col-sm-" + controlWidth 2975 }), this.radioButtonContainer, "last"); 2976 2977 dojoConstruct.place(this.inputNodes, this._radioContainer, "only"); 2978 } else { 2979 dojoClass.add(this.radioButtonContainer, "no-columns"); 2980 } 2981 2982 this.radioButtonLabel.innerHTML = this.fieldCaption; 2983 } else { 2984 if (!dojoClass.contains(this.radioButtonLabel, "hidden")) { 2985 dojoClass.add(this.radioButtonLabel, "hidden"); 2986 } 2987 dojoClass.add(this.radioButtonContainer, "no-columns"); 2988 } 2989 2990 if (this.direction === "horizontal") { 2991 dojoClass.add(this.radioButtonContainer, "inline"); 2992 } 2993 2994 this._setup = true; 2995 2996 this._executeCallback(callback, "_setupWidget"); 2997 }, 2998 2999 _setRadiobuttonOptions: function (callback) { 3000 console.debug(this.id + "._setRadiobuttonOptions"); 3001 3002 if (this._contextObj) { 3003 if (this.dataSourceType === "xpath") { 3004 this._getDataFromXPath(callback); 3005 } else if (this.dataSourceType === "mf" && this.datasourceMf) { 3006 this._getDataFromDatasource(callback); 3007 } else { 3008 this._showError("Can\"t retrieve objects because no datasource microflow is specified"); 3009 this._executeCallback(callback, "_setRadiobuttonOptions"); 3010 } 3011 } else { 3012 this._updateRendering(callback); 3013 } 3014 }, 3015 3016 _updateRendering: function (callback) { 3017 console.debug(this.id + "._updateRendering"); 3018 if (this._contextObj !== null) { 3019 dojoStyle.set(this.domNode, "display", ""); 3020 this._createRadiobuttonNodes(callback); 3021 } else { 3022 if (!this._locatedInListview) { 3023 dojoStyle.set(this.domNode, "display", "none"); 3024 } 3025 this._executeCallback(callback, "_updateRendering no context"); 3026 } 3027 3028 // Important to clear all validations! 3029 this._clearValidations(); 3030 }, 3031 3032 _handleValidation: function (validations) { 3033 console.debug(this.id + "._handleValidation"); 3034 this._clearValidations(); 3035 3036 if (this._isReadOnly || this._contextObj.isReadonlyAttr(this.entity)) { 3037 return; 3038 } 3039
3040 var validation = validations[0], 3041 message = validation.getReasonByAttribute(this.entity); 3042 3043 this._addValidation(message); 3044 3045 validation.removeAttribute(this.entity); 3046 }, 3047 3048 _clearValidations: function () { 3049 console.debug(this.id + "._clearValidations"); 3050 dojoConstruct.destroy(this._alertDiv); 3051 this._alertDiv = null; 3052 dojoClass.remove(this.radioButtonContainer, "has-error"); 3053 }, 3054 3055 _showError: function (message) { 3056 console.debug(this.id + "._showError"); 3057 if (this._alertDiv !== null) { 3058 dojoHtml.set(this._alertDiv, message); 3059 return true; 3060 } 3061 this._alertDiv = dojoConstruct.create("div", { 3062 "class": "alert alert-danger mx-validation-message", 3063 "role": "alert", 3064 "innerHTML": message 3065 }); 3066 dojoConstruct.place(this._alertDiv, this._radioContainer ? this._radioContainer : this.radioButtonContainer); 3067 }, 3068 3069 _addValidation: function (message) { 3070 console.debug(this.id + "._addValidation"); 3071 if (message) { 3072 this._showError(message); 3073 dojoClass.add(this.radioButtonContainer, "has-error"); 3074 } 3075 }, 3076 3077 _resetSubscriptions: function () { 3078 console.debug(this.id + "._resetSubscriptions"); 3079 // Release handles on previous object, if any. 3080 this.unsubscribeAll(); 3081 3082 // When a mendix object exists create subscribtions. 3083 if (this._contextObj) { 3084 this.subscribe({ 3085 guid: this._contextObj.getGuid(), 3086 callback: lang.hitch(this, function (guid) { 3087 this._setRadiobuttonOptions(); 3088 }) 3089 }); 3090 3091 this.subscribe({ 3092 guid: this._contextObj.getGuid(), 3093 attr: this.entity, 3094 callback: lang.hitch(this, function (guid, attr, attrValue) { 3095 this._setRadiobuttonOptions(); 3096 }) 3097 }); 3098 3099 this.subscribe({ 3100 guid: this._contextObj.getGuid(), 3101 val: true, 3102 callback: lang.hitch(this, this._handleValidation) 3103 }); 3104 } 3105 }, 3106 3107 _getDataFromXPath: function (callback) { 3108 console.debug(this.id + "._getDataFromXPath"); 3109 if (this._contextObj) { 3110 mx.data.get({ 3111 xpath: "//" + this.RadioListObject + this.Constraint.replace(/\[%CurrentObject%\]/g, this._contextObj.getGuid()), 3112 filter: { 3113 limit: 50, 3114 depth: 0, 3115 sort: [ 3116 [this.sortAttr, this.sortOrder] 3117 ] 3118 }, 3119 callback: lang.hitch(this, function (objs) { 3120 this._populateRadiobuttonOptions(objs, callback); 3121 }), 3122 error: lang.hitch(this, function (err) { 3123 console.error(err); 3124 this._executeCallback(callback, "_getDataFromXPath mx.data.get.error"); 3125 }) 3126 }); 3127 } else { 3128 console.warn("Warning: No context object available."); 3129 } 3130 }, 3131 3132 _getDataFromDatasource: function (callback) { 3133 console.debug(this.id + "._getDataFromDatasource"); 3134 this._execMF(this._contextObj, this.datasourceMf, lang.hitch(this, function (objs) { 3135 this._populateRadiobuttonOptions(objs, callback); 3136 })); 3137 }, 3138 3139 _populateRadiobuttonOptions: function (objs, callback) { 3140 console.debug(this.id + "._populateRadiobuttonOptions"); 3141 var mxObj = null, 3142 i = 0, 3143 value; 3144 3145 this._radioButtonOptions = {}; 3146 if (objs && objs.length) { 3147 for (i = 0; i < objs.length; i++) { 3148 mxObj = objs[i]; 3149 value = mxObj.get(this.RadioListItemAttribute); 3150 value = this.htmlContent === "escape" ? dom.escapeString(value) : value; 3151 this._radioButtonOptions[mxObj.getGuid()] = value; 3152 } 3153 } 3154 3155 this._updateRendering(callback); 3156 }, 3157 3158 _createRadiobuttonNodes: function (callback) { 3159 console.debug(this.id + "._createRadiobuttonNodes"); 3160 3161 var mxObj = null, 3162 i = 0, 3163 j = 0, 3164 labelNode = null, 3165 radioButtonNode = null, 3166 enclosingDivElement = null, 3167 nodelength = 0; 3168 3169 if(this.inputNodes !== null){ 3170 if(this.inputNodes.children !== null){ 3171 nodelength = this.inputNodes.children.length; 3172 } 3173 3174 dojoConstruct.empty(this.inputNodes); 3175 3176 for (var option in this._radioButtonOptions) { 3177 if (this._radioButtonOptions.hasOwnProperty(option)) { 3178 labelNode = this._createLabelNode(option, this._radioButtonOptions[option], i); 3179 radioButtonNode = this._createRadiobuttonNode(option, this._radioButtonOptions[option], i); 3180 3181 if (this.inputNodes.children && this.inputNodes.children[i]) { 3182 enclosingDivElement = this.inputNodes.children[i]; 3183 } else { 3184 enclosingDivElement = dojoConstruct.create("div", { 3185 "class": "radio" 3186 }); 3187 } 3188 3189 if (enclosingDivElement.children[0]) { 3190 dojoConstruct.destroy(enclosingDivElement.children[0]); 3191 } 3192 3193 dojoConstruct.place(radioButtonNode, enclosingDivElement, "first"); 3194 dojoConstruct.place(labelNode, enclosingDivElement, "last"); 3195 3196 if (!this.inputNodes.children[i]) { 3197 dojoConstruct.place(enclosingDivElement, this.inputNodes, "last"); 3198 if(dojoAttr.get(radioButtonNode, "defaultChecked")) {
3199 focusUtil.focus(radioButtonNode); 3200 } 3201 } 3202 } 3203 3204 i++; 3205 } 3206 } 3207 j = i; 3208 if (j > 0) { 3209 for (j; j <= nodelength; j++) { 3210 dojoConstruct.destroy(this.inputNodes.children[i]); 3211 } 3212 } 3213 3214 this._executeCallback(callback, "_createRadiobuttonNodes"); 3215 }, 3216 3217 _createLabelNode: function (key, value, index) { 3218 console.debug(this.id + "._createLabelNode"); 3219 var labelNode = dojoConstruct.create("label", { 3220 "for": this.entity + "_" + this.id + "_" + index, 3221 "innerHTML": value 3222 }); 3223 3224 return labelNode; 3225 }, 3226 3227 _createRadiobuttonNode: function (key, value, index) { 3228 console.debug(this.id + "._createRadiobuttonNode"); 3229 var radiobuttonNode = null; 3230 3231 radiobuttonNode = dojoConstruct.create("input", { 3232 "type": "radio", 3233 "value": key, 3234 "id": this.entity + "_" + this.id + "_" + index 3235 }); 3236 3237 dojoAttr.set(radiobuttonNode, "name", "radio" + this._contextObj.getGuid() + "_" + this.id); 3238 3239 if (this._isReadOnly || 3240 this._contextObj.isReadonlyAttr(this.entity)) { 3241 dojoAttr.set(radiobuttonNode, "disabled", "disabled"); 3242 dojoAttr.set(radiobuttonNode, "readonly", "readonly"); 3243 } 3244 3245 if ("" + this._contextObj.get(this.entity) === key) { 3246 dojoAttr.set(radiobuttonNode, "defaultChecked", true); 3247 } 3248 this._addOnclickToRadiobuttonItem(radiobuttonNode, key); 3249 return radiobuttonNode; 3250 }, 3251 3252 _addOnclickToRadiobuttonItem: function (labelNode, rbvalue) { 3253 console.debug(this.id + "._addOnclickToRadiobuttonItem"); 3254 3255 this.connect(labelNode, "onclick", lang.hitch(this, function () { 3256 3257 if (this._isReadOnly || 3258 this._contextObj.isReadonlyAttr(this.entity)) { 3259 return; 3260 } 3261 if (this.allowDeselect && this._contextObj.get(this.entity) === rbvalue) { 3262 this._contextObj.set(this.entity, ""); 3263 dojoAttr.set(labelNode, "checked", false); 3264 } else { 3265 this._contextObj.set(this.entity, rbvalue); 3266 } 3267 3268 this._clearValidations(); 3269 3270 if (this.onchangeAction) { 3271 this._execMF(this._contextObj, this.onchangeAction); 3272 } 3273 })); 3274 }, 3275 3276 _execMF: function (obj, mf, callback) { 3277 console.debug(this.id + "._execMF"); 3278 var params = { 3279 applyto: "selection", 3280 actionname: mf, 3281 guids: [] 3282 }; 3283 if (obj) { 3284 params.guids = [obj.getGuid()]; 3285 } 3286 3287 mx.data.action({ 3288 params: params, 3289 caller: this.mxform, 3290 callback: function (objs) { 3291 if (typeof callback !== "undefined") { 3292 callback(objs); 3293 } 3294 }, 3295 error: function (error) { 3296 if (typeof callback !== "undefined") { 3297 callback(); 3298 } 3299 console.error(error.description); 3300 } 3301 }, this); 3302 }, 3303 3304 _executeCallback: function (cb, from) { 3305 console.debug(this.id + "._executeCallback " + (typeof cb) + (from ? " from " + from : "")); 3306 if (cb && typeof cb === "function") { 3307 cb(); 3308 } 3309 } 3310 }); 3311 });
3312 3313require(["RadioButtonList/widget/AssocRadioButtonList"]); 3314 3315}, 3316'HTMLSnippet/widget/HTMLSnippet':function(){ 3317define(["dojo/_base/declare","mxui/widget/_WidgetBase","dojo/dom-style","dojo/dom-attr","dojo/dom-construct","dojo/_base/lang","dojo/html","dijit/layout/LinkPane"],function(__WEBPACK_EXTERNAL_MODULE__80__,__WEBPACK_EXTERNAL_MODULE__146__,__WEBPACK_EXTERNAL_MODULE__147__,__WEBPACK_EXTERNAL_MODULE__148__,__WEBPACK_EXTERNAL_MODULE__149__,__WEBPACK_EXTERNAL_MODULE__150__,__WEBPACK_EXTERNAL_MODULE__151__,__WEBPACK_EXTERNAL_MODULE__152__){return function(t){function e(e){for(var r,o,i=e[0],c=e[1],u=0,a=[];u<i.length;u++)o=i[u],Object.prototype.hasOwnProperty.call(n,o)&&n[o]&&a.push(n[o][0]),n[o]=0;for(r in c)Object.prototype.hasOwnProperty.call(c,r)&&(t[r]=c[r]);for(s&&s(e);a.length;)a.shift()()}var r={},n={0:0};function o(e){if(r[e])return r[e].exports;var n=r[e]={i:e,l:!1,exports:{}};return t[e].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.e=function(t){var e=[],r=n[t];if(0!==r)if(r)e.push(r[2]);else{var i=new Promise(function(e,o){r=n[t]=[e,o]});e.push(r[2]=i);var c,u=document.createElement("script");u.charset="utf-8",u.timeout=120,o.nc&&u.setAttribute("nonce",o.nc),u.src=function(t){return o.p+"HTMLSnippet/widget/HTMLSnippet"+t+".js"}(t);var s=new Error;c=function(e){u.onerror=u.onload=null,clearTimeout(a);var r=n[t];if(0!==r){if(r){var o=e&&("load"===e.type?"missing":e.type),i=e&&e.target&&e.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",s.name="ChunkLoadError",s.type=o,s.request=i,r[1](s)}n[t]=void 0}};var a=setTimeout(function(){c({type:"timeout",target:u})},12e4);u.onerror=u.onload=c,document.head.appendChild(u)}return Promise.all(e)},o.m=t,o.c=r,o.d=function(t,e,r){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)o.d(r,n,function(e){return t[e]}.bind(null,n));return r},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="/widgets/",o.oe=function(t){throw console.error(t),t};var i=window.webpackJsonp=window.webpackJsonp||[],c=i.push.bind(i);i.push=e,i=i.slice();for(var u=0;u<i.length;u++)e(i[u]);var s=c;return o(o.s=154)}([function(t,e,r){"use strict";var n="object"==typeof document&&document.all;t.exports=void 0===n&&void 0!==n?function(t){return"function"==typeof t||t===n}:function(t){return"function"==typeof t}},function(t,e,r){"use strict";(function(e){var r=function(t){return t&&t.Math===Math&&t};t.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof e&&e)||r("object"==typeof this&&this)||function(){return this}()||Function("return this")()}).call(this,r(84))},function(t,e,r){"use strict";var n=r(26),o=Function.prototype,i=o.call,c=n&&o.bind.bind(i,i);t.exports=n?c:function(t){return function(){return i.apply(t,arguments)}}},function(t,e,r){"use strict";t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,r){"use strict";var n=r(1),o=r(58),i=r(10),c=r(60),u=r(56),s=r(55),a=n.Symbol,f=o("wks"),p=s?a.for||a:a&&a.withoutSetter||c;t.exports=function(t){return i(f,t)||(f[t]=u&&i(a,t)?a[t]:p("Symbol."+t)),f[t]}},function(t,e,r){"use strict";var n=r(1),o=r(52).f,i=r(17),c=r(16),u=r(38),s=r(65),a=r(68);t.exports=function(t,e){var r,f,p,l,v,h=t.target,d=t.global,_=t.stat;if(r=d?n:_?n[h]||u(h,{}):n[h]&&n[h].prototype)for(f in e){if(l=e[f],p=t.dontCallGetSet?(v=o(r,f))&&v.value:r[f],!a(d?f:h+(_?".":"#")+f,t.forced)&&void 0!==p){if(typeof l==typeof p)continue;s(l,p)}(t.sham||p&&p.sham)&&i(l,"sham",!0),c(r,f,l,t)}}},function(t,e,r){"use strict";var n=r(26),o=Function.prototype.call;t.exports=n?o.bind(o):function(){return o.apply(o,arguments)}},function(t,e,r){"use strict";var n=r(3);t.exports=!n(function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}}
3317)[1]})},function(t,e,r){"use strict";var n=r(0);t.exports=function(t){return"object"==typeof t?null!==t:n(t)}},function(t,e,r){"use strict";var n=r(0),o=r(31),i=TypeError;t.exports=function(t){if(n(t))return t;throw new i(o(t)+" is not a function")}},function(t,e,r){"use strict";var n=r(2),o=r(59),i=n({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return i(o(t),e)}},function(t,e,r){"use strict";var n=r(1),o=r(0),i=function(t){return o(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?i(n[t]):n[t]&&n[t][e]}},function(t,e,r){"use strict";t.exports=!1},function(t,e,r){"use strict";var n=r(8),o=String,i=TypeError;t.exports=function(t){if(n(t))return t;throw new i(o(t)+" is not an object")}},function(t,e,r){"use strict";var n=r(7),o=r(61),i=r(62),c=r(13),u=r(53),s=TypeError,a=Object.defineProperty,f=Object.getOwnPropertyDescriptor;e.f=n?i?function(t,e,r){if(c(t),e=u(e),c(r),"function"==typeof t&&"prototype"===e&&"value"in r&&"writable"in r&&!r.writable){var n=f(t,e);n&&n.writable&&(t[e]=r.value,r={configurable:"configurable"in r?r.configurable:n.configurable,enumerable:"enumerable"in r?r.enumerable:n.enumerable,writable:!1})}return a(t,e,r)}:a:function(t,e,r){if(c(t),e=u(e),c(r),o)try{return a(t,e,r)}catch(t){}if("get"in r||"set"in r)throw new s("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},function(t,e,r){"use strict";var n=r(9),o=TypeError,i=function(t){var e,r;this.promise=new t(function(t,n){if(void 0!==e||void 0!==r)throw new o("Bad Promise constructor");e=t,r=n}),this.resolve=n(e),this.reject=n(r)};t.exports.f=function(t){return new i(t)}},function(t,e,r){"use strict";var n=r(0),o=r(14),i=r(63),c=r(38);t.exports=function(t,e,r,u){u||(u={});var s=u.enumerable,a=void 0!==u.name?u.name:e;if(n(r)&&i(r,a,u),u.global)s?t[e]=r:c(e,r);else{try{u.unsafe?t[e]&&(s=!0):delete t[e]}catch(t){}s?t[e]=r:o.f(t,e,{value:r,enumerable:!1,configurable:!u.nonConfigurable,writable:!u.nonWritable})}return t}},function(t,e,r){"use strict";var n=r(7),o=r(14),i=r(19);t.exports=n?function(t,e,r){return o.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e,r){"use strict";var n=r(1);t.exports=n.Promise},function(t,e,r){"use strict";t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,r){"use strict";var n=r(86),o=r(28);t.exports=function(t){return n(o(t))}},function(t,e,r){"use strict";var n=r(1).navigator,o=n&&n.userAgent;t.exports=o?String(o):""},function(t,e,r){"use strict";var n=r(47),o=r(6),i=r(13),c=r(31),u=r(108),s=r(67),a=r(30),f=r(109),p=r(70),l=r(110),v=TypeError,h=function(t,e){this.stopped=t,this.result=e},d=h.prototype;t.exports=function(t,e,r){var _,y,g,m,b,x,E,w=r&&r.that,O=!(!r||!r.AS_ENTRIES),j=!(!r||!r.IS_RECORD),P=!(!r||!r.IS_ITERATOR),A=!(!r||!r.INTERRUPTED),S=n(e,w),C=function(t){return _&&l(_,"normal",t),new h(!0,t)},T=function(t){return O?(i(t),A?S(t[0],t[1],C):S(t[0],t[1])):A?S(t,C):S(t)};if(j)_=t.iterator;else if(P)_=t;else{if(!(y=p(t)))throw new v(c(t)+" is not iterable");if(u(y)){for(g=0,m=s(t);m>g;g++)if((b=T(t[g]))&&a(d,b))return b;return new h(!1)}_=f(t,y)}for(x=j?t.next:_.next;!(E=o(x,_)).done;){try{b=T(E.value)}catch(t){l(_,"throw",t)}if("object"==typeof b&&b&&a(d,b))return b}return new h(!1)}},function(t,e,r){"use strict";t.exports={}},function(t,e,r){"use strict";t.exports=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}}},function(t,e,r){"use strict";var n=r(1),o=r(18),i=r(0),c=r(68),u=r(40),s=r(4),a=r(74),f=r(12),p=r(57),l=o&&o.prototype,v=s("species"),h=!1,d=i(n.PromiseRejectionEvent),_=c("Promise",function(){var t=u(o),e=t!==String(o);if(!e&&66===p)return!0;if(f&&(!l.catch||!l.finally))return!0;if(!p||p<51||!/native code/.test(t)){var r=new o(function(t){t(1)}),n=function(t){t(function(){},function(){})};if((r.constructor={})[v]=n,!(h=r.then(function(){})instanceof n))return!0}return!(e||"BROWSER"!==a&&"DENO"!==a||d)});t.exports={CONSTRUCTOR:_,REJECTION_EVENT:d,SUBCLASSING:h}},function(t,e,r){"use strict";var n=r(3);t.exports=!n(function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")})},function(t,e,r){"use strict";var n=r(2),o=n({}.toString),i=n("".slice);t.exports=function(t){return i(o(t),8,-1)}},function(t,e,r){"use strict";var n=r(29),o=TypeError;t.exports=function(t){if(n(t))throw new o("Can't call method on "+t);return t}},function(t,e,r){"use strict";
3317t.exports=function(t){return null==t}},function(t,e,r){"use strict";var n=r(2);t.exports=n({}.isPrototypeOf)},function(t,e,r){"use strict";var n=String;t.exports=function(t){try{return n(t)}catch(t){return"Object"}}},function(t,e,r){"use strict";var n,o,i,c=r(89),u=r(1),s=r(8),a=r(17),f=r(10),p=r(37),l=r(41),v=r(42),h=u.TypeError,d=u.WeakMap;if(c||p.state){var _=p.state||(p.state=new d);_.get=_.get,_.has=_.has,_.set=_.set,n=function(t,e){if(_.has(t))throw new h("Object already initialized");return e.facade=t,_.set(t,e),e},o=function(t){return _.get(t)||{}},i=function(t){return _.has(t)}}else{var y=l("state");v[y]=!0,n=function(t,e){if(f(t,y))throw new h("Object already initialized");return e.facade=t,a(t,y,e),e},o=function(t){return f(t,y)?t[y]:{}},i=function(t){return f(t,y)}}t.exports={set:n,get:o,has:i,enforce:function(t){return i(t)?o(t):n(t,{})},getterFor:function(t){return function(e){var r;if(!s(e)||(r=o(e)).type!==t)throw new h("Incompatible receiver, "+t+" required");return r}}}},function(t,e,r){"use strict";var n,o=r(13),i=r(101),c=r(44),u=r(42),s=r(69),a=r(39),f=r(41),p=f("IE_PROTO"),l=function(){},v=function(t){return"<script>"+t+"<\/script>"},h=function(t){t.write(v("")),t.close();var e=t.parentWindow.Object;return t=null,e},d=function(){try{n=new ActiveXObject("htmlfile")}catch(t){}var t,e;d="undefined"!=typeof document?document.domain&&n?h(n):((e=a("iframe")).style.display="none",s.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(v("document.F=Object")),t.close(),t.F):h(n);for(var r=c.length;r--;)delete d.prototype[c[r]];return d()};
3317u[p]=!0,t.exports=Object.create||function(t,e){var r;return null!==t?(l.prototype=o(t),r=new l,l.prototype=null,r[p]=t):r=d(),void 0===e?r:i.f(r,e)}},function(t,e,r){"use strict";var n=r(48),o=r(0),i=r(27),c=r(4)("toStringTag"),u=Object,s="Arguments"===i(function(){return arguments}());t.exports=n?i:function(t){var e,r,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=u(t),c))?r:s?i(e):"Object"===(n=i(e))&&o(e.callee)?"Arguments":n}},function(t,e,r){"use strict";var n=r(18),o=r(133),i=r(25).CONSTRUCTOR;t.exports=i||!o(function(t){n.all(t).then(void 0,function(){})})},function(t,e,r){"use strict";var n=r(9),o=r(29);t.exports=function(t,e){var r=t[e];return o(r)?void 0:n(r)}},function(t,e,r){"use strict";var n=r(12),o=r(1),i=r(38),c=t.exports=o["__core-js_shared__"]||i("__core-js_shared__",{});(c.versions||(c.versions=[])).push({version:"3.38.1",mode:n?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE",source:"https://github.com/zloirock/core-js"})},function(t,e,r){"use strict";var n=r(1),o=Object.defineProperty;t.exports=function(t,e){try{o(n,t,{value:e,configurable:!0,writable:!0})}catch(r){n[t]=e}return e}},function(t,e,r){"use strict";var n=r(1),o=r(8),i=n.document,c=o(i)&&o(i.createElement);t.exports=function(t){return c?i.createElement(t):{}}},function(t,e,r){"use strict";var n=r(2),o=r(0),i=r(37),c=n(Function.toString);o(i.inspectSource)||(i.inspectSource=function(t){return c(t)}),t.exports=i.inspectSource},function(t,e,r){"use strict";var n=r(58),o=r(60),i=n("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,e,r){"use strict";t.exports={}},function(t,e,r){"use strict";var n=r(94);t.exports=function(t){var e=+t;return e!=e||0===e?0:n(e)}},function(t,e,r){"use strict";t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,e,r){"use strict";var n=r(10),o=r(0),i=r(59),c=r(41),u=r(97),s=c("IE_PROTO"),a=Object,f=a.prototype;t.exports=u?a.getPrototypeOf:function(t){var e=i(t);if(n(e,s))return e[s];var r=e.constructor;return o(r)&&e instanceof r?r.prototype:e instanceof a?f:null}},function(t,e,r){"use strict";var n=r(98),o=r(8),i=r(28),c=r(99);
vendor: 1,915 bytes, line 3317
3317t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,r={};try{(t=n(Object.prototype,"__proto__","set"))(r,[]),e=r instanceof Array}catch(t){}return function(r,n){return i(r),c(n),o(r)?(e?t(r,n):r.__proto__=n,r):r}}():void 0)},function(t,e,r){"use strict";var n=r(107),o=r(9),i=r(26),c=n(n.bind);t.exports=function(t,e){return o(t),void 0===e?t:i?c(t,e):function(){return t.apply(e,arguments)}}},function(t,e,r){"use strict";var n={};n[r(4)("toStringTag")]="z",t.exports="[object z]"===String(n)},function(t,e,r){"use strict";var n=r(34),o=String;t.exports=function(t){if("Symbol"===n(t))throw new TypeError("Cannot convert a Symbol value to a string");return o(t)}},function(t,e,r){"use strict";var n=r(14).f,o=r(10),i=r(4)("toStringTag");t.exports=function(t,e,r){t&&!r&&(t=t.prototype),t&&!o(t,i)&&n(t,i,{configurable:!0,value:e})}},function(t,e,r){"use strict";var n=r(74);t.exports="NODE"===n},function(t,e,r){"use strict";var n=r(7),o=r(6),i=r(85),c=r(19),u=r(20),s=r(53),a=r(10),f=r(61),p=Object.getOwnPropertyDescriptor;e.f=n?p:function(t,e){if(t=u(t),e=s(e),f)try{return p(t,e)}catch(t){}if(a(t,e))return c(!o(i.f,t,e),t[e])}},function(t,e,r){"use strict";var n=r(87),o=r(54);t.exports=function(t){var e=n(t,"string");return o(e)?e:e+""}},function(t,e,r){"use strict";var n=r(11),o=r(0),i=r(30),c=r(55),u=Object;t.exports=c?function(t){return"symbol"==typeof t}:function(t){var e=n("Symbol");return o(e)&&i(e.prototype,u(t))}},function(t,e,r){"use strict";var n=r(56);t.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(t,e,r){"use strict";var n=r(57),o=r(3),i=r(1).String;t.exports=!!Object.getOwnPropertySymbols&&!o(function(){var t=Symbol("symbol detection");return!i(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&n&&n<41})},function(t,e,r){"use strict";var n,o,i=r(1),c=r(21),u=i.process,s=i.Deno,a=u&&u.versions||s&&s.version,f=a&&a.v8;f&&(o=(n=f.split("."))[0]>
vendor: 4,395 bytes, line 3317
33170&&n[0]<4?1:+(n[0]+n[1])),!o&&c&&(!(n=c.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=c.match(/Chrome\/(\d+)/))&&(o=+n[1]),t.exports=o},function(t,e,r){"use strict";var n=r(37);t.exports=function(t,e){return n[t]||(n[t]=e||{})}},function(t,e,r){"use strict";var n=r(28),o=Object;t.exports=function(t){return o(n(t))}},function(t,e,r){"use strict";var n=r(2),o=0,i=Math.random(),c=n(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+c(++o+i,36)}},function(t,e,r){"use strict";var n=r(7),o=r(3),i=r(39);t.exports=!n&&!o(function(){return 7!==Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a})},function(t,e,r){"use strict";var n=r(7),o=r(3);t.exports=n&&o(function(){return 42!==Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype})},function(t,e,r){"use strict";var n=r(2),o=r(3),i=r(0),c=r(10),u=r(7),s=r(64).CONFIGURABLE,a=r(40),f=r(32),p=f.enforce,l=f.get,v=String,h=Object.defineProperty,d=n("".slice),_=n("".replace),y=n([].join),g=u&&!o(function(){return 8!==h(function(){},"length",{value:8}).length}),m=String(String).split("String"),b=t.exports=function(t,e,r){"Symbol("===d(v(e),0,7)&&(e="["+_(v(e),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),r&&r.getter&&(e="get "+e),r&&r.setter&&(e="set "+e),(!c(t,"name")||s&&t.name!==e)&&(u?h(t,"name",{value:e,configurable:!0}):t.name=e),g&&r&&c(r,"arity")&&t.length!==r.arity&&h(t,"length",{value:r.arity});try{r&&c(r,"constructor")&&r.constructor?u&&h(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var n=p(t);return c(n,"source")||(n.source=y(m,"string"==typeof e?e:"")),t};Function.prototype.toString=b(function(){return i(this)&&l(this).source||a(this)},"toString")},function(t,e,r){"use strict";var n=r(7),o=r(10),i=Function.prototype,c=n&&Object.getOwnPropertyDescriptor,u=o(i,"name"),s=u&&"something"===function(){}.name,a=u&&(!n||n&&c(i,"name").configurable);t.exports={EXISTS:u,PROPER:s,CONFIGURABLE:a}},function(t,e,r){"use strict";var n=r(10),o=r(90),i=r(52),c=r(14);t.exports=function(t,e,r){for(var u=o(e),s=c.f,a=i.f,f=0;f<u.length;f++){var p=u[f];n(t,p)||r&&n(r,p)||s(t,p,a(e,p))}}},function(t,e,r){"use strict";var n=r(2),o=r(10),i=r(20),c=r(92).indexOf,u=r(42),s=n([].push);t.exports=function(t,e){var r,n=i(t),a=0,f=[];for(r in n)!o(u,r)&&o(n,r)&&s(f,r);for(;e.length>a;)o(n,r=e[a++])&&(~c(f,r)||s(f,r));return f}},function(t,e,r){"use strict";var n=r(95);t.exports=function(t){return n(t.length)}},function(t,e,r){"use strict";var n=r(3),o=r(0),i=/#|\.prototype\./,c=function(t,e){var r=s[u(t)];return r===f||r!==a&&(o(e)?n(e):!!e)},u=c.normalize=function(t){return String(t).replace(i,".").toLowerCase()},s=c.data={},a=c.NATIVE="N",f=c.POLYFILL="P";t.exports=c},function(t,e,r){"use strict";var n=r(11);t.exports=n("document","documentElement")},function(t,e,r){"use strict";var n=r(34),o=r(36),i=r(29),c=r(23),u=r(4)("iterator");t.exports=function(t){if(!i(t))return o(t,u)||o(t,"@@iterator")||c[n(t)]}},function(t,e,r){"use strict";var n=r(5),o=r(6),i=r(12),c=r(64),u=r(0),s=r(114),a=r(45),f=r(46),p=r(50),l=r(17),v=r(16),h=r(4),d=r(23),_=r(72),y=c.PROPER,g=c.CONFIGURABLE,m=_.IteratorPrototype,b=_.BUGGY_SAFARI_ITERATORS,x=h("iterator"),E=function(){return this};t.exports=function(t,e,r,c,h,_,w){s(r,e,c);var O,j,P,A=function(t){if(t===h&&N)return N;if(!b&&t&&t in T)return T[t];switch(t){case"keys":case"values":case"entries":return function(){return new r(this,t)}}return function(){return new r(this)}},S=e+" Iterator",C=!1,T=t.prototype,R=T[x]||T["@@iterator"]||h&&T[h],N=!b&&R||A(h),L="Array"===e&&T.entries||R;if(L&&(O=a(L.call(new t)))!==Object.prototype&&O.next&&(i||a(O)===m||(f?f(O,m):u(O[x])||v(O,x,E)),p(O,S,!0,!0),i&&(d[S]=E)),y&&"values"===h&&R&&"values"!==R.name&&(!i&&g?l(T,"name","values"):(C=!0,N=function(){return o(R,this)})),h)if(j={values:A("values"),keys:_?N:A("keys"),entries:A("entries")},w)for(P in j)!b&&!C&&P in T||v(T,P,j[P]);else n({target:e,proto:!0,forced:b||C},j);return i&&!w||T[x]===N||v(T,x,N,{name:h}),d[e]=N,j}},function(t,e,r){"use strict";var n,o,i,c=r(3),u=r(0),s=r(8),a=r(33),f=r(45),p=r(16),l=r(4),v=r(12),h=l("iterator"),d=!1;[].keys&&("next"in(i=[].keys())?(o=f(f(i)))!==Object.prototype&&(n=o):d=!0),!s(n)||c(function(){var t={};return n[h].call(t)!==t})?n={}:v&&(n=a(n)),u(n[h])||p(n,h,function(){return this}),t.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:d}},function(t,e,r){"use strict";
vendor: 1,687 bytes, line 3317
3317t.exports=function(t,e){return{value:t,done:e}}},function(t,e,r){"use strict";var n=r(1),o=r(21),i=r(27),c=function(t){return o.slice(0,t.length)===t};t.exports=c("Bun/")?"BUN":c("Cloudflare-Workers")?"CLOUDFLARE":c("Deno/")?"DENO":c("Node.js/")?"NODE":n.Bun&&"string"==typeof Bun.version?"BUN":n.Deno&&"object"==typeof Deno.version?"DENO":"process"===i(n.process)?"NODE":n.window&&n.document?"BROWSER":"REST"},function(t,e,r){"use strict";var n=r(13),o=r(122),i=r(29),c=r(4)("species");t.exports=function(t,e){var r,u=n(t).constructor;return void 0===u||i(r=n(u)[c])?e:o(r)}},function(t,e,r){"use strict";var n,o,i,c,u=r(1),s=r(124),a=r(47),f=r(0),p=r(10),l=r(3),v=r(69),h=r(125),d=r(39),_=r(126),y=r(77),g=r(51),m=u.setImmediate,b=u.clearImmediate,x=u.process,E=u.Dispatch,w=u.Function,O=u.MessageChannel,j=u.String,P=0,A={};l(function(){n=u.location});var S=function(t){if(p(A,t)){var e=A[t];delete A[t],e()}},C=function(t){return function(){S(t)}},T=function(t){S(t.data)},R=function(t){u.postMessage(j(t),n.protocol+"//"+n.host)};m&&b||(m=function(t){_(arguments.length,1);var e=f(t)?t:w(t),r=h(arguments,1);return A[++P]=function(){s(e,void 0,r)},o(P),P},b=function(t){delete A[t]},g?o=function(t){x.nextTick(C(t))}:E&&E.now?o=function(t){E.now(C(t))}:O&&!y?(c=(i=new O).port2,i.port1.onmessage=T,o=a(c.postMessage,c)):u.addEventListener&&f(u.postMessage)&&!u.importScripts&&n&&"file:"!==n.protocol&&!l(R)?(o=R,u.addEventListener("message",T,!1)):o="onreadystatechange"in d("script")?function(t){v.appendChild(d("script")).onreadystatechange=function(){v.removeChild(this),S(t)}}:function(t){setTimeout(C(t),0)}),t.exports={set:m,clear:b}},function(t,e,r){"use strict";var n=r(21);
3317t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},function(t,e,r){"use strict";var n=function(){this.head=null,this.tail=null};n.prototype={add:function(t){var e={item:t,next:null},r=this.tail;r?r.next=e:this.head=e,this.tail=e},get:function(){var t=this.head;if(t)return null===(this.head=t.next)&&(this.tail=null),t.item}},t.exports=n},function(t,e,r){"use strict";var n=r(13),o=r(8),i=r(15);t.exports=function(t,e){if(n(t),o(e)&&e.constructor===t)return e;var r=i.f(t);return(0,r.resolve)(e),r.promise}},function(t,e){t.exports=__WEBPACK_EXTERNAL_MODULE__80__},function(t,e,r){"use strict";r(82),r(112),r(115),r(117),r(138),r(139),r(140),r(141),r(142);var n=r(144);t.exports=n.Promise},function(t,e,r){"use strict";r(83)},function(t,e,r){"use strict";var n=r(5),o=r(30),i=r(45),c=r(46),u=r(65),s=r(33),a=r(17),f=r(19),p=r(103),l=r(104),v=r(22),h=r(111),d=r(4)("toStringTag"),_=Error,y=[].push,g=function(t,e){var r,n=o(m,this);c?r=c(new _,n?i(this):m):(r=n?this:s(m),a(r,d,"Error")),void 0!==e&&a(r,"message",h(e)),l(r,g,r.stack,1),arguments.length>2&&p(r,arguments[2]);var u=[];return v(t,y,{that:u}),a(r,"errors",u),r};c?c(g,_):u(g,_,{name:!0});var m=g.prototype=s(_.prototype,{constructor:f(1,g),message:f(1,""),name:f(1,"AggregateError")});n({global:!0,constructor:!0,arity:2},{AggregateError:g})},function(t,e){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e,r){"use strict";var n={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!n.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:n},function(t,e,r){"use strict";var n=r(2),o=r(3),i=r(27),c=Object,u=n("".split);t.exports=o(function(){return!c("z").propertyIsEnumerable(0)})?function(t){return"String"===i(t)?u(t,""):c(t)}:c},function(t,e,r){"use strict";var n=r(6),o=r(8),i=r(54),c=r(36),u=r(88),s=r(4),a=TypeError,f=s("toPrimitive");t.exports=function(t,e){if(!o(t)||i(t))return t;var r,s=c(t,f);if(s){if(void 0===e&&(e="default"),r=n(s,t,e),!o(r)||i(r))return r;throw new a("Can't convert object to primitive value")}return void 0===e&&(e="number"),u(t,e)}},function(t,e,r){"use strict";var n=r(6),o=r(0),i=r(8),c=TypeError;t.exports=function(t,e){var r,u;if("string"===e&&o(r=t.toString)&&!i(u=n(r,t)))return u;if(o(r=t.valueOf)&&!i(u=n(r,t)))return u;if("string"!==e&&o(r=t.toString)&&!i(u=n(r,t)))return u;throw new c("Can't convert object to primitive value")}},function(t,e,r){"use strict";var n=r(1),o=r(0),i=n.WeakMap;t.exports=o(i)&&/native code/.test(String(i))},function(t,e,r){"use strict";var n=r(11),o=r(2),i=r(91),c=r(96),u=r(13),s=o([].concat);t.exports=n("Reflect","ownKeys")||function(t){var e=i.f(u(t)),r=c.f;return r?s(e,r(t)):e}},function(t,e,r){"use strict";var n=r(66),o=r(44).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return n(t,o)}},function(t,e,r){"use strict";var n=r(20),o=r(93),i=r(67),c=function(t){return function(e,r,c){var u=n(e),s=i(u);if(0===s)return!t&&-1;var a,f=o(c,s);if(t&&r!=r){for(;s>f;)if((a=u[f++])!=a)return!0}else for(;s>f;f++)if((t||f in u)&&u[f]===r)return t||f||0;return!t&&-1}};t.exports={includes:c(!0),indexOf:c(!1)}},function(t,e,r){"use strict";var n=r(43),o=Math.max,i=Math.min;t.exports=function(t,e){var r=n(t);return r<0?o(r+e,0):i(r,e)}},function(t,e,r){"use strict";var n=Math.ceil,o=Math.floor;t.exports=Math.trunc||function(t){var e=+t;return(e>0?o:n)(e)}},function(t,e,r){"use strict";var n=r(43),o=Math.min;t.exports=function(t){var e=n(t);return e>0?o(e,9007199254740991):0}},function(t,e,r){"use strict";e.f=Object.getOwnPropertySymbols},function(t,e,r){"use strict";var n=r(3);t.exports=!n(function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})},function(t,e,r){"use strict";var n=r(2),o=r(9);t.exports=function(t,e,r){try{return n(o(Object.getOwnPropertyDescriptor(t,e)[r]))}catch(t){}}},function(t,e,r){"use strict";var n=r(100),o=String,i=TypeError;t.exports=function(t){if(n(t))return t;throw new i("Can't set "+o(t)+" as a prototype")}},function(t,e,r){"use strict";var n=r(8);t.exports=function(t){return n(t)||null===t}},function(t,e,r){"use strict";var n=r(7),o=r(62),i=r(14),c=r(13),u=r(20),s=r(102);e.f=n&&!o?Object.defineProperties:function(t,e){c(t);for(var r,n=u(e),o=s(e),a=o.length,f=0;a>f;)i.f(t,r=o[f++],n[r]);return t}},function(t,e,r){"use strict";var n=r(66),o=r(44);t.exports=Object.keys||function(t){return n(t,o)}},function(t,e,r){"use strict";var n=r(8),o=r(17);t.exports=function(t,e){n(e)&&"cause"in e&&o(t,"cause",e.cause)}},function(t,e,r){"use strict";var n=r(17),o=r(105),i=r(106),c=Error.captureStackTrace;t.exports=function(t,e,r,u){i&&(c?c(t,e):n(t,"stack",o(r,u)))}},function(t,e,r){"use strict";var n=r(2),o=Error,i=n("".replace),c=String(new o("zxcasd").stack),u=/\n\s*at [^:]*:[^\n]*/,s=u.test(c);t.exports=function(t,e){if(s&&"string"==typeof t&&!o.prepareStackTrace)for(;e--;)t=i(t,u,"");return t}},function(t,e,r){"use strict";var n=r(3),o=r(19);t.exports=!n(function(){var t=new Error("a");return!("stack"in t)||(Object.defineProperty(t,"stack",o(1,7)),7!==t.stack)})},function(t,e,r){"use strict";var n=r(27),o=r(2);t.exports=function(t){if("Function"===n(t))return o(t)}},function(t,e,r){"use strict";
vendor: 3,407 bytes, line 3317
3317var n=r(4),o=r(23),i=n("iterator"),c=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||c[i]===t)}},function(t,e,r){"use strict";var n=r(6),o=r(9),i=r(13),c=r(31),u=r(70),s=TypeError;t.exports=function(t,e){var r=arguments.length<2?u(t):e;if(o(r))return i(n(r,t));throw new s(c(t)+" is not iterable")}},function(t,e,r){"use strict";var n=r(6),o=r(13),i=r(36);t.exports=function(t,e,r){var c,u;o(t);try{if(!(c=i(t,"return"))){if("throw"===e)throw r;return r}c=n(c,t)}catch(t){u=!0,c=t}if("throw"===e)throw r;if(u)throw c;return o(c),r}},function(t,e,r){"use strict";var n=r(49);t.exports=function(t,e){return void 0===t?arguments.length<2?"":e:n(t)}},function(t,e,r){"use strict";var n=r(20),o=r(113),i=r(23),c=r(32),u=r(14).f,s=r(71),a=r(73),f=r(12),p=r(7),l=c.set,v=c.getterFor("Array Iterator");t.exports=s(Array,"Array",function(t,e){l(this,{type:"Array Iterator",target:n(t),index:0,kind:e})},function(){var t=v(this),e=t.target,r=t.index++;if(!e||r>=e.length)return t.target=null,a(void 0,!0);switch(t.kind){case"keys":return a(r,!1);case"values":return a(e[r],!1)}return a([r,e[r]],!1)},"values");var h=i.Arguments=i.Array;if(o("keys"),o("values"),o("entries"),!f&&p&&"values"!==h.name)try{u(h,"name",{value:"values"})}catch(t){}},function(t,e,r){"use strict";var n=r(4),o=r(33),i=r(14).f,c=n("unscopables"),u=Array.prototype;void 0===u[c]&&i(u,c,{configurable:!0,value:o(null)}),t.exports=function(t){u[c][t]=!0}},function(t,e,r){"use strict";var n=r(72).IteratorPrototype,o=r(33),i=r(19),c=r(50),u=r(23),s=function(){return this};t.exports=function(t,e,r,a){var f=e+" Iterator";return t.prototype=o(n,{next:i(+!a,r)}),c(t,f,!1,!0),u[f]=s,t}},function(t,e,r){"use strict";var n=r(48),o=r(16),i=r(116);n||o(Object.prototype,"toString",i,{unsafe:!0})},function(t,e,r){"use strict";var n=r(48),o=r(34);t.exports=n?{}.toString:function(){return"[object "+o(this)+"]"}},function(t,e,r){"use strict";r(118),r(132),r(134),r(135),r(136),r(137)},function(t,e,r){"use strict";var n,o,i,c=r(5),u=r(12),s=r(51),a=r(1),f=r(6),p=r(16),l=r(46),v=r(50),h=r(119),d=r(9),_=r(0),y=r(8),g=r(121),m=r(75),b=r(76).set,x=r(127),E=r(131),w=r(24),O=r(78),j=r(32),P=r(18),A=r(25),S=r(15),C=A.CONSTRUCTOR,T=A.REJECTION_EVENT,R=A.SUBCLASSING,N=j.getterFor("Promise"),L=j.set,k=P&&P.prototype,D=P,M=k,I=a.TypeError,U=a.document,B=a.process,W=S.f,F=W,K=!!(U&&U.createEvent&&a.dispatchEvent),q=function(t){var e;return!(!y(t)||!_(e=t.then))&&e},X=function(t,e){var r,n,o,i=e.value,c=1===e.state,u=c?t.ok:t.fail,s=t.resolve,a=t.reject,p=t.domain;try{u?(c||(2===e.rejection&&z(e),e.rejection=1),!0===u?r=i:(p&&p.enter(),r=u(i),p&&(p.exit(),o=!0)),r===t.promise?a(new I("Promise-chain cycle")):(n=q(r))?f(n,r,s,a):s(r)):a(i)}catch(t){p&&!o&&p.exit(),a(t)}},G=function(t,e){t.notified||(t.notified=!0,x(function(){for(var r,n=t.reactions;r=n.get();)X(r,t);t.notified=!1,e&&!t.rejection&&H(t)}))},Q=function(t,e,r){var n,o;K?((n=U.createEvent("Event")).promise=e,n.reason=r,n.initEvent(t,!1,!0),a.dispatchEvent(n)):n={promise:e,reason:r},!T&&(o=a["on"+t])?o(n):"unhandledrejection"===t&&E("Unhandled promise rejection",r)},H=function(t){f(b,a,function(){var e,r=t.facade,n=t.value;if(J(t)&&(e=w(function(){s?B.emit("unhandledRejection",n,r):Q("unhandledrejection",r,n)}),t.rejection=s||J(t)?2:1,e.error))throw e.value})},J=function(t){return 1!==t.rejection&&!t.parent},z=function(t){f(b,a,function(){var e=t.facade;
vendor: 8,720 bytes, line 3317
3317s?B.emit("rejectionHandled",e):Q("rejectionhandled",e,t.value)})},Y=function(t,e,r){return function(n){t(e,n,r)}},$=function(t,e,r){t.done||(t.done=!0,r&&(t=r),t.value=e,t.state=2,G(t,!0))},V=function(t,e,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===e)throw new I("Promise can't be resolved itself");var n=q(e);n?x(function(){var r={done:!1};try{f(n,e,Y(V,r,t),Y($,r,t))}catch(e){$(r,e,t)}}):(t.value=e,t.state=1,G(t,!1))}catch(e){$({done:!1},e,t)}}};if(C&&(M=(D=function(t){g(this,M),d(t),f(n,this);var e=N(this);try{t(Y(V,e),Y($,e))}catch(t){$(e,t)}}).prototype,(n=function(t){L(this,{type:"Promise",done:!1,notified:!1,parent:!1,reactions:new O,rejection:!1,state:0,value:null})}).prototype=p(M,"then",function(t,e){var r=N(this),n=W(m(this,D));return r.parent=!0,n.ok=!_(t)||t,n.fail=_(e)&&e,n.domain=s?B.domain:void 0,0===r.state?r.reactions.add(n):x(function(){X(n,r)}),n.promise}),o=function(){var t=new n,e=N(t);this.promise=t,this.resolve=Y(V,e),this.reject=Y($,e)},S.f=W=function(t){return t===D||void 0===t?new o(t):F(t)},!u&&_(P)&&k!==Object.prototype)){i=k.then,R||p(k,"then",function(t,e){var r=this;return new D(function(t,e){f(i,r,t,e)}).then(t,e)},{unsafe:!0});try{delete k.constructor}catch(t){}l&&l(k,M)}c({global:!0,constructor:!0,wrap:!0,forced:C},{Promise:D}),v(D,"Promise",!1,!0),h("Promise")},function(t,e,r){"use strict";var n=r(11),o=r(120),i=r(4),c=r(7),u=i("species");t.exports=function(t){var e=n(t);c&&e&&!e[u]&&o(e,u,{configurable:!0,get:function(){return this}})}},function(t,e,r){"use strict";var n=r(63),o=r(14);t.exports=function(t,e,r){return r.get&&n(r.get,e,{getter:!0}),r.set&&n(r.set,e,{setter:!0}),o.f(t,e,r)}},function(t,e,r){"use strict";var n=r(30),o=TypeError;t.exports=function(t,e){if(n(e,t))return t;throw new o("Incorrect invocation")}},function(t,e,r){"use strict";var n=r(123),o=r(31),i=TypeError;t.exports=function(t){if(n(t))return t;throw new i(o(t)+" is not a constructor")}},function(t,e,r){"use strict";var n=r(2),o=r(3),i=r(0),c=r(34),u=r(11),s=r(40),a=function(){},f=u("Reflect","construct"),p=/^\s*(?:class|function)\b/,l=n(p.exec),v=!p.test(a),h=function(t){if(!i(t))return!1;try{return f(a,[],t),!0}catch(t){return!1}},d=function(t){if(!i(t))return!1;switch(c(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return v||!!l(p,s(t))}catch(t){return!0}};d.sham=!0,t.exports=!f||o(function(){var t;return h(h.call)||!h(Object)||!h(function(){t=!0})||t})?d:h},function(t,e,r){"use strict";var n=r(26),o=Function.prototype,i=o.apply,c=o.call;t.exports="object"==typeof Reflect&&Reflect.apply||(n?c.bind(i):function(){return c.apply(i,arguments)})},function(t,e,r){"use strict";var n=r(2);t.exports=n([].slice)},function(t,e,r){"use strict";var n=TypeError;t.exports=function(t,e){if(t<e)throw new n("Not enough arguments");return t}},function(t,e,r){"use strict";var n,o,i,c,u,s=r(1),a=r(128),f=r(47),p=r(76).set,l=r(78),v=r(77),h=r(129),d=r(130),_=r(51),y=s.MutationObserver||s.WebKitMutationObserver,g=s.document,m=s.process,b=s.Promise,x=a("queueMicrotask");if(!x){var E=new l,w=function(){var t,e;for(_&&(t=m.domain)&&t.exit();e=E.get();)try{e()}catch(t){throw E.head&&n(),t}t&&t.enter()};v||_||d||!y||!g?!h&&b&&b.resolve?((c=b.resolve(void 0)).constructor=b,u=f(c.then,c),n=function(){u(w)}):_?n=function(){m.nextTick(w)}:(p=f(p,s),n=function(){p(w)}):(o=!0,i=g.createTextNode(""),new y(w).observe(i,{characterData:!0}),n=function(){i.data=o=!o}),x=function(t){E.head||n(),E.add(t)}}t.exports=x},function(t,e,r){"use strict";var n=r(1),o=r(7),i=Object.getOwnPropertyDescriptor;t.exports=function(t){if(!o)return n[t];var e=i(n,t);return e&&e.value}},function(t,e,r){"use strict";var n=r(21);t.exports=/ipad|iphone|ipod/i.test(n)&&"undefined"!=typeof Pebble},function(t,e,r){"use strict";var n=r(21);t.exports=/web0s(?!.*chrome)/i.test(n)},function(t,e,r){"use strict";t.exports=function(t,e){try{1===arguments.length?console.error(t):console.error(t,e)}catch(t){}}},function(t,e,r){"use strict";var n=r(5),o=r(6),i=r(9),c=r(15),u=r(24),s=r(22);n({target:"Promise",stat:!0,forced:r(35)},{all:function(t){var e=this,r=c.f(e),n=r.resolve,a=r.reject,f=u(function(){var r=i(e.resolve),c=[],u=0,f=1;s(t,function(t){var i=u++,s=!1;f++,o(r,e,t).then(function(t){s||(s=!0,c[i]=t,--f||n(c))},a)}),--f||n(c)});return f.error&&a(f.value),r.promise}})},function(t,e,r){"use strict";var n=r(4)("iterator"),o=!1;try{var i=0,c={next:function(){return{done:!!i++}},return:function(){o=!0}};c[n]=function(){return this},Array.from(c,function(){throw 2})}catch(t){}t.exports=function(t,e){try{if(!e&&!o)return!1}catch(t){return!1}var r=!1;try{var i={};i[n]=function(){return{next:function(){return{done:r=!0}}}},t(i)}catch(t){}return r}},function(t,e,r){"use strict";var n=r(5),o=r(12),i=r(25).CONSTRUCTOR,c=r(18),u=r(11),s=r(0),a=r(16),f=c&&c.prototype;if(n({target:"Promise",proto:!0,forced:i,real:!0},{catch:function(t){return this.then(void 0,t)}}),!o&&s(c)){var p=u("Promise").prototype.catch;f.catch!==p&&a(f,"catch",p,{unsafe:!0})}},function(t,e,r){"use strict";var n=r(5),o=r(6),i=r(9),c=r(15),u=r(24),s=r(22);n({target:"Promise",stat:!0,forced:r(35)},{race:function(t){var e=this,r=c.f(e),n=r.reject,a=u(function(){var c=i(e.resolve);s(t,function(t){o(c,e,t).then(r.resolve,n)})});return a.error&&n(a.value),r.promise}})},function(t,e,r){"use strict";var n=r(5),o=r(15);n({target:"Promise",stat:!0,forced:r(25).CONSTRUCTOR},{reject:function(t){var e=o.f(this);return(0,e.reject)(t),e.promise}})},function(t,e,r){"use strict";var n=r(5),o=r(11),i=r(12),c=r(18),u=r(25).CONSTRUCTOR,s=r(79),a=o("Promise"),f=i&&!u;n({target:"Promise",stat:!0,forced:i||u},{resolve:function(t){return s(f&&this===a?c:this,t)}})},function(t,e,r){"use strict";var n=r(5),o=r(6),i=r(9),c=r(15),u=r(24),s=r(22);n({target:"Promise",stat:!0,forced:r(35)},{allSettled:function(t){var e=this,r=c.f(e),n=r.resolve,a=r.reject,f=u(function(){var r=i(e.resolve),c=[],u=0,a=1;s(t,function(t){var i=u++,s=!1;a++,o(r,e,t).then(function(t){s||(s=!0,c[i]={status:"fulfilled",value:t},--a||n(c))},function(t){s||(s=!0,c[i]={status:"rejected",reason:t},--a||n(c))})}),--a||n(c)});return f.error&&a(f.value),r.promise}})},function(t,e,r){"use strict";var n=r(5),o=r(6),i=r(9),c=r(11),u=r(15),s=r(24),a=r(22),f=r(35);n({target:"Promise",stat:!0,forced:f},{any:function(t){var e=this,r=c("AggregateError"),n=u.f(e),f=n.resolve,p=n.reject,l=s(function(){var n=i(e.resolve),c=[],u=0,s=1,l=!1;a(t,function(t){var i=u++,a=!1;s++,o(n,e,t).then(function(t){a||l||(l=!0,f(t))},function(t){a||l||(a=!0,c[i]=t,--s||p(new r(c,"No one promise resolved")))})}),--s||p(new r(c,"No one promise resolved"))});return l.error&&p(l.value),n.promise}})},function(t,e,r){"use strict";var n=r(5),o=r(15);n({target:"Promise",stat:!0},{withResolvers:function(){var t=o.f(this);return{promise:t.promise,resolve:t.resolve,reject:t.reject}}})},function(t,e,r){"use strict";var n=r(5),o=r(12),i=r(18),c=r(3),u=r(11),s=r(0),a=r(75),f=r(79),p=r(16),l=i&&i.prototype;if(n({target:"Promise",proto:!0,real:!0,forced:!!i&&c(function(){l.finally.call({then:function(){}},function(){})})},{finally:function(t){var e=a(this,u("Promise")),r=s(t);return this.then(r?function(r){return f(e,t()).then(function(){return r})}:t,r?function(r){return f(e,t()).then(function(){throw r})}:t)}}),!o&&s(i)){var v=u("Promise").prototype.finally;l.finally!==v&&p(l,"finally",v,{unsafe:!0})}},function(t,e,r){"use strict";var n=r(143).charAt,o=r(49),i=r(32),c=r(71),u=r(73),s=i.set,a=i.getterFor("String Iterator");c(String,"String",function(t){s(this,{type:"String Iterator",string:o(t),index:0})},function(){var t,e=a(this),r=e.string,o=e.index;return o>=r.length?u(void 0,!0):(t=n(r,o),e.index+=t.length,u(t,!1))})},function(t,e,r){"use strict";var n=r(2),o=r(43),i=r(49),c=r(28),u=n("".charAt),s=n("".charCodeAt),a=n("".slice),f=function(t){return function(e,r){var n,f,p=i(c(e)),l=o(r),v=p.length;return l<0||l>=v?t?"":void 0:(n=s(p,l))<55296||n>56319||l+1===v||(f=s(p,l+1))<56320||f>57343?t?u(p,l):n:t?a(p,l,l+2):f-56320+(n-55296<<10)+65536}};t.exports={codeAt:f(!1),charAt:f(!0)}},function(t,e,r){"use strict";var n=r(1);t.exports=n},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(80),__webpack_require__(146),__webpack_require__(147),__webpack_require__(148),__webpack_require__(149),__webpack_require__(150),__webpack_require__(151),__webpack_require__(152)],__WEBPACK_AMD_DEFINE_RESULT__=function(declare,_WidgetBase,domStyle,domAttr,domConstruct,lang,html,LinkPane){"use strict";return declare("HTMLSnippet.widget.HTMLSnippet",[_WidgetBase],{contenttype:"html",contents:"",contentsPath:"",oncl
3317ickmf:"",documentation:"",refreshOnContextChange:!1,refreshOnContextUpdate:!1,encloseHTMLWithDiv:!0,_objectChangeHandler:null,contextObj:null,postCreate:function(){console.debug(this.id+".postCreate"),this._setupEvents(),this.refreshOnContextChange||this.executeCode()},executeCode:function(){console.debug(this.id+".executeCode");var t=""!==this.contentsPath;switch(this.contenttype){case"html":if(t)new LinkPane({preload:!0,loadingMessage:"",href:this.contentsPath,onDownloadError:function(){console.log("Error loading html path")}}).placeAt(this.domNode.id).startup();else if(this.encloseHTMLWithDiv){domStyle.set(this.domNode,{height:"auto",width:"100%",outline:0}),domAttr.set(this.domNode,"style",this.style);var e=domConstruct.create("div",{innerHTML:this.contents});domConstruct.place(e,this.domNode,"only")}else html.set(this.domNode,this.contents);break;case"js":case"jsjQuery":if(t){var r=document.createElement("script"),n=+new Date;r.type="text/javascript",r.src=this.contentsPath+"?v="+n.toString(),domConstruct.place(r,this.domNode,"only")}else"jsjQuery"===this.contenttype?this._evalJQueryCode():this.evalJs()}},update:function(t,e){console.debug(this.id+".update"),this.contextObj=t,this.refreshOnContextChange&&(this.executeCode(),this.refreshOnContextUpdate&&(null!==this._objectChangeHandler&&this.unsubscribe(this._objectChangeHandler),t&&(this._objectChangeHandler=this.subscribe({guid:t.getGuid(),callback:lang.hitch(this,function(){this.executeCode()})})))),this._executeCallback(e,"update")},_setupEvents:function(){console.debug(this.id+"._setupEvents"),this.onclickmf&&this.connect(this.domNode,"click",this._executeMicroflow)},_executeMicroflow:function(){if(console.debug(this.id+"._executeMicroflow"),this.onclickmf){var t={actionname:this.onclickmf};null!==this.contextObj&&(t.applyto="selection",t.guids=[this.contextObj.getGuid()]),mx.data.action({params:t,callback:function(t){console.debug(this.id+" (executed microflow successfully).")},error:function(t){console.error(this.id+t)}})}},evalJs:function(){console.debug(this.id+".evalJS");try{eval(this.contents+"\r\n//# sourceURL="+this.id+".js")}catch(t){this._handleError(t)}},_evalJQueryCode:function(){console.debug(this.id+"._evalJQueryCode"),__webpack_require__.e(2).then(function(){var __WEBPACK_AMD_REQUIRE_ARRAY__=[__webpack_require__(153)];lang.hitch(this,function(jQuery){try{(function(snippetCode){var jqueryIdRegex1=/window.\jQuery/g,jqueryIdRegex2=/window.\$/g;snippetCode=snippetCode.replace(jqueryIdRegex1,"jQuery"),snippetCode=snippetCode.replace(jqueryIdRegex2,"$"),snippetCode="var jQuery, $; jQuery = $ = this.jquery;"+snippetCode+"console.debug('your code snippet is evaluated and executed against JQuery version:'+ this.jquery.fn.jquery);",eval(snippetCode)}).call({jquery:jQuery,widget:this},this.contents)}catch(t){this._handleError(t)}}).apply(null,__WEBPACK_AMD_REQUIRE_ARRAY__)}.bind(this)).catch(__webpack_require__.oe)},_handleError:function(t){console.debug(this.id+"._handleError"),domConstruct.place('<div class="alert alert-danger">Error while evaluating javascript input: '+t+"</div>",this.domNode,"only")},_executeCallback:function(t,e){console.debug(this.id+"._executeCallback"+(e?" from "+e:"")),t&&"function"==typeof t&&t()}})}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),void 0===__WEBPACK_AMD_DEFINE_RESULT__||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)},function(t,e){t.exports=__WEBPACK_EXTERNAL_MODULE__146__},function(t,e){t.exports=__WEBPACK_EXTERNAL_MODULE__147__},function(t,e){t.exports=__WEBPACK_EXTERNAL_MODULE__148__},function(t,e){t.exports=__WEBPACK_EXTERNAL_MODULE__149__},function(t,e){t.exports=__WEBPACK_EXTERNAL_MODULE__150__},function(t,e){t.exports=__WEBPACK_EXTERNAL_MODULE__151__},function(t,e){t.exports=__WEBPACK_EXTERNAL_MODULE__152__},,function(t,e,r){r(81),t.exports=r(145)}])}); 3318}, 3319'dijit/layout/LinkPane':function(){ 3320define([ 3321 "./ContentPane", 3322 "../_TemplatedMixin", 3323 "dojo/_base/declare" // declare 3324], function(ContentPane, _TemplatedMixin, declare){ 3325 3326 // module: 3327 // dijit/layout/LinkPane 3328 3329 3330 return declare("dijit.layout.LinkPane", [ContentPane, _TemplatedMixin], { 3331 // summary: 3332 // A ContentPane with an href where (when declared in markup) 3333 // the title is specified as innerHTML rather than as a title attribute. 3334 // description: 3335 // LinkPane is just a ContentPane that is declared in markup similarly 3336 // to an anchor. The anchor's body (the words between `<a>` and `</a>`) 3337 // become the title of the widget (used for TabContainer, AccordionContainer, etc.) 3338 // example: 3339 // | <a href="foo.html">my title</a> 3340 3341 // I'm using a template because the user may specify the input as 3342 // <a href="foo.html">title</a>, in which case we need to get rid of the 3343 // <a> because we don't want a link. 3344 templateString: '<div class="dijitLinkPane" data-dojo-attach-point="containerNode"></div>', 3345 3346 postMixInProperties: function(){
3347 // If user has specified node contents, they become the title 3348 // (the link must be plain text) 3349 if(this.srcNodeRef){ 3350 this.title += this.srcNodeRef.innerHTML; 3351 } 3352 this.inherited(arguments); 3353 }, 3354 3355 _fillContent: function(){ 3356 // Overrides _Templated._fillContent(). 3357 3358 // _Templated._fillContent() relocates srcNodeRef innerHTML to templated container node, 3359 // but in our case the srcNodeRef innerHTML is the title, so shouldn't be 3360 // copied 3361 } 3362 }); 3363}); 3364 3365}, 3366'dijit/layout/ContentPane':function(){ 3367define([ 3368 "dojo/_base/kernel", // kernel.deprecated 3369 "dojo/_base/lang", // lang.mixin lang.delegate lang.hitch lang.isFunction lang.isObject 3370 "../_Widget", 3371 "../_Container", 3372 "./_ContentPaneResizeMixin", 3373 "dojo/string", // string.substitute 3374 "dojo/html", // html._ContentSetter 3375 "dojo/_base/array", // array.forEach 3376 "dojo/_base/declare", // declare 3377 "dojo/_base/Deferred", // Deferred 3378 "dojo/dom", // dom.byId 3379 "dojo/dom-attr", // domAttr.attr 3380 "dojo/dom-construct", // empty() 3381 "dojo/_base/xhr", // xhr.get 3382 "dojo/i18n", // i18n.getLocalization 3383 "dojo/when", 3384 "dojo/i18n!../nls/loading" 3385], function(kernel, lang, _Widget, _Container, _ContentPaneResizeMixin, string, html, array, declare, 3386 Deferred, dom, domAttr, domConstruct, xhr, i18n, when){ 3387 3388 // module: 3389 // dijit/layout/ContentPane 3390 3391 return declare("dijit.layout.ContentPane", [_Widget, _Container, _ContentPaneResizeMixin], { 3392 // summary: 3393 // A widget containing an HTML fragment, specified inline 3394 // or by uri. Fragment may include widgets. 3395 // 3396 // description: 3397 // This widget embeds a document fragment in the page, specified 3398 // either by uri, javascript generated markup or DOM reference. 3399 // Any widgets within this content are instantiated and managed, 3400 // but laid out according to the HTML structure. Unlike IFRAME, 3401 // ContentPane embeds a document fragment as would be found 3402 // inside the BODY tag of a full HTML document. It should not 3403 // contain the HTML, HEAD, or BODY tags. 3404 // For more advanced functionality with scripts and 3405 // stylesheets, see dojox/layout/ContentPane. This widget may be 3406 // used stand alone or as a base class for other widgets. 3407 // ContentPane is useful as a child of other layout containers 3408 // such as BorderContainer or TabContainer, but note that those 3409 // widgets can contain any widget as a child. 3410 // 3411 // example: 3412 // Some quick samples: 3413 // To change the innerHTML: 3414 // | cp.set('content', '<b>new content</b>')` 3415 // Or you can send it a NodeList: 3416 // | cp.set('content', dojo.query('div [class=selected]', userSelection)) 3417 // To do an ajax update: 3418 // | cp.set('href', url) 3419 3420 // href: String 3421 // The href of the content that displays now. 3422 // Set this at construction if you want to load data externally when the 3423 // pane is shown. (Set preload=true to load it immediately.) 3424 // Changing href after creation doesn't have any effect; Use set('href', ...); 3425 href: "", 3426 3427 // content: String|DomNode|NodeList|dijit/_Widget 3428 // The innerHTML of the ContentPane. 3429 // Note that the initialization parameter / argument to set("content", ...) 3430 // can be a String, DomNode, Nodelist, or _Widget. 3431 content: "", 3432 3433 // extractContent: Boolean 3434 // Extract visible content from inside of `<body> .... </body>`. 3435 // I.e., strip `<html>` and `<head>` (and it's contents) from the href 3436 extractContent: false, 3437 3438 // parseOnLoad: Boolean 3439 // Parse content and create the widgets, if any. 3440 parseOnLoad: true, 3441 3442 // parserScope: String 3443 // Flag passed to parser. Root for attribute names to search for. If scopeName is dojo, 3444 // will search for data-dojo-type (or dojoType). For backwards compatibility 3445 // reasons defaults to dojo._scopeName (which is "dojo" except when 3446 // multi-version support is used, when it will be something like dojo16, dojo20, etc.) 3447 parserScope: kernel._scopeName, 3448 3449 // preventCache: Boolean 3450 // Prevent caching of data from href's by appending a timestamp to the href. 3451 preventCache: false, 3452 3453 // preload: Boolean 3454 // Force load of data on initialization even if pane is hidden. 3455 preload: false, 3456 3457 // refreshOnShow: Boolean 3458 // Refresh (re-download) content when pane goes from hidden to shown 3459 refreshOnShow: false, 3460 3461 // loadingMessage: String 3462 // Message that shows while downloading 3463 loadingMessage: "<span class='dijitContentPaneLoading'><span class='dijitInline dijitIconLoading'></span>${loadingState}</span>", 3464 3465 // errorMessage: String 3466 // Message that shows if an error occurs 3467 errorMessage: "<span class='dijitContentPaneError'><span class='dijitInline dijitIconError'></span>${errorState}</span>", 3468 3469 // isLoaded: [readonly] Boolean 3470 // True if the ContentPane has data in it, either specified 3471 // during initialization (via href or inline content), or set 3472 // via set('content', ...) / set('href', ...) 3473 // 3474 // False if it doesn't have any content, or if ContentPane is 3475 // still in the process of downloading href. 3476 isLoaded: false, 3477 3478 baseClass: "dijitContentPane", 3479 3480 /*====== 3481 // ioMethod: dojo/_base/xhr.get|dojo._base/xhr.post 3482 // Function that should grab the content specified via href. 3483 ioMethod: dojo.xhrGet, 3484 ======*/ 3485 3486 // ioArgs: Object 3487 // Parameters to pass to xhrGet() request, for example: 3488 // | <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="href: './bar', ioArgs: {timeout: 500}"> 3489 ioArgs: {}, 3490 3491 // onLoadDeferred: [readonly] dojo.Deferred 3492 // This is the `dojo.Deferred` returned by set('href', ...) and refresh(). 3493 // Calling onLoadDeferred.then() registers your 3494 // callback to be called only once, when the prior set('href', ...) call or 3495 // the initial href parameter to the constructor finishes loading. 3496 // 3497 // This is different than an onLoad() handler which gets called any time any href 3498 // or content is loaded. 3499 onLoadDeferred: null, 3500 3501 // Cancel _WidgetBase's _setTitleAttr because we don't want the title attribute (used to specify
3502 // tab labels) to be copied to ContentPane.domNode... otherwise a tooltip shows up over the 3503 // entire pane. 3504 _setTitleAttr: null, 3505 3506 // Flag to parser that I'll parse my contents, so it shouldn't. 3507 stopParser: true, 3508 3509 // template: [private] Boolean 3510 // Flag from the parser that this ContentPane is inside a template 3511 // so the contents are pre-parsed. 3512 // TODO: this declaration can be commented out in 2.0 3513 template: false, 3514 3515 markupFactory: function(params, node, ctor){ 3516 var self = new ctor(params, node); 3517 3518 // If a parse has started but is waiting for modules to load, then return a Promise for when the parser 3519 // finishes. Don't return a promise though for the case when content hasn't started loading because the 3520 // ContentPane is hidden and it has an href (ex: hidden pane of a TabContainer). In that case we consider 3521 // that initialization has already finished. 3522 return !self.href && self._contentSetter && self._contentSetter.parseDeferred && !self._contentSetter.parseDeferred.isFulfilled() ? 3523 self._contentSetter.parseDeferred.then(function(){ 3524 return self; 3525 }) : self; 3526 }, 3527 3528 create: function(params, srcNodeRef){ 3529 // Convert a srcNodeRef argument into a content parameter, so that the original contents are 3530 // processed in the same way as contents set via set("content", ...), calling the parser etc. 3531 // Avoid modifying original params object since that breaks NodeList instantiation, see #11906. 3532 if((!params || !params.template) && srcNodeRef && !("href" in params) && !("content" in params)){ 3533 srcNodeRef = dom.byId(srcNodeRef); 3534 var df = srcNodeRef.ownerDocument.createDocumentFragment(); 3535 while(srcNodeRef.firstChild){ 3536 df.appendChild(srcNodeRef.firstChild); 3537 } 3538 params = lang.delegate(params, {content: df}); 3539 } 3540 this.inherited(arguments, [params, srcNodeRef]); 3541 }, 3542 3543 postMixInProperties: function(){ 3544 this.inherited(arguments); 3545 var messages = i18n.getLocalization("dijit", "loading", this.lang); 3546 this.loadingMessage = string.substitute(this.loadingMessage, messages); 3547 this.errorMessage = string.substitute(this.errorMessage, messages); 3548 }, 3549 3550 buildRendering: function(){ 3551 this.inherited(arguments); 3552 3553 // Since we have no template we need to set this.containerNode ourselves, to make getChildren() work. 3554 // For subclasses of ContentPane that do have a template, does nothing. 3555 if(!this.containerNode){ 3556 this.containerNode = this.domNode; 3557 } 3558 3559 // remove the title attribute so it doesn't show up when hovering 3560 // over a node (TODO: remove in 2.0, no longer needed after #11490) 3561 this.domNode.removeAttribute("title"); 3562 }, 3563 3564 startup: function(){ 3565 // summary: 3566 // Call startup() on all children including non _Widget ones like dojo/dnd/Source objects 3567 3568 // This starts all the widgets 3569 this.inherited(arguments); 3570 3571 // And this catches stuff like dojo/dnd/Source 3572 if(this._contentSetter){ 3573 array.forEach(this._contentSetter.parseResults, function(obj){ 3574 if(!obj._started && !obj._destroyed && lang.isFunction(obj.startup)){ 3575 obj.startup(); 3576 obj._started = true; 3577 } 3578 }, this); 3579 } 3580 }, 3581 3582 _startChildren: function(){ 3583 // summary: 3584 // Called when content is loaded. Calls startup on each child widget. Similar to ContentPane.startup() 3585 // itself, but avoids marking the ContentPane itself as "restarted" (see #15581). 3586 3587 // This starts all the widgets 3588 array.forEach(this.getChildren(), function(obj){ 3589 if(!obj._started && !obj._destroyed && lang.isFunction(obj.startup)){ 3590 obj.startup(); 3591 obj._started = true; 3592 } 3593 }); 3594 3595 // And this catches stuff like dojo/dnd/Source 3596 if(this._contentSetter){ 3597 array.forEach(this._contentSetter.parseResults, function(obj){ 3598 if(!obj._started && !obj._destroyed && lang.isFunction(obj.startup)){ 3599 obj.startup(); 3600 obj._started = true; 3601 } 3602 }, this); 3603 } 3604 }, 3605 3606 setHref: function(/*String|Uri*/ href){ 3607 // summary: 3608 // Deprecated. Use set('href', ...) instead. 3609 kernel.deprecated("dijit.layout.ContentPane.setHref() is deprecated. Use set('href', ...) instead.", "", "2.0"); 3610 return this.set("href", href); 3611 }, 3612 _setHrefAttr: function(/*String|Uri*/ href){ 3613 // summary: 3614 // Hook so set("href", ...) works. 3615 // description: 3616 // Reset the (external defined) content of this pane and replace with new url 3617 // Note: It delays the download until widget is shown if preload is false. 3618 // href: 3619 // url to the page you want to get, must be within the same domain as your mainpage 3620 3621 // Cancel any in-flight requests (a set('href', ...) will cancel any in-flight set('href', ...)) 3622 this.cancel(); 3623 3624 this.onLoadDeferred = new Deferred(lang.hitch(this, "cancel")); 3625 this.onLoadDeferred.then(lang.hitch(this, "onLoad")); 3626 3627 this._set("href", href); 3628 3629 // _setHrefAttr() is called during creation and by the user, after creation. 3630 // Assuming preload == false, only in the second case do we actually load the URL; 3631 // otherwise it's done in startup(), and only if this widget is shown.
3632 if(this.preload || (this._created && this._isShown())){ 3633 this._load(); 3634 }else{ 3635 // Set flag to indicate that href needs to be loaded the next time the 3636 // ContentPane is made visible 3637 this._hrefChanged = true; 3638 } 3639 3640 return this.onLoadDeferred; // Deferred 3641 }, 3642 3643 setContent: function(/*String|DomNode|Nodelist*/data){ 3644 // summary: 3645 // Deprecated. Use set('content', ...) instead. 3646 kernel.deprecated("dijit.layout.ContentPane.setContent() is deprecated. Use set('content', ...) instead.", "", "2.0"); 3647 this.set("content", data); 3648 }, 3649 _setContentAttr: function(/*String|DomNode|Nodelist*/data){ 3650 // summary: 3651 // Hook to make set("content", ...) work. 3652 // Replaces old content with data content, include style classes from old content 3653 // data: 3654 // the new Content may be String, DomNode or NodeList 3655 // 3656 // if data is a NodeList (or an array of nodes) nodes are copied 3657 // so you can import nodes from another document implicitly 3658 3659 // clear href so we can't run refresh and clear content 3660 // refresh should only work if we downloaded the content 3661 this._set("href", ""); 3662 3663 // Cancel any in-flight requests (a set('content', ...) will cancel any in-flight set('href', ...)) 3664 this.cancel(); 3665 3666 // Even though user is just setting content directly, still need to define an onLoadDeferred 3667 // because the _onLoadHandler() handler is still getting called from setContent() 3668 this.onLoadDeferred = new Deferred(lang.hitch(this, "cancel")); 3669 if(this._created){ 3670 // For back-compat reasons, call onLoad() for set('content', ...) 3671 // calls but not for content specified in srcNodeRef (ie: <div data-dojo-type=ContentPane>...</div>) 3672 // or as initialization parameter (ie: new ContentPane({content: ...}) 3673 this.onLoadDeferred.then(lang.hitch(this, "onLoad")); 3674 } 3675 3676 this._setContent(data || ""); 3677 3678 this._isDownloaded = false; // mark that content is from a set('content') not a set('href') 3679 3680 return this.onLoadDeferred; // Deferred 3681 }, 3682 _getContentAttr: function(){ 3683 // summary: 3684 // Hook to make get("content") work 3685 return this.containerNode.innerHTML; 3686 }, 3687 3688 cancel: function(){ 3689 // summary: 3690 // Cancels an in-flight download of content 3691 if(this._xhrDfd && (this._xhrDfd.fired == -1)){ 3692 this._xhrDfd.cancel(); 3693 } 3694 delete this._xhrDfd; // garbage collect 3695 3696 this.onLoadDeferred = null; 3697 }, 3698 3699 destroy: function(){ 3700 this.cancel(); 3701 this.inherited(arguments); 3702 }, 3703 3704 destroyRecursive: function(/*Boolean*/ preserveDom){ 3705 // summary: 3706 // Destroy the ContentPane and its contents 3707 3708 // if we have multiple controllers destroying us, bail after the first 3709 if(this._beingDestroyed){ 3710 return; 3711 } 3712 this.inherited(arguments); 3713 }, 3714 3715 _onShow: function(){ 3716 // summary: 3717 // Called when the ContentPane is made visible 3718 // description: 3719 // For a plain ContentPane, this is called on initialization, from startup(). 3720 // If the ContentPane is a hidden pane of a TabContainer etc., then it's 3721 // called whenever the pane is made visible. 3722 // 3723 // Does necessary processing, including href download and layout/resize of 3724 // child widget(s) 3725 3726 this.inherited(arguments); 3727 3728 if(this.href){ 3729 if(!this._xhrDfd && // if there's an href that isn't already being loaded 3730 (!this.isLoaded || this._hrefChanged || this.refreshOnShow) 3731 ){ 3732 return this.refresh(); // If child has an href, promise that fires when the load is complete 3733 } 3734 } 3735 }, 3736 3737 refresh: function(){ 3738 // summary: 3739 // [Re]download contents of href and display 3740 // description: 3741 // 1. cancels any currently in-flight requests 3742 // 2. posts "loading..." message 3743 // 3. sends XHR to download new data 3744 3745 // Cancel possible prior in-flight request 3746 this.cancel(); 3747 3748 this.onLoadDeferred = new Deferred(lang.hitch(this, "cancel")); 3749 this.onLoadDeferred.then(lang.hitch(this, "onLoad")); 3750 this._load(); 3751 return this.onLoadDeferred; // If child has an href, promise that fires when refresh is complete 3752 }, 3753 3754 _load: function(){ 3755 // summary: 3756 // Load/reload the href specified in this.href 3757 3758 // display loading message 3759 this._setContent(this.onDownloadStart(), true); 3760 3761 var self = this; 3762 var getArgs = { 3763 preventCache: (this.preventCache || this.refreshOnShow), 3764 url: this.href, 3765 handleAs: "text" 3766 }; 3767 if(lang.isObject(this.ioArgs)){ 3768 lang.mixin(getArgs, this.ioArgs); 3769 } 3770 3771 var hand = (this._xhrDfd = (this.ioMethod || xhr.get)(getArgs)), 3772 returnedHtml; 3773 3774 hand.then( 3775 function(html){ 3776 returnedHtml = html; 3777 try{ 3778 self._isDownloaded = true; 3779 return self._setContent(html, false); 3780 }catch(err){ 3781 self._onError('Content', err); // onContentError 3782 } 3783 }, 3784 function(err){ 3785 if(!hand.canceled){ 3786 // show error message in the pane 3787 self._onError('Download', err); // onDownloadError 3788 } 3789 delete self._xhrDfd; 3790 return err; 3791 } 3792 ).then(function(){ 3793 self.onDownloadEnd(); 3794 delete self._xhrDfd; 3795 return returnedHtml; 3796 }); 3797 3798 // Remove flag saying that a load is needed 3799 delete this._hrefChanged; 3800 }, 3801 3802 _onLoadHandler: function(data){ 3803 // summary: 3804 // This is called whenever new content is being loaded 3805 this._set("isLoaded", true); 3806 try{ 3807 this.onLoadDeferred.resolve(data); 3808 }catch(e){ 3809 console.error('Error ' + (this.widgetId || this.id) + ' running custom onLoad code: ' + e.message); 3810 } 3811 }, 3812 3813 _onUnloadHandler: function(){ 3814 // summary: 3815 // This is called whenever the content is being unloaded 3816 this._set("isLoaded", false); 3817 try{ 3818 this.onUnload(); 3819 }catch(e){ 3820 console.error('Error ' + this.widgetId + ' running custom onUnload code: ' + e.message); 3821 } 3822 }, 3823 3824 destroyDescendants: function(/*Boolean*/ preserveDom){ 3825 // summary: 3826 // Destroy all the widgets inside the ContentPane and empty containerNode 3827
3828 // Make sure we call onUnload (but only when the ContentPane has real content) 3829 if(this.isLoaded){ 3830 this._onUnloadHandler(); 3831 } 3832 3833 // Even if this.isLoaded == false there might still be a "Loading..." message 3834 // to erase, so continue... 3835 3836 // For historical reasons we need to delete all widgets under this.containerNode, 3837 // even ones that the user has created manually. 3838 var setter = this._contentSetter; 3839 array.forEach(this.getChildren(), function(widget){ 3840 if(widget.destroyRecursive){ 3841 // All widgets will hit this branch 3842 widget.destroyRecursive(preserveDom); 3843 }else if(widget.destroy){ 3844 // Things like dojo/dnd/Source have destroy(), not destroyRecursive() 3845 widget.destroy(preserveDom); 3846 } 3847 widget._destroyed = true; 3848 }); 3849 if(setter){ 3850 // Most of the widgets in setter.parseResults have already been destroyed, but 3851 // things like Menu that have been moved to <body> haven't yet 3852 array.forEach(setter.parseResults, function(widget){ 3853 if(!widget._destroyed){ 3854 if(widget.destroyRecursive){ 3855 // All widgets will hit this branch 3856 widget.destroyRecursive(preserveDom); 3857 }else if(widget.destroy){ 3858 // Things like dojo/dnd/Source have destroy(), not destroyRecursive() 3859 widget.destroy(preserveDom); 3860 } 3861 widget._destroyed = true; 3862 } 3863 }); 3864 delete setter.parseResults; 3865 } 3866 3867 // And then clear away all the DOM nodes 3868 if(!preserveDom){ 3869 domConstruct.empty(this.containerNode); 3870 } 3871 3872 // Delete any state information we have about current contents 3873 delete this._singleChild; 3874 }, 3875 3876 _setContent: function(/*String|DocumentFragment*/ cont, /*Boolean*/ isFakeContent){ 3877 // summary: 3878 // Insert the content into the container node 3879 // returns: 3880 // Returns a Deferred promise that is resolved when the content is parsed. 3881 3882 cont = this.preprocessContent(cont); 3883 // first get rid of child widgets 3884 this.destroyDescendants(); 3885 3886 // html.set will take care of the rest of the details 3887 // we provide an override for the error handling to ensure the widget gets the errors 3888 // configure the setter instance with only the relevant widget instance properties 3889 // NOTE: unless we hook into attr, or provide property setters for each property, 3890 // we need to re-configure the ContentSetter with each use 3891 var setter = this._contentSetter; 3892 if(!(setter && setter instanceof html._ContentSetter)){ 3893 setter = this._contentSetter = new html._ContentSetter({ 3894 node: this.containerNode, 3895 _onError: lang.hitch(this, this._onError), 3896 onContentError: lang.hitch(this, function(e){ 3897 // fires if a domfault occurs when we are appending this.errorMessage 3898 // like for instance if domNode is a UL and we try append a DIV 3899 var errMess = this.onContentError(e); 3900 try{ 3901 this.containerNode.innerHTML = errMess; 3902 }catch(e){ 3903 console.error('Fatal ' + this.id + ' could not change content due to ' + e.message, e); 3904 } 3905 })/*, 3906 _onError */ 3907 }); 3908 } 3909 3910 var setterParams = lang.mixin({ 3911 cleanContent: this.cleanContent, 3912 extractContent: this.extractContent, 3913 parseContent: !cont.domNode && this.parseOnLoad, 3914 parserScope: this.parserScope, 3915 startup: false, 3916 dir: this.dir, 3917 lang: this.lang, 3918 textDir: this.textDir 3919 }, this._contentSetterParams || {}); 3920 3921 var p = setter.set((lang.isObject(cont) && cont.domNode) ? cont.domNode : cont, setterParams); 3922 3923 // dojox/layout/html/_base::_ContentSetter.set() returns a Promise that indicates when everything is completed. 3924 // dojo/html::_ContentSetter.set() currently returns the DOMNode, but that will be changed for 2.0. 3925 // So, if set() returns a promise then use it, otherwise fallback to waiting on setter.parseDeferred 3926 var self = this; 3927 return when(p && p.then ? p : setter.parseDeferred, function(){ 3928 // setter params must be pulled afresh from the ContentPane each time 3929 delete self._contentSetterParams; 3930 3931 if(!isFakeContent){ 3932 if(self._started){ 3933 // Startup each top level child widget (and they will start their children, recursively) 3934 self._startChildren(); 3935 3936 // Call resize() on each of my child layout widgets, 3937 // or resize() on my single child layout widget... 3938 // either now (if I'm currently visible) or when I become visible 3939 self._scheduleLayout(); 3940 } 3941 self._onLoadHandler(cont); 3942 } 3943 }); 3944 }, 3945 3946 preprocessContent: function(/*String|DocumentFragment*/ content){ 3947 // summary: 3948 // Hook, called after content has loaded, before being processed. 3949 // description: 3950 // A subclass should preprocess the content and return the preprocessed content. 3951 // See https://bugs.dojotoolkit.org/ticket/9622 3952 // returns: 3953 // Returns preprocessed content, either a String or DocumentFragment 3954 return content; 3955 }, 3956 3957 _onError: function(type, err, consoleText){ 3958 this.onLoadDeferred.reject(err); 3959 3960 // shows user the string that is returned by on[type]Error 3961 // override on[type]Error and return your own string to customize 3962 var errText = this['on' + type + 'Error'].call(this, err); 3963 if(consoleText){ 3964 console.error(consoleText, err); 3965 }
3965else if(errText){// a empty string won't change current content 3966 this._setContent(errText, true); 3967 } 3968 }, 3969 3970 // EVENT's, should be overide-able 3971 onLoad: function(/*===== data =====*/){ 3972 // summary: 3973 // Event hook, is called after everything is loaded and widgetified 3974 // tags: 3975 // callback 3976 }, 3977 3978 onUnload: function(){ 3979 // summary: 3980 // Event hook, is called before old content is cleared 3981 // tags: 3982 // callback 3983 }, 3984 3985 onDownloadStart: function(){ 3986 // summary: 3987 // Called before download starts. 3988 // description: 3989 // The string returned by this function will be the html 3990 // that tells the user we are loading something. 3991 // Override with your own function if you want to change text. 3992 // tags: 3993 // extension 3994 return this.loadingMessage; 3995 }, 3996 3997 onContentError: function(/*Error*/ /*===== error =====*/){ 3998 // summary: 3999 // Called on DOM faults, require faults etc. in content. 4000 // 4001 // In order to display an error message in the pane, return 4002 // the error message from this method, as an HTML string. 4003 // 4004 // By default (if this method is not overriden), it returns 4005 // nothing, so the error message is just printed to the console. 4006 // tags: 4007 // extension 4008 }, 4009 4010 onDownloadError: function(/*Error*/ /*===== error =====*/){ 4011 // summary: 4012 // Called when download error occurs. 4013 // 4014 // In order to display an error message in the pane, return 4015 // the error message from this method, as an HTML string. 4016 // 4017 // Default behavior (if this method is not overriden) is to display 4018 // the error message inside the pane. 4019 // tags: 4020 // extension 4021 return this.errorMessage; 4022 }, 4023 4024 onDownloadEnd: function(){ 4025 // summary: 4026 // Called when download is finished. 4027 // tags: 4028 // callback 4029 } 4030 }); 4031}); 4032 4033}, 4034'dijit/layout/_ContentPaneResizeMixin':function(){ 4035define([ 4036 "dojo/_base/array", // array.filter array.forEach 4037 "dojo/_base/declare", // declare 4038 "dojo/dom-class", // domClass.contains domClass.toggle 4039 "dojo/dom-geometry", // domGeometry.contentBox domGeometry.marginBox 4040 "dojo/dom-style", 4041 "dojo/_base/lang", // lang.mixin 4042 "dojo/query", // query 4043 "../registry", // registry.byId 4044 "../Viewport", 4045 "./utils" // marginBox2contextBox 4046], function(array, declare, domClass, domGeometry, domStyle, lang, query, 4047 registry, Viewport, layoutUtils){ 4048 4049 // module: 4050 // dijit/layout/_ContentPaneResizeMixin 4051 4052 return declare("dijit.layout._ContentPaneResizeMixin", null, { 4053 // summary: 4054 // Resize() functionality of ContentPane. If there's a single layout widget 4055 // child then it will call resize() with the same dimensions as the ContentPane. 4056 // Otherwise just calls resize on each child. 4057 // 4058 // Also implements basic startup() functionality, where starting the parent 4059 // will start the children 4060 4061 // doLayout: Boolean 4062 // - false - don't adjust size of children 4063 // - true - if there is a single visible child widget, set it's size to however big the ContentPane is 4064 doLayout: true, 4065 4066 // isLayoutContainer: [protected] Boolean 4067 // Indicates that this widget will call resize() on it's child widgets 4068 // when they become visible. 4069 isLayoutContainer: true, 4070 4071 startup: function(){ 4072 // summary: 4073 // See `dijit/layout/_LayoutWidget.startup()` for description. 4074 // Although ContentPane doesn't extend _LayoutWidget, it does implement 4075 // the same API. 4076 4077 if(this._started){ 4078 return; 4079 } 4080 4081 var parent = this.getParent(); 4082 this._childOfLayoutWidget = parent && parent.isLayoutContainer; 4083 4084 // I need to call resize() on my child/children (when I become visible), unless 4085 // I'm the child of a layout widget in which case my parent will call resize() on me and I'll do it then. 4086 this._needLayout = !this._childOfLayoutWidget; 4087 4088 this.inherited(arguments); 4089 4090 if(this._isShown()){ 4091 this._onShow(); 4092 } 4093 4094 if(!this._childOfLayoutWidget){ 4095 // Since my parent isn't a layout container, and my style *may be* width=height=100% 4096 // or something similar (either set directly or via a CSS class), 4097 // monitor when viewport size changes so that I can re-layout. 4098 // This is more for subclasses of ContentPane than ContentPane itself, although it 4099 // could be useful for a ContentPane if it has a single child widget inheriting ContentPane's size. 4100 this.own(Viewport.on("resize", lang.hitch(this, "resize"))); 4101 } 4102 }, 4103 4104 _checkIfSingleChild: function(){ 4105 // summary: 4106 // Test if we have exactly one visible widget as a child, 4107 // and if so assume that we are a container for that widget, 4108 // and should propagate startup() and resize() calls to it. 4109 // Skips over things like data stores since they aren't visible. 4110 4111 if(!this.doLayout){ return; } 4112 4113 var candidateWidgets = [], 4114 otherVisibleNodes = false;
4115 4116 query("> *", this.containerNode).some(function(node){ 4117 var widget = registry.byNode(node); 4118 if(widget && widget.resize){ 4119 candidateWidgets.push(widget); 4120 }else if(!/script|link|style/i.test(node.nodeName) && node.offsetHeight){ 4121 otherVisibleNodes = true; 4122 } 4123 }); 4124 4125 this._singleChild = candidateWidgets.length == 1 && !otherVisibleNodes ? 4126 candidateWidgets[0] : null; 4127 4128 // So we can set overflow: hidden to avoid a safari bug w/scrollbars showing up (#9449) 4129 domClass.toggle(this.containerNode, this.baseClass + "SingleChild", !!this._singleChild); 4130 }, 4131 4132 resize: function(changeSize, resultSize){ 4133 // summary: 4134 // See `dijit/layout/_LayoutWidget.resize()` for description. 4135 // Although ContentPane doesn't extend _LayoutWidget, it does implement 4136 // the same API. 4137 4138 this._resizeCalled = true; 4139 4140 this._scheduleLayout(changeSize, resultSize); 4141 }, 4142 4143 _scheduleLayout: function(changeSize, resultSize){ 4144 // summary: 4145 // Resize myself, and call resize() on each of my child layout widgets, either now 4146 // (if I'm currently visible) or when I become visible 4147 if(this._isShown()){ 4148 this._layout(changeSize, resultSize); 4149 }else{ 4150 this._needLayout = true; 4151 this._changeSize = changeSize; 4152 this._resultSize = resultSize; 4153 } 4154 }, 4155 4156 _layout: function(changeSize, resultSize){ 4157 // summary: 4158 // Resize myself according to optional changeSize/resultSize parameters, like a layout widget. 4159 // Also, since I am an isLayoutContainer widget, each of my children expects me to 4160 // call resize() or layout() on it. 4161 // 4162 // Should be called on initialization and also whenever we get new content 4163 // (from an href, or from set('content', ...))... but deferred until 4164 // the ContentPane is visible 4165 4166 delete this._needLayout; 4167 4168 // For the TabContainer --> BorderContainer --> ContentPane case, _onShow() is 4169 // never called directly, so resize() is our trigger to do the initial href download (see [20099]). 4170 // However, don't load href for closed TitlePanes. 4171 if(!this._wasShown && this.open !== false){ 4172 this._onShow(); 4173 } 4174 4175 // Set margin box size, unless it wasn't specified, in which case use current size. 4176 if(changeSize){ 4177 domGeometry.setMarginBox(this.domNode, changeSize); 4178 } 4179 4180 // Compute content box size of containerNode in case we [later] need to size our single child. 4181 var cn = this.containerNode; 4182 if(cn === this.domNode){ 4183 // If changeSize or resultSize was passed to this method and this.containerNode == 4184 // this.domNode then we can compute the content-box size without querying the node, 4185 // which is more reliable (similar to LayoutWidget.resize) (see for example #9449). 4186 var mb = resultSize || {}; 4187 lang.mixin(mb, changeSize || {}); // changeSize overrides resultSize 4188 if(!("h" in mb) || !("w" in mb)){ 4189 mb = lang.mixin(domGeometry.getMarginBox(cn), mb); // just use domGeometry.setMarginBox() to fill in missing values 4190 } 4191 this._contentBox = layoutUtils.marginBox2contentBox(cn, mb); 4192 }else{ 4193 this._contentBox = domGeometry.getContentBox(cn); 4194 } 4195 4196 this._layoutChildren(); 4197 }, 4198 4199 _layoutChildren: function(){ 4200 // Call _checkIfSingleChild() again in case app has manually mucked w/the content 4201 // of the ContentPane (rather than changing it through the set("content", ...) API. 4202 this._checkIfSingleChild(); 4203 4204 if(this._singleChild && this._singleChild.resize){ 4205 var cb = this._contentBox || domGeometry.getContentBox(this.containerNode); 4206 4207 // note: if widget has padding this._contentBox will have l and t set, 4208 // but don't pass them to resize() or it will doubly-offset the child 4209 this._singleChild.resize({w: cb.w, h: cb.h}); 4210 }else{ 4211 // All my child widgets are independently sized (rather than matching my size), 4212 // but I still need to call resize() on each child to make it layout. 4213 var children = this.getChildren(), 4214 widget, 4215 i = 0; 4216 while(widget = children[i++]){ 4217 if(widget.resize){ 4218 widget.resize(); 4219 } 4220 } 4221 } 4222 }, 4223 4224 _isShown: function(){ 4225 // summary: 4226 // Returns true if the content is currently shown. 4227 // description: 4228 // If I am a child of a layout widget then it actually returns true if I've ever been visible, 4229 // not whether I'm currently visible, since that's much faster than tracing up the DOM/widget 4230 // tree every call, and at least solves the performance problem on page load by deferring loading 4231 // hidden ContentPanes until they are first shown 4232 4233 if(this._childOfLayoutWidget){ 4234 // If we are TitlePane, etc - we return that only *IF* we've been resized 4235 if(this._resizeCalled && "open" in this){ 4236 return this.open; 4237 } 4238 return this._resizeCalled; 4239 }else if("open" in this){ 4240 return this.open; // for TitlePane, etc. 4241 }else{ 4242 var node = this.domNode, parent = this.domNode.parentNode; 4243 return (node.style.display != 'none') && (node.style.visibility != 'hidden') && !domClass.contains(node, "dijitHidden") && 4244 parent && parent.style && (parent.style.display != 'none'); 4245 } 4246 }, 4247 4248 _onShow: function(){ 4249 // summary:
4250 // Called when the ContentPane is made visible 4251 // description: 4252 // For a plain ContentPane, this is called on initialization, from startup(). 4253 // If the ContentPane is a hidden pane of a TabContainer etc., then it's 4254 // called whenever the pane is made visible. 4255 // 4256 // Does layout/resize of child widget(s) 4257 4258 // Need to keep track of whether ContentPane has been shown (which is different than 4259 // whether or not it's currently visible). 4260 this._wasShown = true; 4261 4262 if(this._needLayout){ 4263 // If a layout has been scheduled for when we become visible, do it now 4264 this._layout(this._changeSize, this._resultSize); 4265 } 4266 4267 this.inherited(arguments); 4268 } 4269 }); 4270}); 4271 4272}, 4273'dijit/layout/utils':function(){ 4274define([ 4275 "dojo/_base/array", // array.filter array.forEach 4276 "dojo/dom-class", // domClass.add domClass.remove 4277 "dojo/dom-geometry", // domGeometry.marginBox 4278 "dojo/dom-style", // domStyle.getComputedStyle 4279 "dojo/_base/lang" // lang.mixin, lang.setObject 4280], function(array, domClass, domGeometry, domStyle, lang){ 4281 4282 // module: 4283 // dijit/layout/utils 4284 4285 function capitalize(word){ 4286 return word.substring(0,1).toUpperCase() + word.substring(1); 4287 } 4288 4289 function size(widget, dim){ 4290 // size the child 4291 var newSize = widget.resize ? widget.resize(dim) : domGeometry.setMarginBox(widget.domNode, dim); 4292 4293 // record child's size 4294 if(newSize){ 4295 // if the child returned it's new size then use that 4296 lang.mixin(widget, newSize); 4297 }else{ 4298 // otherwise, call getMarginBox(), but favor our own numbers when we have them. 4299 // the browser lies sometimes 4300 lang.mixin(widget, domGeometry.getMarginBox(widget.domNode)); 4301 lang.mixin(widget, dim); 4302 } 4303 } 4304 4305 var utils = { 4306 // summary: 4307 // Utility functions for doing layout 4308 4309 marginBox2contentBox: function(/*DomNode*/ node, /*Object*/ mb){ 4310 // summary: 4311 // Given the margin-box size of a node, return its content box size. 4312 // Functions like domGeometry.contentBox() but is more reliable since it doesn't have 4313 // to wait for the browser to compute sizes. 4314 var cs = domStyle.getComputedStyle(node); 4315 var me = domGeometry.getMarginExtents(node, cs); 4316 var pb = domGeometry.getPadBorderExtents(node, cs); 4317 return { 4318 l: domStyle.toPixelValue(node, cs.paddingLeft), 4319 t: domStyle.toPixelValue(node, cs.paddingTop), 4320 w: mb.w - (me.w + pb.w), 4321 h: mb.h - (me.h + pb.h) 4322 }; 4323 }, 4324 4325 4326 layoutChildren: function(/*DomNode*/ container, /*Object*/ dim, /*Widget[]*/ children, 4327 /*String?*/ changedRegionId, /*Number?*/ changedRegionSize){ 4328 // summary: 4329 // Layout a bunch of child dom nodes within a parent dom node 4330 // container: 4331 // parent node 4332 // dim: 4333 // {l, t, w, h} object specifying dimensions of container into which to place children 4334 // children: 4335 // An array of Widgets or at least objects containing: 4336 // 4337 // - domNode: pointer to DOM node to position 4338 // - region or layoutAlign: position to place DOM node 4339 // - resize(): (optional) method to set size of node 4340 // - id: (optional) Id of widgets, referenced from resize object, below. 4341 // 4342 // The widgets in this array should be ordered according to how they should be laid out 4343 // (each element will be processed in order, and take up as much remaining space as needed), 4344 // with the center widget last. 4345 // changedRegionId: 4346 // If specified, the slider for the region with the specified id has been dragged, and thus 4347 // the region's height or width should be adjusted according to changedRegionSize 4348 // changedRegionSize: 4349 // See changedRegionId. 4350 4351 // copy dim because we are going to modify it 4352 dim = lang.mixin({}, dim); 4353 4354 domClass.add(container, "dijitLayoutContainer"); 4355 4356 // Move "client" elements to the end of the array for layout. a11y dictates that the author 4357 // needs to be able to put them in the document in tab-order, but this algorithm requires that 4358 // client be last. TODO: remove for 2.0, all dijit client code already sends children as last item. 4359 children = array.filter(children, function(item){ return item.region != "center" && item.layoutAlign != "client"; }) 4360 .concat(array.filter(children, function(item){ return item.region == "center" || item.layoutAlign == "client"; })); 4361 4362 // set positions/sizes 4363 array.forEach(children, function(child){ 4364 var elm = child.domNode, 4365 pos = (child.region || child.layoutAlign); 4366 if(!pos){ 4367 throw new Error("No region setting for " + child.id) 4368 } 4369 4370 // set elem to upper left corner of unused space; may move it later 4371 var elmStyle = elm.style; 4372 elmStyle.left = dim.l+"px"; 4373 elmStyle.top = dim.t+"px"; 4374 elmStyle.position = "absolute"; 4375 4376 domClass.add(elm, "dijitAlign" + capitalize(pos)); 4377 4378 // Size adjustments to make to this child widget 4379 var sizeSetting = {}; 4380 4381 // Check for optional size adjustment due to splitter drag (height adjustment for top/bottom align
4382 // panes and width adjustment for left/right align panes. 4383 if(changedRegionId && changedRegionId == child.id){ 4384 sizeSetting[child.region == "top" || child.region == "bottom" ? "h" : "w"] = changedRegionSize; 4385 } 4386 4387 if(pos == "leading"){ 4388 pos = child.isLeftToRight() ? "left" : "right"; 4389 } 4390 if(pos == "trailing"){ 4391 pos = child.isLeftToRight() ? "right" : "left"; 4392 } 4393 4394 // set size && adjust record of remaining space. 4395 // note that setting the width of a <div> may affect its height. 4396 if(pos == "top" || pos == "bottom"){ 4397 sizeSetting.w = dim.w; 4398 size(child, sizeSetting); 4399 dim.h -= child.h; 4400 if(pos == "top"){ 4401 dim.t += child.h; 4402 }else{ 4403 elmStyle.top = dim.t + dim.h + "px"; 4404 } 4405 }else if(pos == "left" || pos == "right"){ 4406 sizeSetting.h = dim.h; 4407 size(child, sizeSetting); 4408 dim.w -= child.w; 4409 if(pos == "left"){ 4410 dim.l += child.w; 4411 }else{ 4412 elmStyle.left = dim.l + dim.w + "px"; 4413 } 4414 }else if(pos == "client" || pos == "center"){ 4415 size(child, dim); 4416 } 4417 }); 4418 } 4419 }; 4420 4421 lang.setObject("dijit.layout.utils", utils); // remove for 2.0 4422 4423 return utils; 4424}); 4425 4426}, 4427'dojo/i18n':function(){ 4428define(["./_base/kernel", "require", "./has", "./_base/array", "./_base/config", "./_base/lang", "./_base/xhr", "./json", "module"], 4429 function(dojo, require, has, array, config, lang, xhr, json, module){ 4430 4431 // module: 4432 // dojo/i18n 4433 4434 has.add("dojo-preload-i18n-Api", 4435 // if true, define the preload localizations machinery 4436 1 4437 ); 4438 4439 1 || has.add("dojo-v1x-i18n-Api", 4440 // if true, define the v1.x i18n functions 4441 1 4442 ); 4443 4444 var 4445 thisModule = dojo.i18n = 4446 { 4447 // summary: 4448 // This module implements the dojo/i18n! plugin and the v1.6- i18n API 4449 // description: 4450 // We choose to include our own plugin to leverage functionality already contained in dojo 4451 // and thereby reduce the size of the plugin compared to various loader implementations. Also, this 4452 // allows foreign AMD loaders to be used without their plugins. 4453 }, 4454 4455 nlsRe = 4456 // regexp for reconstructing the master bundle name from parts of the regexp match 4457 // nlsRe.exec("foo/bar/baz/nls/en-ca/foo") gives: 4458 // ["foo/bar/baz/nls/en-ca/foo", "foo/bar/baz/nls/", "/", "/", "en-ca", "foo"] 4459 // nlsRe.exec("foo/bar/baz/nls/foo") gives: 4460 // ["foo/bar/baz/nls/foo", "foo/bar/baz/nls/", "/", "/", "foo", ""] 4461 // so, if match[5] is blank, it means this is the top bundle definition. 4462 // courtesy of http://requirejs.org 4463 /(^.*(^|\/)nls)(\/|$)([^\/]*)\/?([^\/]*)/, 4464 4465 getAvailableLocales = function( 4466 root, 4467 locale, 4468 bundlePath, 4469 bundleName 4470 ){ 4471 // summary: 4472 // return a vector of module ids containing all available locales with respect to the target locale 4473 // For example, assuming: 4474 // 4475 // - the root bundle indicates specific bundles for "fr" and "fr-ca", 4476 // - bundlePath is "myPackage/nls" 4477 // - bundleName is "myBundle" 4478 // 4479 // Then a locale argument of "fr-ca" would return 4480 // 4481 // ["myPackage/nls/myBundle", "myPackage/nls/fr/myBundle", "myPackage/nls/fr-ca/myBundle"] 4482 // 4483 // Notice that bundles are returned least-specific to most-specific, starting with the root. 4484 // 4485 // If root===false indicates we're working with a pre-AMD i18n bundle that doesn't tell about the available locales; 4486 // therefore, assume everything is available and get 404 errors that indicate a particular localization is not available 4487 4488 for(var result = [bundlePath + bundleName], localeParts = locale.split("-"), current = "", i = 0; i<localeParts.length; i++){ 4489 current += (current ? "-" : "") + localeParts[i]; 4490 if(!root || root[current]){ 4491 result.push(bundlePath + current + "/" + bundleName); 4492 result.specificity = current; 4493 } 4494 } 4495 return result; 4496 }, 4497 4498 cache = {}, 4499 4500 getBundleName = function(moduleName, bundleName, locale){ 4501 locale = locale ? locale.toLowerCase() : dojo.locale; 4502 moduleName = moduleName.replace(/\./g, "/"); 4503 bundleName = bundleName.replace(/\./g, "/"); 4504 return (/root/i.test(locale)) ? 4505 (moduleName + "/nls/" + bundleName) : 4506 (moduleName + "/nls/" + locale + "/" + bundleName); 4507 }, 4508 4509 getL10nName = dojo.getL10nName = function(moduleName, bundleName, locale){ 4510 return moduleName = module.id + "!" + getBundleName(moduleName, bundleName, locale); 4511 }, 4512 4513 doLoad = function(require, bundlePathAndName, bundlePath, bundleName, locale, load){ 4514 // summary: 4515 // get the root bundle which instructs which other bundles are required to construct the localized bundle 4516 require([bundlePathAndName], function(root){ 4517 var current = lang.clone(root.root || root.ROOT),// 1.6 built bundle defined ROOT 4518 availableLocales = getAvailableLocales(!root._v1x && root, locale, bundlePath, bundleName); 4519 require(availableLocales, function(){ 4520 for (var i = 1; i<availableLocales.length; i++){ 4521 current = lang.mixin(lang.clone(current), arguments[i]); 4522 }
4523 // target may not have been resolve (e.g., maybe only "fr" exists when "fr-ca" was requested) 4524 var target = bundlePathAndName + "/" + locale; 4525 cache[target] = current; 4526 current.$locale = availableLocales.specificity; 4527 load(); 4528 }); 4529 }); 4530 }, 4531 4532 normalize = function(id, toAbsMid){ 4533 // summary: 4534 // id may be relative. 4535 // preload has form `*preload*<path>/nls/<module>*<flattened locales>` and 4536 // therefore never looks like a relative 4537 return /^\./.test(id) ? toAbsMid(id) : id; 4538 }, 4539 4540 getLocalesToLoad = function(targetLocale){ 4541 var list = config.extraLocale || []; 4542 list = lang.isArray(list) ? list : [list]; 4543 list.push(targetLocale); 4544 return list; 4545 }, 4546 4547 load = function(id, require, load){ 4548 // summary: 4549 // id is in one of the following formats 4550 // 4551 // 1. <path>/nls/<bundle> 4552 // => load the bundle, localized to config.locale; load all bundles localized to 4553 // config.extraLocale (if any); return the loaded bundle localized to config.locale. 4554 // 4555 // 2. <path>/nls/<locale>/<bundle> 4556 // => load then return the bundle localized to <locale> 4557 // 4558 // 3. *preload*<path>/nls/<module>*<JSON array of available locales> 4559 // => for config.locale and all config.extraLocale, load all bundles found 4560 // in the best-matching bundle rollup. A value of 1 is returned, which 4561 // is meaningless other than to say the plugin is executing the requested 4562 // preloads 4563 // 4564 // In cases 1 and 2, <path> is always normalized to an absolute module id upon entry; see 4565 // normalize. In case 3, it <path> is assumed to be absolute; this is arranged by the builder. 4566 // 4567 // To load a bundle means to insert the bundle into the plugin's cache and publish the bundle 4568 // value to the loader. Given <path>, <bundle>, and a particular <locale>, the cache key 4569 // 4570 // <path>/nls/<bundle>/<locale> 4571 // 4572 // will hold the value. Similarly, then plugin will publish this value to the loader by 4573 // 4574 // define("<path>/nls/<bundle>/<locale>", <bundle-value>); 4575 // 4576 // Given this algorithm, other machinery can provide fast load paths be preplacing 4577 // values in the plugin's cache, which is public. When a load is demanded the 4578 // cache is inspected before starting any loading. Explicitly placing values in the plugin 4579 // cache is an advanced/experimental feature that should not be needed; use at your own risk. 4580 // 4581 // For the normal AMD algorithm, the root bundle is loaded first, which instructs the 4582 // plugin what additional localized bundles are required for a particular locale. These 4583 // additional locales are loaded and a mix of the root and each progressively-specific 4584 // locale is returned. For example: 4585 // 4586 // 1. The client demands "dojo/i18n!some/path/nls/someBundle 4587 // 4588 // 2. The loader demands load(some/path/nls/someBundle) 4589 // 4590 // 3. This plugin require's "some/path/nls/someBundle", which is the root bundle. 4591 // 4592 // 4. Assuming config.locale is "ab-cd-ef" and the root bundle indicates that localizations 4593 // are available for "ab" and "ab-cd-ef" (note the missing "ab-cd", then the plugin 4594 // requires "some/path/nls/ab/someBundle" and "some/path/nls/ab-cd-ef/someBundle" 4595 // 4596 // 5. Upon receiving all required bundles, the plugin constructs the value of the bundle 4597 // ab-cd-ef as... 4598 // 4599 // mixin(mixin(mixin({}, require("some/path/nls/someBundle"), 4600 // require("some/path/nls/ab/someBundle")), 4601 // require("some/path/nls/ab-cd-ef/someBundle")); 4602 // 4603 // This value is inserted into the cache and published to the loader at the 4604 // key/module-id some/path/nls/someBundle/ab-cd-ef. 4605 // 4606 // The special preload signature (case 3) instructs the plugin to stop servicing all normal requests 4607 // (further preload requests will be serviced) until all ongoing preloading has completed. 4608 // 4609 // The preload signature instructs the plugin that a special rollup module is available that contains 4610 // one or more flattened, localized bundles. The JSON array of available locales indicates which locales 4611 // are available. Here is an example: 4612 // 4613 // *preload*some/path/nls/someModule*["root", "ab", "ab-cd-ef"] 4614 // 4615 // This indicates the following rollup modules are available: 4616 // 4617 // some/path/nls/someModule_ROOT 4618 // some/path/nls/someModule_ab 4619 // some/path/nls/someModule_ab-cd-ef 4620 // 4621 // Each of these modules is a normal AMD module that contains one or more flattened bundles in a hash. 4622 // For example, assume someModule contained the bundles some/bundle/p
vendor: 5,098 bytes, lines 4622-4737
4622ath/someBundle and 4623 // some/bundle/path/someOtherBundle, then some/path/nls/someModule_ab would be expressed as follows: 4624 // 4625 // define({ 4626 // some/bundle/path/someBundle:<value of someBundle, flattened with respect to locale ab>, 4627 // some/bundle/path/someOtherBundle:<value of someOtherBundle, flattened with respect to locale ab>, 4628 // }); 4629 // 4630 // E.g., given this design, preloading for locale=="ab" can execute the following algorithm: 4631 // 4632 // require(["some/path/nls/someModule_ab"], function(rollup){ 4633 // for(var p in rollup){ 4634 // var id = p + "/ab", 4635 // cache[id] = rollup[p]; 4636 // define(id, rollup[p]); 4637 // } 4638 // }); 4639 // 4640 // Similarly, if "ab-cd" is requested, the algorithm can determine that "ab" is the best available and 4641 // load accordingly. 4642 // 4643 // The builder will write such rollups for every layer if a non-empty localeList profile property is 4644 // provided. Further, the builder will include the following cache entry in the cache associated with 4645 // any layer. 4646 // 4647 // "*now":function(r){r(['dojo/i18n!*preload*<path>/nls/<module>*<JSON array of available locales>']);} 4648 // 4649 // The *now special cache module instructs the loader to apply the provided function to context-require 4650 // with respect to the particular layer being defined. This causes the plugin to hold all normal service 4651 // requests until all preloading is complete. 4652 // 4653 // Notice that this algorithm is rarely better than the standard AMD load algorithm. Consider the normal case 4654 // where the target locale has a single segment and a layer depends on a single bundle: 4655 // 4656 // Without Preloads: 4657 // 4658 // 1. Layer loads root bundle. 4659 // 2. bundle is demanded; plugin loads single localized bundle. 4660 // 4661 // With Preloads: 4662 // 4663 // 1. Layer causes preloading of target bundle. 4664 // 2. bundle is demanded; service is delayed until preloading complete; bundle is returned. 4665 // 4666 // In each case a single transaction is required to load the target bundle. In cases where multiple bundles 4667 // are required and/or the locale has multiple segments, preloads still requires a single transaction whereas 4668 // the normal path requires an additional transaction for each additional bundle/locale-segment. However all 4669 // of these additional transactions can be done concurrently. Owing to this analysis, the entire preloading 4670 // algorithm can be discard during a build by setting the has feature dojo-preload-i18n-Api to false. 4671 4672 var match = nlsRe.exec(id), 4673 bundlePath = match[1] + "/", 4674 bundleName = match[5] || match[4], 4675 bundlePathAndName = bundlePath + bundleName, 4676 localeSpecified = (match[5] && match[4]), 4677 targetLocale = localeSpecified || dojo.locale || "", 4678 loadTarget = bundlePathAndName + "/" + targetLocale, 4679 loadList = localeSpecified ? [targetLocale] : getLocalesToLoad(targetLocale), 4680 remaining = loadList.length, 4681 finish = function(){ 4682 if(!--remaining){ 4683 load(lang.delegate(cache[loadTarget])); 4684 } 4685 }, 4686 split = id.split("*"), 4687 preloadDemand = split[1] == "preload"; 4688 4689 if(has("dojo-preload-i18n-Api")){ 4690 if(preloadDemand){ 4691 if(!cache[id]){ 4692 // use cache[id] to prevent multiple preloads of the same preload; this shouldn't happen, but 4693 // who knows what over-aggressive human optimizers may attempt 4694 cache[id] = 1; 4695 preloadL10n(split[2], json.parse(split[3]), 1, require); 4696 } 4697 // don't stall the loader! 4698 load(1); 4699 } 4700 if(preloadDemand || (waitForPreloads(id, require, load) && !cache[loadTarget])){ 4701 return; 4702 } 4703 } 4704 else if (preloadDemand) { 4705 // If a build is created with nls resources and 'dojo-preload-i18n-Api' has not been set to false, 4706 // the built file will include a preload in the cache (which looks about like so:) 4707 // '*now':function(r){r(['dojo/i18n!*preload*dojo/nls/dojo*["ar","ca","cs","da","de","el","en-gb","en-us","es-es","fi-fi","fr-fr","he-il","hu","it-it","ja-jp","ko-kr","nl-nl","nb","pl","pt-br","pt-pt","ru","sk","sl","sv","th","tr","zh-tw","zh-cn","ROOT"]']);} 4708 // If the consumer of the build sets 'dojo-preload-i18n-Api' to false in the Dojo config, the cached 4709 // preload will not be parsed and will result in an attempt to call 'require' passing it the unparsed 4710 // preload, which is not a valid module id. 4711 // In this case we should skip this request. 4712 load(1); 4713 4714 return; 4715 } 4716 4717 array.forEach(loadList, function(locale){ 4718 var target = bundlePathAndName + "/" + locale; 4719 if(has("dojo-preload-i18n-Api")){ 4720 checkForLegacyModules(target); 4721 } 4722 if(!cache[target]){ 4723 doLoad(require, bundlePathAndName, bundlePath, bundleName, locale, finish); 4724 }else{ 4725 finish(); 4726 } 4727 }); 4728 }; 4729 4730 if(has("dojo-preload-i18n-Api") || 1 ){ 4731 var normalizeLocale = thisModule.normalizeLocale = function(locale){ 4732 var result = locale ? locale.toLowerCase() : dojo.locale; 4733 return result == "root" ? "ROOT" : result; 4734 }, 4735 4736 isXd = function(mid, contextRequire){ 4737 return ( 1 && 1
vendor: 6,660 bytes, lines 4737-4904
4737) ? 4738 contextRequire.isXdUrl(require.toUrl(mid + ".js")) : 4739 true; 4740 }, 4741 4742 preloading = 0, 4743 4744 preloadWaitQueue = [], 4745 4746 preloadL10n = thisModule._preloadLocalizations = function(/*String*/bundlePrefix, /*Array*/localesGenerated, /*boolean?*/ guaranteedAmdFormat, /*function?*/ contextRequire){ 4747 // summary: 4748 // Load available flattened resource bundles associated with a particular module for dojo/locale and all dojo/config.extraLocale (if any) 4749 // description: 4750 // Only called by built layer files. The entire locale hierarchy is loaded. For example, 4751 // if locale=="ab-cd", then ROOT, "ab", and "ab-cd" are loaded. This is different than v1.6- 4752 // in that the v1.6- would only load ab-cd...which was *always* flattened. 4753 // 4754 // If guaranteedAmdFormat is true, then the module can be loaded with require thereby circumventing the detection algorithm 4755 // and the extra possible extra transaction. 4756 4757 // If this function is called from legacy code, then guaranteedAmdFormat and contextRequire will be undefined. Since the function 4758 // needs a require in order to resolve module ids, fall back to the context-require associated with this dojo/i18n module, which 4759 // itself may have been mapped. 4760 contextRequire = contextRequire || require; 4761 4762 function doRequire(mid, callback){ 4763 if(isXd(mid, contextRequire) || guaranteedAmdFormat){ 4764 contextRequire([mid], callback); 4765 }else{ 4766 syncRequire([mid], callback, contextRequire); 4767 } 4768 } 4769 4770 function forEachLocale(locale, func){ 4771 // given locale= "ab-cd-ef", calls func on "ab-cd-ef", "ab-cd", "ab", "ROOT"; stops calling the first time func returns truthy 4772 var parts = locale.split("-"); 4773 while(parts.length){ 4774 if(func(parts.join("-"))){ 4775 return; 4776 } 4777 parts.pop(); 4778 } 4779 func("ROOT"); 4780 } 4781 4782 function preloadingAddLock(){ 4783 preloading++; 4784 } 4785 4786 function preloadingRelLock(){ 4787 --preloading; 4788 while(!preloading && preloadWaitQueue.length){ 4789 load.apply(null, preloadWaitQueue.shift()); 4790 } 4791 } 4792 4793 function cacheId(path, name, loc, require){ 4794 // path is assumed to have a trailing "/" 4795 return require.toAbsMid(path + name + "/" + loc) 4796 } 4797 4798 function preload(locale){ 4799 locale = normalizeLocale(locale); 4800 forEachLocale(locale, function(loc){ 4801 if(array.indexOf(localesGenerated, loc) >= 0){ 4802 var mid = bundlePrefix.replace(/\./g, "/") + "_" + loc; 4803 preloadingAddLock(); 4804 doRequire(mid, function(rollup){ 4805 for(var p in rollup){ 4806 var bundle = rollup[p], 4807 match = p.match(/(.+)\/([^\/]+)$/), 4808 bundleName, bundlePath; 4809 4810 // If there is no match, the bundle is not a regular bundle from an AMD layer. 4811 if (!match){continue;} 4812 4813 bundleName = match[2]; 4814 bundlePath = match[1] + "/"; 4815 4816 // backcompat 4817 if(!bundle._localized){continue;} 4818 4819 var localized; 4820 if(loc === "ROOT"){ 4821 var root = localized = bundle._localized; 4822 delete bundle._localized; 4823 root.root = bundle; 4824 cache[require.toAbsMid(p)] = root; 4825 }else{ 4826 localized = bundle._localized; 4827 cache[cacheId(bundlePath, bundleName, loc, require)] = bundle; 4828 } 4829 4830 if(loc !== locale){ 4831 // capture some locale variables 4832 var improveBundle = function improveBundle(bundlePath, bundleName, bundle, localized){ 4833 // locale was not flattened and we've fallen back to a less-specific locale that was flattened 4834 // for example, we had a flattened 'fr', a 'fr-ca' is available for at least this bundle, and 4835 // locale==='fr-ca'; therefore, we must improve the bundle as retrieved from the rollup by 4836 // manually loading the fr-ca version of the bundle and mixing this into the already-retrieved 'fr' 4837 // version of the bundle. 4838 // 4839 // Remember, different bundles may have different sets of locales available. 4840 // 4841 // we are really falling back on the regular algorithm here, but--hopefully--starting with most 4842 // of the required bundles already on board as given by the rollup and we need to "manually" load 4843 // only one locale from a few bundles...or even better...we won't find anything better to load. 4844 // This algorithm ensures there is nothing better to load even when we can only load a less-specific rollup. 4845 // 4846 // note: this feature is only available in async mode 4847 4848 // inspect the loaded bundle that came from the rollup to see if something better is available 4849 // for any bundle in a rollup, more-specific available locales are given at localized. 4850 var requiredBundles = [], 4851 cacheIds = []; 4852 forEachLocale(locale, function(loc){ 4853 if(localized[loc]){ 4854 requiredBundles.push(require.toAbsMid(bundlePath + loc + "/" + bundleName)); 4855 cacheIds.push(cacheId(bundlePath, bundleName, loc, require)); 4856 } 4857 }); 4858 4859 if(requiredBundles.length){ 4860 preloadingAddLock(); 4861 contextRequire(requiredBundles, function(){ 4862 // requiredBundles was constructed by forEachLocale so it contains locales from 4863 // less specific to most specific. 4864 // the loop starts with the most specific locale, the last one. 4865 for(var i = requiredBundles.length - 1; i >= 0 ; i--){ 4866 bundle = lang.mixin(lang.clone(bundle), arguments[i]); 4867 cache[cacheIds[i]] = bundle; 4868 } 4869 // this is the best possible (maybe a perfect match, maybe not), accept it 4870 cache[cacheId(bundlePath, bundleName, locale, require)] = lang.clone(bundle); 4871 preloadingRelLock(); 4872 }); 4873 }else{ 4874 // this is the best possible (definitely not a perfect match), accept it 4875 cache[cacheId(bundlePath, bundleName, locale, require)] = bundle; 4876 } 4877 }; 4878 improveBundle(bundlePath, bundleName, bundle, localized); 4879 } 4880 } 4881 preloadingRelLock(); 4882 }); 4883 return true; 4884 } 4885 return false; 4886 }); 4887 } 4888 4889 preload(); 4890 array.forEach(dojo.config.extraLocale, preload); 4891 }, 4892 4893 waitForPreloads = function(id, require, load){ 4894 if(preloading){ 4895 preloadWaitQueue.push([id, require, load]); 4896 } 4897 return preloading; 4898 }, 4899 4900 checkForLegacyModules = function() 4901 {}; 4902 } 4903 4904 if(
vendor: 4,419 bytes, lines 4904-5017
4904 1 ){ 4905 // this code path assumes the dojo loader and won't work with a standard AMD loader 4906 var amdValue = {}, 4907 l10nCache = {}, 4908 evalBundle, 4909 4910 syncRequire = function(deps, callback, require){ 4911 var results = []; 4912 array.forEach(deps, function(mid){ 4913 var url = require.toUrl(mid + ".js"); 4914 4915 function load(text){ 4916 if (!evalBundle) { 4917 // use the function ctor to keep the minifiers away (also come close to global scope, but this is secondary) 4918 evalBundle = new Function( 4919 "__bundle", // the bundle to evalutate 4920 "__checkForLegacyModules", // a function that checks if __bundle defined __mid in the global space 4921 "__mid", // the mid that __bundle is intended to define 4922 "__amdValue", 4923 4924 // returns one of: 4925 // 1 => the bundle was an AMD bundle 4926 // a legacy bundle object that is the value of __mid 4927 // instance of Error => could not figure out how to evaluate bundle 4928 4929 // used to detect when __bundle calls define 4930 "var define = function(mid, factory){define.called = 1; __amdValue.result = factory || mid;}," 4931 + " require = function(){define.called = 1;};" 4932 4933 + "try{" 4934 + "define.called = 0;" 4935 + "eval(__bundle);" 4936 + "if(define.called==1)" 4937 // bundle called define; therefore signal it's an AMD bundle 4938 + "return __amdValue;" 4939 4940 + "if((__checkForLegacyModules = __checkForLegacyModules(__mid)))" 4941 // bundle was probably a v1.6- built NLS flattened NLS bundle that defined __mid in the global space 4942 + "return __checkForLegacyModules;" 4943 4944 + "}catch(e){}" 4945 // evaulating the bundle was *neither* an AMD *nor* a legacy flattened bundle 4946 // either way, re-eval *after* surrounding with parentheses 4947 4948 + "try{" 4949 + "return eval('('+__bundle+')');" 4950 + "}catch(e){" 4951 + "return e;" 4952 + "}" 4953 ); 4954 } 4955 var result = evalBundle(text, checkForLegacyModules, mid, amdValue); 4956 if(result===amdValue){ 4957 // the bundle was an AMD module; re-inject it through the normal AMD path 4958 // we gotta do this since it could be an anonymous module and simply evaluating 4959 // the text here won't provide the loader with the context to know what 4960 // module is being defined()'d. With browser caching, this should be free; further 4961 // this entire code path can be circumvented by using the AMD format to begin with 4962 results.push(cache[url] = amdValue.result); 4963 }else{ 4964 if(result instanceof Error){ 4965 console.error("failed to evaluate i18n bundle; url=" + url, result); 4966 result = {}; 4967 } 4968 // nls/<locale>/<bundle-name> indicates not the root. 4969 results.push(cache[url] = (/nls\/[^\/]+\/[^\/]+$/.test(url) ? result : {root:result, _v1x:1})); 4970 } 4971 } 4972 4973 if(cache[url]){ 4974 results.push(cache[url]); 4975 }else{ 4976 var bundle = require.syncLoadNls(mid); 4977 // need to check for legacy module here because there might be a legacy module for a 4978 // less specific locale (which was not looked up during the first checkForLegacyModules 4979 // call in load()). 4980 // Also need to reverse the locale and the module name in the mid because syncRequire 4981 // deps parameters uses the AMD style package/nls/locale/module while legacy code uses 4982 // package/nls/module/locale. 4983 if(!bundle){ 4984 bundle = checkForLegacyModules(mid.replace(/nls\/([^\/]*)\/([^\/]*)$/, "nls/$2/$1")); 4985 } 4986 if(bundle){ 4987 results.push(bundle); 4988 }else{ 4989 if(!xhr){ 4990 try{ 4991 require.getText(url, true, load); 4992 }catch(e){ 4993 results.push(cache[url] = {}); 4994 } 4995 }else{ 4996 xhr.get({ 4997 url:url, 4998 sync:true, 4999 load:load, 5000 error:function(){ 5001 results.push(cache[url] = {}); 5002 } 5003 }); 5004 } 5005 } 5006 } 5007 }); 5008 callback && callback.apply(null, results); 5009 }; 5010 5011 checkForLegacyModules = function(target){ 5012 // legacy code may have already loaded [e.g] the raw bundle x/y/z at x.y.z; when true, push into the cache 5013 for(var result, names = target.split("/"), object = dojo.global[names[0]], i = 1; object && i<names.length-1; object = object[names[i++]]){} 5014 if(object){ 5015 result = object[names[i]]; 5016 if(!result){ 5017 // fallback for incorrect bundle build of 1.6
5018 result = object[names[i].replace(/-/g,"_")]; 5019 } 5020 if(result){ 5021 cache[target] = result; 5022 } 5023 } 5024 return result; 5025 }; 5026 5027 thisModule.getLocalization = function(moduleName, bundleName, locale){ 5028 var result, 5029 l10nName = getBundleName(moduleName, bundleName, locale); 5030 5031 if (l10nCache[l10nName]) { 5032 return l10nCache[l10nName]; 5033 } 5034 5035 load( 5036 l10nName, 5037 5038 // isXd() and syncRequire() need a context-require in order to resolve the mid with respect to a reference module. 5039 // Since this legacy function does not have the concept of a reference module, resolve with respect to this 5040 // dojo/i18n module, which, itself may have been mapped. 5041 (!isXd(l10nName, require) ? function(deps, callback){ syncRequire(deps, callback, require); } : require), 5042 5043 function(result_){ 5044 l10nCache[l10nName] = result_; 5045 result = result_; 5046 } 5047 ); 5048 return result; 5049 }; 5050 } 5051 else { 5052 thisModule.getLocalization = function(moduleName, bundleName, locale){ 5053 var key = moduleName.replace(/\./g, '/') + '/nls/' + bundleName + '/' + (locale || config.locale); 5054 return this.cache[key]; 5055 }; 5056 } 5057 5058 return lang.mixin(thisModule, { 5059 dynamic:true, 5060 normalize:normalize, 5061 load:load, 5062 cache:cache, 5063 getL10nName: getL10nName 5064 }); 5065}); 5066 5067}, 5068'HTMLSnippet/widget/HTMLSnippetContext':function(){ 5069define(["dojo/_base/declare","mxui/widget/_WidgetBase","dojo/dom-style","dojo/dom-attr","dojo/dom-construct","dojo/_base/lang","dojo/html","dijit/layout/LinkPane"],function(__WEBPACK_EXTERNAL_MODULE__80__,__WEBPACK_EXTERNAL_MODULE__146__,__WEBPACK_EXTERNAL_MODULE__147__,__WEBPACK_EXTERNAL_MODULE__148__,__WEBPACK_EXTERNAL_MODULE__149__,__WEBPACK_EXTERNAL_MODULE__150__,__WEBPACK_EXTERNAL_MODULE__151__,__WEBPACK_EXTERNAL_MODULE__152__){return function(t){function e(e){for(var r,o,i=e[0],c=e[1],u=0,a=[];u<i.length;u++)o=i[u],Object.prototype.hasOwnProperty.call(n,o)&&n[o]&&a.push(n[o][0]),n[o]=0;for(r in c)Object.prototype.hasOwnProperty.call(c,r)&&(t[r]=c[r]);for(s&&s(e);a.length;)a.shift()()}var r={},n={1:0};function o(e){if(r[e])return r[e].exports;var n=r[e]={i:e,l:!1,exports:{}};return t[e].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.e=function(t){var e=[],r=n[t];if(0!==r)if(r)e.push(r[2]);else{var i=new Promise(function(e,o){r=n[t]=[e,o]});e.push(r[2]=i);var c,u=document.createElement("script");u.charset="utf-8",u.timeout=120,o.nc&&u.setAttribute("nonce",o.nc),u.src=function(t){return o.p+"HTMLSnippet/widget/HTMLSnippet"+t+".js"}(t);var s=new Error;c=function(e){u.onerror=u.onload=null,clearTimeout(a);var r=n[t];if(0!==r){if(r){var o=e&&("load"===e.type?"missing":e.type),i=e&&e.target&&e.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",s.name="ChunkLoadError",s.type=o,s.request=i,r[1](s)}n[t]=void 0}};var a=setTimeout(function(){c({type:"timeout",target:u})},12e4);u.onerror=u.onload=c,document.head.appendChild(u)}return Promise.all(e)},o.m=t,o.c=r,o.d=function(t,e,r){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)o.d(r,n,function(e){return t[e]}.bind(null,n));return r},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="/widgets/",o.oe=function(t){throw console.error(t),t};var i=window.webpackJsonp=window.webpackJsonp||[],c=i.push.bind(i);i.push=e,i=i.slice();for(var u=0;u<i.length;u++)e(i[u]);var s=c;return o(o.s=155)}([function(t,e,r){"use strict";var n="object"==typeof document&&document.all;t.exports=void 0===n&&void 0!==n?function(t){return"function"==typeof t||t===n}:function(t){return"function"==typeof t}},function(t,e,r){"use strict";(function(e){var r=function(t){return t&&t.Math===Math&&t};t.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof e&&e)||r("object"==typeof this&&this)||function(){return this}()||Function("return this")()}).call(this,r(84))},function(t,e,r){"use strict";var n=r(26),o=Function.prototype,i=o.call,c=n&&o.bind.bind(i,i);t.exports=n?c:function(t){return function(){return i.apply(t,arguments)}}},function(t,e,r){"use strict";
5069t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,r){"use strict";var n=r(1),o=r(58),i=r(10),c=r(60),u=r(56),s=r(55),a=n.Symbol,f=o("wks"),p=s?a.for||a:a&&a.withoutSetter||c;t.exports=function(t){return i(f,t)||(f[t]=u&&i(a,t)?a[t]:p("Symbol."+t)),f[t]}},function(t,e,r){"use strict";var n=r(1),o=r(52).f,i=r(17),c=r(16),u=r(38),s=r(65),a=r(68);t.exports=function(t,e){var r,f,p,l,v,d=t.target,h=t.global,_=t.stat;if(r=h?n:_?n[d]||u(d,{}):n[d]&&n[d].prototype)for(f in e){if(l=e[f],p=t.dontCallGetSet?(v=o(r,f))&&v.value:r[f],!a(h?f:d+(_?".":"#")+f,t.forced)&&void 0!==p){if(typeof l==typeof p)continue;s(l,p)}(t.sham||p&&p.sham)&&i(l,"sham",!0),c(r,f,l,t)}}},function(t,e,r){"use strict";var n=r(26),o=Function.prototype.call;t.exports=n?o.bind(o):function(){return o.apply(o,arguments)}},function(t,e,r){"use strict";var n=r(3);t.exports=!n(function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]})},function(t,e,r){"use strict";var n=r(0);t.exports=function(t){return"object"==typeof t?null!==t:n(t)}},function(t,e,r){"use strict";var n=r(0),o=r(31),i=TypeError;t.exports=function(t){if(n(t))return t;throw new i(o(t)+" is not a function")}},function(t,e,r){"use strict";var n=r(2),o=r(59),i=n({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return i(o(t),e)}},function(t,e,r){"use strict";var n=r(1),o=r(0),i=function(t){return o(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?i(n[t]):n[t]&&n[t][e]}},function(t,e,r){"use strict";t.exports=!1},function(t,e,r){"use strict";var n=r(8),o=String,i=TypeError;t.exports=function(t){if(n(t))return t;throw new i(o(t)+" is not an object")}},function(t,e,r){"use strict";var n=r(7),o=r(61),i=r(62),c=r(13),u=r(53),s=TypeError,a=Object.defineProperty,f=Object.getOwnPropertyDescriptor;e.f=n?i?function(t,e,r){if(c(t),e=u(e),c(r),"function"==typeof t&&"prototype"===e&&"value"in r&&"writable"in r&&!r.writable){var n=f(t,e);n&&n.writable&&(t[e]=r.value,r={configurable:"configurable"in r?r.configurable:n.configurable,enumerable:"enumerable"in r?r.enumerable:n.enumerable,writable:!1})}return a(t,e,r)}:a:function(t,e,r){if(c(t),e=u(e),c(r),o)try{return a(t,e,r)}catch(t){}if("get"in r||"set"in r)throw new s("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},function(t,e,r){"use strict";var n=r(9),o=TypeError,i=function(t){var e,r;this.promise=new t(function(t,n){if(void 0!==e||void 0!==r)throw new o("Bad Promise constructor");e=t,r=n}),this.resolve=n(e),this.reject=n(r)};t.exports.f=function(t){return new i(t)}},function(t,e,r){"use strict";var n=r(0),o=r(14),i=r(63),c=r(38);t.exports=function(t,e,r,u){u||(u={});var s=u.enumerable,a=void 0!==u.name?u.name:e;if(n(r)&&i(r,a,u),u.global)s?t[e]=r:c(e,r);else{try{u.unsafe?t[e]&&(s=!0):delete t[e]}catch(t){}s?t[e]=r:o.f(t,e,{value:r,enumerable:!1,configurable:!u.nonConfigurable,writable:!u.nonWritable})}return t}},function(t,e,r){"use strict";var n=r(7),o=r(14),i=r(19);t.exports=n?function(t,e,r){return o.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e,r){"use strict";var n=r(1);t.exports=n.Promise},function(t,e,r){"use strict";t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,r){"use strict";var n=r(86),o=r(28);t.exports=function(t){return n(o(t))}},function(t,e,r){"use strict";var n=r(1).navigator,o=n&&n.userAgent;t.exports=o?String(o):""},function(t,e,r){"use strict";var n=r(47),o=r(6),i=r(13),c=r(31),u=r(108),s=r(67),a=r(30),f=r(109),p=r(70),l=r(110),v=TypeError,d=function(t,e){this.stopped=t,this.result=e},h=d.prototype;t.exports=function(t,e,r){var _,y,g,m,b,x,E,w=r&&r.that,O=!(!r||!r.AS_ENTRIES),j=!(!r||!r.IS_RECORD),P=!(!r||!r.IS_ITERATOR),A=!(!r||!r.INTERRUPTED),S=n(e,w),C=function(t){return _&&l(_,"normal",t),new d(!0,t)},T=function(t){return O?(i(t),A?S(t[0],t[1],C):S(t[0],t[1])):A?S(t,C):S(t)};if(j)_=t.iterator;else if(P)_=t;else{if(!(y=p(t)))throw new v(c(t)+" is not iterable");if(u(y)){for(g=0,m=s(t);m>g;g++)if((b=T(t[g]))&&a(h,b))return b;return new d(!1)}_=f(t,y)}for(x=j?t.next:_.next;!(E=o(x,_)).done;){try{b=T(E.value)}catch(t){l(_,"throw",t)}if("object"==typeof b&&b&&a(h,b))return b}return new d(!1)}},function(t,e,r){"use strict";
5069t.exports={}},function(t,e,r){"use strict";t.exports=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}}},function(t,e,r){"use strict";var n=r(1),o=r(18),i=r(0),c=r(68),u=r(40),s=r(4),a=r(74),f=r(12),p=r(57),l=o&&o.prototype,v=s("species"),d=!1,h=i(n.PromiseRejectionEvent),_=c("Promise",function(){var t=u(o),e=t!==String(o);if(!e&&66===p)return!0;if(f&&(!l.catch||!l.finally))return!0;if(!p||p<51||!/native code/.test(t)){var r=new o(function(t){t(1)}),n=function(t){t(function(){},function(){})};if((r.constructor={})[v]=n,!(d=r.then(function(){})instanceof n))return!0}return!(e||"BROWSER"!==a&&"DENO"!==a||h)});t.exports={CONSTRUCTOR:_,REJECTION_EVENT:h,SUBCLASSING:d}},function(t,e,r){"use strict";var n=r(3);t.exports=!n(function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")})},function(t,e,r){"use strict";var n=r(2),o=n({}.toString),i=n("".slice);t.exports=function(t){return i(o(t),8,-1)}},function(t,e,r){"use strict";var n=r(29),o=TypeError;t.exports=function(t){if(n(t))throw new o("Can't call method on "+t);return t}},function(t,e,r){"use strict";t.exports=function(t){return null==t}},function(t,e,r){"use strict";var n=r(2);t.exports=n({}.isPrototypeOf)},function(t,e,r){"use strict";var n=String;t.exports=function(t){try{return n(t)}catch(t){return"Object"}}},function(t,e,r){"use strict";var n,o,i,c=r(89),u=r(1),s=r(8),a=r(17),f=r(10),p=r(37),l=r(41),v=r(42),d=u.TypeError,h=u.WeakMap;if(c||p.state){var _=p.state||(p.state=new h);_.get=_.get,_.has=_.has,_.set=_.set,n=function(t,e){if(_.has(t))throw new d("Object already initialized");return e.facade=t,_.set(t,e),e},o=function(t){return _.get(t)||{}},i=function(t){return _.has(t)}}else{var y=l("state");v[y]=!0,n=function(t,e){if(f(t,y))throw new d("Object already initialized");return e.facade=t,a(t,y,e),e},o=function(t){return f(t,y)?t[y]:{}},i=function(t){return f(t,y)}}t.exports={set:n,get:o,has:i,enforce:function(t){return i(t)?o(t):n(t,{})},getterFor:function(t){return function(e){var r;if(!s(e)||(r=o(e)).type!==t)throw new d("Incompatible receiver, "+t+" required");return r}}}},function(t,e,r){"use strict";var n,o=r(13),i=r(101),c=r(44),u=r(42),s=r(69),a=r(39),f=r(41),p=f("IE_PROTO"),l=function(){},v=function(t){return"<script>"+t+"<\/script>"},d=function(t){t.write(v("")),t.close();var e=t.parentWindow.Object;return t=null,e},h=function(){try{n=new ActiveXObject("htmlfile")}catch(t){}var t,e;h="undefined"!=typeof document?document.domain&&n?d(n):((e=a("iframe")).style.display="none",s.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(v("document.F=Object")),t.close(),t.F):d(n);for(var r=c.length;r--;)delete h.prototype[c[r]];return h()};
5069u[p]=!0,t.exports=Object.create||function(t,e){var r;return null!==t?(l.prototype=o(t),r=new l,l.prototype=null,r[p]=t):r=h(),void 0===e?r:i.f(r,e)}},function(t,e,r){"use strict";var n=r(48),o=r(0),i=r(27),c=r(4)("toStringTag"),u=Object,s="Arguments"===i(function(){return arguments}());t.exports=n?i:function(t){var e,r,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=u(t),c))?r:s?i(e):"Object"===(n=i(e))&&o(e.callee)?"Arguments":n}},function(t,e,r){"use strict";var n=r(18),o=r(133),i=r(25).CONSTRUCTOR;t.exports=i||!o(function(t){n.all(t).then(void 0,function(){})})},function(t,e,r){"use strict";var n=r(9),o=r(29);t.exports=function(t,e){var r=t[e];return o(r)?void 0:n(r)}},function(t,e,r){"use strict";var n=r(12),o=r(1),i=r(38),c=t.exports=o["__core-js_shared__"]||i("__core-js_shared__",{});(c.versions||(c.versions=[])).push({version:"3.38.1",mode:n?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE",source:"https://github.com/zloirock/core-js"})},function(t,e,r){"use strict";var n=r(1),o=Object.defineProperty;t.exports=function(t,e){try{o(n,t,{value:e,configurable:!0,writable:!0})}catch(r){n[t]=e}return e}},function(t,e,r){"use strict";var n=r(1),o=r(8),i=n.document,c=o(i)&&o(i.createElement);t.exports=function(t){return c?i.createElement(t):{}}},function(t,e,r){"use strict";var n=r(2),o=r(0),i=r(37),c=n(Function.toString);o(i.inspectSource)||(i.inspectSource=function(t){return c(t)}),t.exports=i.inspectSource},function(t,e,r){"use strict";var n=r(58),o=r(60),i=n("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,e,r){"use strict";t.exports={}},function(t,e,r){"use strict";var n=r(94);t.exports=function(t){var e=+t;return e!=e||0===e?0:n(e)}},function(t,e,r){"use strict";t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,e,r){"use strict";var n=r(10),o=r(0),i=r(59),c=r(41),u=r(97),s=c("IE_PROTO"),a=Object,f=a.prototype;t.exports=u?a.getPrototypeOf:function(t){var e=i(t);if(n(e,s))return e[s];var r=e.constructor;return o(r)&&e instanceof r?r.prototype:e instanceof a?f:null}},function(t,e,r){"use strict";var n=r(98),o=r(8),i=r(28),c=r(99);
vendor: 1,915 bytes, line 5069
5069t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,r={};try{(t=n(Object.prototype,"__proto__","set"))(r,[]),e=r instanceof Array}catch(t){}return function(r,n){return i(r),c(n),o(r)?(e?t(r,n):r.__proto__=n,r):r}}():void 0)},function(t,e,r){"use strict";var n=r(107),o=r(9),i=r(26),c=n(n.bind);t.exports=function(t,e){return o(t),void 0===e?t:i?c(t,e):function(){return t.apply(e,arguments)}}},function(t,e,r){"use strict";var n={};n[r(4)("toStringTag")]="z",t.exports="[object z]"===String(n)},function(t,e,r){"use strict";var n=r(34),o=String;t.exports=function(t){if("Symbol"===n(t))throw new TypeError("Cannot convert a Symbol value to a string");return o(t)}},function(t,e,r){"use strict";var n=r(14).f,o=r(10),i=r(4)("toStringTag");t.exports=function(t,e,r){t&&!r&&(t=t.prototype),t&&!o(t,i)&&n(t,i,{configurable:!0,value:e})}},function(t,e,r){"use strict";var n=r(74);t.exports="NODE"===n},function(t,e,r){"use strict";var n=r(7),o=r(6),i=r(85),c=r(19),u=r(20),s=r(53),a=r(10),f=r(61),p=Object.getOwnPropertyDescriptor;e.f=n?p:function(t,e){if(t=u(t),e=s(e),f)try{return p(t,e)}catch(t){}if(a(t,e))return c(!o(i.f,t,e),t[e])}},function(t,e,r){"use strict";var n=r(87),o=r(54);t.exports=function(t){var e=n(t,"string");return o(e)?e:e+""}},function(t,e,r){"use strict";var n=r(11),o=r(0),i=r(30),c=r(55),u=Object;t.exports=c?function(t){return"symbol"==typeof t}:function(t){var e=n("Symbol");return o(e)&&i(e.prototype,u(t))}},function(t,e,r){"use strict";var n=r(56);t.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(t,e,r){"use strict";var n=r(57),o=r(3),i=r(1).String;t.exports=!!Object.getOwnPropertySymbols&&!o(function(){var t=Symbol("symbol detection");return!i(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&n&&n<41})},function(t,e,r){"use strict";var n,o,i=r(1),c=r(21),u=i.process,s=i.Deno,a=u&&u.versions||s&&s.version,f=a&&a.v8;f&&(o=(n=f.split("."))[0]>
vendor: 4,395 bytes, line 5069
50690&&n[0]<4?1:+(n[0]+n[1])),!o&&c&&(!(n=c.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=c.match(/Chrome\/(\d+)/))&&(o=+n[1]),t.exports=o},function(t,e,r){"use strict";var n=r(37);t.exports=function(t,e){return n[t]||(n[t]=e||{})}},function(t,e,r){"use strict";var n=r(28),o=Object;t.exports=function(t){return o(n(t))}},function(t,e,r){"use strict";var n=r(2),o=0,i=Math.random(),c=n(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+c(++o+i,36)}},function(t,e,r){"use strict";var n=r(7),o=r(3),i=r(39);t.exports=!n&&!o(function(){return 7!==Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a})},function(t,e,r){"use strict";var n=r(7),o=r(3);t.exports=n&&o(function(){return 42!==Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype})},function(t,e,r){"use strict";var n=r(2),o=r(3),i=r(0),c=r(10),u=r(7),s=r(64).CONFIGURABLE,a=r(40),f=r(32),p=f.enforce,l=f.get,v=String,d=Object.defineProperty,h=n("".slice),_=n("".replace),y=n([].join),g=u&&!o(function(){return 8!==d(function(){},"length",{value:8}).length}),m=String(String).split("String"),b=t.exports=function(t,e,r){"Symbol("===h(v(e),0,7)&&(e="["+_(v(e),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),r&&r.getter&&(e="get "+e),r&&r.setter&&(e="set "+e),(!c(t,"name")||s&&t.name!==e)&&(u?d(t,"name",{value:e,configurable:!0}):t.name=e),g&&r&&c(r,"arity")&&t.length!==r.arity&&d(t,"length",{value:r.arity});try{r&&c(r,"constructor")&&r.constructor?u&&d(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var n=p(t);return c(n,"source")||(n.source=y(m,"string"==typeof e?e:"")),t};Function.prototype.toString=b(function(){return i(this)&&l(this).source||a(this)},"toString")},function(t,e,r){"use strict";var n=r(7),o=r(10),i=Function.prototype,c=n&&Object.getOwnPropertyDescriptor,u=o(i,"name"),s=u&&"something"===function(){}.name,a=u&&(!n||n&&c(i,"name").configurable);t.exports={EXISTS:u,PROPER:s,CONFIGURABLE:a}},function(t,e,r){"use strict";var n=r(10),o=r(90),i=r(52),c=r(14);t.exports=function(t,e,r){for(var u=o(e),s=c.f,a=i.f,f=0;f<u.length;f++){var p=u[f];n(t,p)||r&&n(r,p)||s(t,p,a(e,p))}}},function(t,e,r){"use strict";var n=r(2),o=r(10),i=r(20),c=r(92).indexOf,u=r(42),s=n([].push);t.exports=function(t,e){var r,n=i(t),a=0,f=[];for(r in n)!o(u,r)&&o(n,r)&&s(f,r);for(;e.length>a;)o(n,r=e[a++])&&(~c(f,r)||s(f,r));return f}},function(t,e,r){"use strict";var n=r(95);t.exports=function(t){return n(t.length)}},function(t,e,r){"use strict";var n=r(3),o=r(0),i=/#|\.prototype\./,c=function(t,e){var r=s[u(t)];return r===f||r!==a&&(o(e)?n(e):!!e)},u=c.normalize=function(t){return String(t).replace(i,".").toLowerCase()},s=c.data={},a=c.NATIVE="N",f=c.POLYFILL="P";t.exports=c},function(t,e,r){"use strict";var n=r(11);t.exports=n("document","documentElement")},function(t,e,r){"use strict";var n=r(34),o=r(36),i=r(29),c=r(23),u=r(4)("iterator");t.exports=function(t){if(!i(t))return o(t,u)||o(t,"@@iterator")||c[n(t)]}},function(t,e,r){"use strict";var n=r(5),o=r(6),i=r(12),c=r(64),u=r(0),s=r(114),a=r(45),f=r(46),p=r(50),l=r(17),v=r(16),d=r(4),h=r(23),_=r(72),y=c.PROPER,g=c.CONFIGURABLE,m=_.IteratorPrototype,b=_.BUGGY_SAFARI_ITERATORS,x=d("iterator"),E=function(){return this};t.exports=function(t,e,r,c,d,_,w){s(r,e,c);var O,j,P,A=function(t){if(t===d&&L)return L;if(!b&&t&&t in T)return T[t];switch(t){case"keys":case"values":case"entries":return function(){return new r(this,t)}}return function(){return new r(this)}},S=e+" Iterator",C=!1,T=t.prototype,R=T[x]||T["@@iterator"]||d&&T[d],L=!b&&R||A(d),N="Array"===e&&T.entries||R;if(N&&(O=a(N.call(new t)))!==Object.prototype&&O.next&&(i||a(O)===m||(f?f(O,m):u(O[x])||v(O,x,E)),p(O,S,!0,!0),i&&(h[S]=E)),y&&"values"===d&&R&&"values"!==R.name&&(!i&&g?l(T,"name","values"):(C=!0,L=function(){return o(R,this)})),d)if(j={values:A("values"),keys:_?L:A("keys"),entries:A("entries")},w)for(P in j)!b&&!C&&P in T||v(T,P,j[P]);else n({target:e,proto:!0,forced:b||C},j);return i&&!w||T[x]===L||v(T,x,L,{name:d}),h[e]=L,j}},function(t,e,r){"use strict";var n,o,i,c=r(3),u=r(0),s=r(8),a=r(33),f=r(45),p=r(16),l=r(4),v=r(12),d=l("iterator"),h=!1;[].keys&&("next"in(i=[].keys())?(o=f(f(i)))!==Object.prototype&&(n=o):h=!0),!s(n)||c(function(){var t={};return n[d].call(t)!==t})?n={}:v&&(n=a(n)),u(n[d])||p(n,d,function(){return this}),t.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:h}},function(t,e,r){"use strict";
vendor: 1,687 bytes, line 5069
5069t.exports=function(t,e){return{value:t,done:e}}},function(t,e,r){"use strict";var n=r(1),o=r(21),i=r(27),c=function(t){return o.slice(0,t.length)===t};t.exports=c("Bun/")?"BUN":c("Cloudflare-Workers")?"CLOUDFLARE":c("Deno/")?"DENO":c("Node.js/")?"NODE":n.Bun&&"string"==typeof Bun.version?"BUN":n.Deno&&"object"==typeof Deno.version?"DENO":"process"===i(n.process)?"NODE":n.window&&n.document?"BROWSER":"REST"},function(t,e,r){"use strict";var n=r(13),o=r(122),i=r(29),c=r(4)("species");t.exports=function(t,e){var r,u=n(t).constructor;return void 0===u||i(r=n(u)[c])?e:o(r)}},function(t,e,r){"use strict";var n,o,i,c,u=r(1),s=r(124),a=r(47),f=r(0),p=r(10),l=r(3),v=r(69),d=r(125),h=r(39),_=r(126),y=r(77),g=r(51),m=u.setImmediate,b=u.clearImmediate,x=u.process,E=u.Dispatch,w=u.Function,O=u.MessageChannel,j=u.String,P=0,A={};l(function(){n=u.location});var S=function(t){if(p(A,t)){var e=A[t];delete A[t],e()}},C=function(t){return function(){S(t)}},T=function(t){S(t.data)},R=function(t){u.postMessage(j(t),n.protocol+"//"+n.host)};m&&b||(m=function(t){_(arguments.length,1);var e=f(t)?t:w(t),r=d(arguments,1);return A[++P]=function(){s(e,void 0,r)},o(P),P},b=function(t){delete A[t]},g?o=function(t){x.nextTick(C(t))}:E&&E.now?o=function(t){E.now(C(t))}:O&&!y?(c=(i=new O).port2,i.port1.onmessage=T,o=a(c.postMessage,c)):u.addEventListener&&f(u.postMessage)&&!u.importScripts&&n&&"file:"!==n.protocol&&!l(R)?(o=R,u.addEventListener("message",T,!1)):o="onreadystatechange"in h("script")?function(t){v.appendChild(h("script")).onreadystatechange=function(){v.removeChild(this),S(t)}}:function(t){setTimeout(C(t),0)}),t.exports={set:m,clear:b}},function(t,e,r){"use strict";var n=r(21);
5069t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},function(t,e,r){"use strict";var n=function(){this.head=null,this.tail=null};n.prototype={add:function(t){var e={item:t,next:null},r=this.tail;r?r.next=e:this.head=e,this.tail=e},get:function(){var t=this.head;if(t)return null===(this.head=t.next)&&(this.tail=null),t.item}},t.exports=n},function(t,e,r){"use strict";var n=r(13),o=r(8),i=r(15);t.exports=function(t,e){if(n(t),o(e)&&e.constructor===t)return e;var r=i.f(t);return(0,r.resolve)(e),r.promise}},function(t,e){t.exports=__WEBPACK_EXTERNAL_MODULE__80__},function(t,e,r){"use strict";r(82),r(112),r(115),r(117),r(138),r(139),r(140),r(141),r(142);var n=r(144);t.exports=n.Promise},function(t,e,r){"use strict";r(83)},function(t,e,r){"use strict";var n=r(5),o=r(30),i=r(45),c=r(46),u=r(65),s=r(33),a=r(17),f=r(19),p=r(103),l=r(104),v=r(22),d=r(111),h=r(4)("toStringTag"),_=Error,y=[].push,g=function(t,e){var r,n=o(m,this);c?r=c(new _,n?i(this):m):(r=n?this:s(m),a(r,h,"Error")),void 0!==e&&a(r,"message",d(e)),l(r,g,r.stack,1),arguments.length>2&&p(r,arguments[2]);var u=[];return v(t,y,{that:u}),a(r,"errors",u),r};c?c(g,_):u(g,_,{name:!0});var m=g.prototype=s(_.prototype,{constructor:f(1,g),message:f(1,""),name:f(1,"AggregateError")});n({global:!0,constructor:!0,arity:2},{AggregateError:g})},function(t,e){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e,r){"use strict";var n={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!n.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:n},function(t,e,r){"use strict";var n=r(2),o=r(3),i=r(27),c=Object,u=n("".split);t.exports=o(function(){return!c("z").propertyIsEnumerable(0)})?function(t){return"String"===i(t)?u(t,""):c(t)}:c},function(t,e,r){"use strict";var n=r(6),o=r(8),i=r(54),c=r(36),u=r(88),s=r(4),a=TypeError,f=s("toPrimitive");t.exports=function(t,e){if(!o(t)||i(t))return t;var r,s=c(t,f);if(s){if(void 0===e&&(e="default"),r=n(s,t,e),!o(r)||i(r))return r;throw new a("Can't convert object to primitive value")}return void 0===e&&(e="number"),u(t,e)}},function(t,e,r){"use strict";var n=r(6),o=r(0),i=r(8),c=TypeError;t.exports=function(t,e){var r,u;if("string"===e&&o(r=t.toString)&&!i(u=n(r,t)))return u;if(o(r=t.valueOf)&&!i(u=n(r,t)))return u;if("string"!==e&&o(r=t.toString)&&!i(u=n(r,t)))return u;throw new c("Can't convert object to primitive value")}},function(t,e,r){"use strict";var n=r(1),o=r(0),i=n.WeakMap;t.exports=o(i)&&/native code/.test(String(i))},function(t,e,r){"use strict";var n=r(11),o=r(2),i=r(91),c=r(96),u=r(13),s=o([].concat);t.exports=n("Reflect","ownKeys")||function(t){var e=i.f(u(t)),r=c.f;return r?s(e,r(t)):e}},function(t,e,r){"use strict";var n=r(66),o=r(44).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return n(t,o)}},function(t,e,r){"use strict";var n=r(20),o=r(93),i=r(67),c=function(t){return function(e,r,c){var u=n(e),s=i(u);if(0===s)return!t&&-1;var a,f=o(c,s);if(t&&r!=r){for(;s>f;)if((a=u[f++])!=a)return!0}else for(;s>f;f++)if((t||f in u)&&u[f]===r)return t||f||0;return!t&&-1}};t.exports={includes:c(!0),indexOf:c(!1)}},function(t,e,r){"use strict";var n=r(43),o=Math.max,i=Math.min;t.exports=function(t,e){var r=n(t);return r<0?o(r+e,0):i(r,e)}},function(t,e,r){"use strict";var n=Math.ceil,o=Math.floor;t.exports=Math.trunc||function(t){var e=+t;return(e>0?o:n)(e)}},function(t,e,r){"use strict";var n=r(43),o=Math.min;t.exports=function(t){var e=n(t);return e>0?o(e,9007199254740991):0}},function(t,e,r){"use strict";e.f=Object.getOwnPropertySymbols},function(t,e,r){"use strict";var n=r(3);t.exports=!n(function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})},function(t,e,r){"use strict";var n=r(2),o=r(9);t.exports=function(t,e,r){try{return n(o(Object.getOwnPropertyDescriptor(t,e)[r]))}catch(t){}}},function(t,e,r){"use strict";var n=r(100),o=String,i=TypeError;t.exports=function(t){if(n(t))return t;throw new i("Can't set "+o(t)+" as a prototype")}},function(t,e,r){"use strict";var n=r(8);t.exports=function(t){return n(t)||null===t}},function(t,e,r){"use strict";var n=r(7),o=r(62),i=r(14),c=r(13),u=r(20),s=r(102);e.f=n&&!o?Object.defineProperties:function(t,e){c(t);for(var r,n=u(e),o=s(e),a=o.length,f=0;a>f;)i.f(t,r=o[f++],n[r]);return t}},function(t,e,r){"use strict";var n=r(66),o=r(44);t.exports=Object.keys||function(t){return n(t,o)}},function(t,e,r){"use strict";var n=r(8),o=r(17);t.exports=function(t,e){n(e)&&"cause"in e&&o(t,"cause",e.cause)}},function(t,e,r){"use strict";var n=r(17),o=r(105),i=r(106),c=Error.captureStackTrace;t.exports=function(t,e,r,u){i&&(c?c(t,e):n(t,"stack",o(r,u)))}},function(t,e,r){"use strict";var n=r(2),o=Error,i=n("".replace),c=String(new o("zxcasd").stack),u=/\n\s*at [^:]*:[^\n]*/,s=u.test(c);t.exports=function(t,e){if(s&&"string"==typeof t&&!o.prepareStackTrace)for(;e--;)t=i(t,u,"");return t}},function(t,e,r){"use strict";var n=r(3),o=r(19);t.exports=!n(function(){var t=new Error("a");return!("stack"in t)||(Object.defineProperty(t,"stack",o(1,7)),7!==t.stack)})},function(t,e,r){"use strict";var n=r(27),o=r(2);t.exports=function(t){if("Function"===n(t))return o(t)}},function(t,e,r){"use strict";
vendor: 3,407 bytes, line 5069
5069var n=r(4),o=r(23),i=n("iterator"),c=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||c[i]===t)}},function(t,e,r){"use strict";var n=r(6),o=r(9),i=r(13),c=r(31),u=r(70),s=TypeError;t.exports=function(t,e){var r=arguments.length<2?u(t):e;if(o(r))return i(n(r,t));throw new s(c(t)+" is not iterable")}},function(t,e,r){"use strict";var n=r(6),o=r(13),i=r(36);t.exports=function(t,e,r){var c,u;o(t);try{if(!(c=i(t,"return"))){if("throw"===e)throw r;return r}c=n(c,t)}catch(t){u=!0,c=t}if("throw"===e)throw r;if(u)throw c;return o(c),r}},function(t,e,r){"use strict";var n=r(49);t.exports=function(t,e){return void 0===t?arguments.length<2?"":e:n(t)}},function(t,e,r){"use strict";var n=r(20),o=r(113),i=r(23),c=r(32),u=r(14).f,s=r(71),a=r(73),f=r(12),p=r(7),l=c.set,v=c.getterFor("Array Iterator");t.exports=s(Array,"Array",function(t,e){l(this,{type:"Array Iterator",target:n(t),index:0,kind:e})},function(){var t=v(this),e=t.target,r=t.index++;if(!e||r>=e.length)return t.target=null,a(void 0,!0);switch(t.kind){case"keys":return a(r,!1);case"values":return a(e[r],!1)}return a([r,e[r]],!1)},"values");var d=i.Arguments=i.Array;if(o("keys"),o("values"),o("entries"),!f&&p&&"values"!==d.name)try{u(d,"name",{value:"values"})}catch(t){}},function(t,e,r){"use strict";var n=r(4),o=r(33),i=r(14).f,c=n("unscopables"),u=Array.prototype;void 0===u[c]&&i(u,c,{configurable:!0,value:o(null)}),t.exports=function(t){u[c][t]=!0}},function(t,e,r){"use strict";var n=r(72).IteratorPrototype,o=r(33),i=r(19),c=r(50),u=r(23),s=function(){return this};t.exports=function(t,e,r,a){var f=e+" Iterator";return t.prototype=o(n,{next:i(+!a,r)}),c(t,f,!1,!0),u[f]=s,t}},function(t,e,r){"use strict";var n=r(48),o=r(16),i=r(116);n||o(Object.prototype,"toString",i,{unsafe:!0})},function(t,e,r){"use strict";var n=r(48),o=r(34);t.exports=n?{}.toString:function(){return"[object "+o(this)+"]"}},function(t,e,r){"use strict";r(118),r(132),r(134),r(135),r(136),r(137)},function(t,e,r){"use strict";var n,o,i,c=r(5),u=r(12),s=r(51),a=r(1),f=r(6),p=r(16),l=r(46),v=r(50),d=r(119),h=r(9),_=r(0),y=r(8),g=r(121),m=r(75),b=r(76).set,x=r(127),E=r(131),w=r(24),O=r(78),j=r(32),P=r(18),A=r(25),S=r(15),C=A.CONSTRUCTOR,T=A.REJECTION_EVENT,R=A.SUBCLASSING,L=j.getterFor("Promise"),N=j.set,k=P&&P.prototype,M=P,D=k,I=a.TypeError,U=a.document,B=a.process,W=S.f,F=W,K=!!(U&&U.createEvent&&a.dispatchEvent),q=function(t){var e;return!(!y(t)||!_(e=t.then))&&e},X=function(t,e){var r,n,o,i=e.value,c=1===e.state,u=c?t.ok:t.fail,s=t.resolve,a=t.reject,p=t.domain;try{u?(c||(2===e.rejection&&z(e),e.rejection=1),!0===u?r=i:(p&&p.enter(),r=u(i),p&&(p.exit(),o=!0)),r===t.promise?a(new I("Promise-chain cycle")):(n=q(r))?f(n,r,s,a):s(r)):a(i)}catch(t){p&&!o&&p.exit(),a(t)}},G=function(t,e){t.notified||(t.notified=!0,x(function(){for(var r,n=t.reactions;r=n.get();)X(r,t);t.notified=!1,e&&!t.rejection&&Q(t)}))},H=function(t,e,r){var n,o;K?((n=U.createEvent("Event")).promise=e,n.reason=r,n.initEvent(t,!1,!0),a.dispatchEvent(n)):n={promise:e,reason:r},!T&&(o=a["on"+t])?o(n):"unhandledrejection"===t&&E("Unhandled promise rejection",r)},Q=function(t){f(b,a,function(){var e,r=t.facade,n=t.value;if(J(t)&&(e=w(function(){s?B.emit("unhandledRejection",n,r):H("unhandledrejection",r,n)}),t.rejection=s||J(t)?2:1,e.error))throw e.value})},J=function(t){return 1!==t.rejection&&!t.parent},z=function(t){f(b,a,function(){var e=t.facade;
vendor: 8,720 bytes, line 5069
5069s?B.emit("rejectionHandled",e):H("rejectionhandled",e,t.value)})},Y=function(t,e,r){return function(n){t(e,n,r)}},$=function(t,e,r){t.done||(t.done=!0,r&&(t=r),t.value=e,t.state=2,G(t,!0))},V=function(t,e,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===e)throw new I("Promise can't be resolved itself");var n=q(e);n?x(function(){var r={done:!1};try{f(n,e,Y(V,r,t),Y($,r,t))}catch(e){$(r,e,t)}}):(t.value=e,t.state=1,G(t,!1))}catch(e){$({done:!1},e,t)}}};if(C&&(D=(M=function(t){g(this,D),h(t),f(n,this);var e=L(this);try{t(Y(V,e),Y($,e))}catch(t){$(e,t)}}).prototype,(n=function(t){N(this,{type:"Promise",done:!1,notified:!1,parent:!1,reactions:new O,rejection:!1,state:0,value:null})}).prototype=p(D,"then",function(t,e){var r=L(this),n=W(m(this,M));return r.parent=!0,n.ok=!_(t)||t,n.fail=_(e)&&e,n.domain=s?B.domain:void 0,0===r.state?r.reactions.add(n):x(function(){X(n,r)}),n.promise}),o=function(){var t=new n,e=L(t);this.promise=t,this.resolve=Y(V,e),this.reject=Y($,e)},S.f=W=function(t){return t===M||void 0===t?new o(t):F(t)},!u&&_(P)&&k!==Object.prototype)){i=k.then,R||p(k,"then",function(t,e){var r=this;return new M(function(t,e){f(i,r,t,e)}).then(t,e)},{unsafe:!0});try{delete k.constructor}catch(t){}l&&l(k,D)}c({global:!0,constructor:!0,wrap:!0,forced:C},{Promise:M}),v(M,"Promise",!1,!0),d("Promise")},function(t,e,r){"use strict";var n=r(11),o=r(120),i=r(4),c=r(7),u=i("species");t.exports=function(t){var e=n(t);c&&e&&!e[u]&&o(e,u,{configurable:!0,get:function(){return this}})}},function(t,e,r){"use strict";var n=r(63),o=r(14);t.exports=function(t,e,r){return r.get&&n(r.get,e,{getter:!0}),r.set&&n(r.set,e,{setter:!0}),o.f(t,e,r)}},function(t,e,r){"use strict";var n=r(30),o=TypeError;t.exports=function(t,e){if(n(e,t))return t;throw new o("Incorrect invocation")}},function(t,e,r){"use strict";var n=r(123),o=r(31),i=TypeError;t.exports=function(t){if(n(t))return t;throw new i(o(t)+" is not a constructor")}},function(t,e,r){"use strict";var n=r(2),o=r(3),i=r(0),c=r(34),u=r(11),s=r(40),a=function(){},f=u("Reflect","construct"),p=/^\s*(?:class|function)\b/,l=n(p.exec),v=!p.test(a),d=function(t){if(!i(t))return!1;try{return f(a,[],t),!0}catch(t){return!1}},h=function(t){if(!i(t))return!1;switch(c(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return v||!!l(p,s(t))}catch(t){return!0}};h.sham=!0,t.exports=!f||o(function(){var t;return d(d.call)||!d(Object)||!d(function(){t=!0})||t})?h:d},function(t,e,r){"use strict";var n=r(26),o=Function.prototype,i=o.apply,c=o.call;t.exports="object"==typeof Reflect&&Reflect.apply||(n?c.bind(i):function(){return c.apply(i,arguments)})},function(t,e,r){"use strict";var n=r(2);t.exports=n([].slice)},function(t,e,r){"use strict";var n=TypeError;t.exports=function(t,e){if(t<e)throw new n("Not enough arguments");return t}},function(t,e,r){"use strict";var n,o,i,c,u,s=r(1),a=r(128),f=r(47),p=r(76).set,l=r(78),v=r(77),d=r(129),h=r(130),_=r(51),y=s.MutationObserver||s.WebKitMutationObserver,g=s.document,m=s.process,b=s.Promise,x=a("queueMicrotask");if(!x){var E=new l,w=function(){var t,e;for(_&&(t=m.domain)&&t.exit();e=E.get();)try{e()}catch(t){throw E.head&&n(),t}t&&t.enter()};v||_||h||!y||!g?!d&&b&&b.resolve?((c=b.resolve(void 0)).constructor=b,u=f(c.then,c),n=function(){u(w)}):_?n=function(){m.nextTick(w)}:(p=f(p,s),n=function(){p(w)}):(o=!0,i=g.createTextNode(""),new y(w).observe(i,{characterData:!0}),n=function(){i.data=o=!o}),x=function(t){E.head||n(),E.add(t)}}t.exports=x},function(t,e,r){"use strict";var n=r(1),o=r(7),i=Object.getOwnPropertyDescriptor;t.exports=function(t){if(!o)return n[t];var e=i(n,t);return e&&e.value}},function(t,e,r){"use strict";var n=r(21);t.exports=/ipad|iphone|ipod/i.test(n)&&"undefined"!=typeof Pebble},function(t,e,r){"use strict";var n=r(21);t.exports=/web0s(?!.*chrome)/i.test(n)},function(t,e,r){"use strict";t.exports=function(t,e){try{1===arguments.length?console.error(t):console.error(t,e)}catch(t){}}},function(t,e,r){"use strict";var n=r(5),o=r(6),i=r(9),c=r(15),u=r(24),s=r(22);n({target:"Promise",stat:!0,forced:r(35)},{all:function(t){var e=this,r=c.f(e),n=r.resolve,a=r.reject,f=u(function(){var r=i(e.resolve),c=[],u=0,f=1;s(t,function(t){var i=u++,s=!1;f++,o(r,e,t).then(function(t){s||(s=!0,c[i]=t,--f||n(c))},a)}),--f||n(c)});return f.error&&a(f.value),r.promise}})},function(t,e,r){"use strict";var n=r(4)("iterator"),o=!1;try{var i=0,c={next:function(){return{done:!!i++}},return:function(){o=!0}};c[n]=function(){return this},Array.from(c,function(){throw 2})}catch(t){}t.exports=function(t,e){try{if(!e&&!o)return!1}catch(t){return!1}var r=!1;try{var i={};i[n]=function(){return{next:function(){return{done:r=!0}}}},t(i)}catch(t){}return r}},function(t,e,r){"use strict";var n=r(5),o=r(12),i=r(25).CONSTRUCTOR,c=r(18),u=r(11),s=r(0),a=r(16),f=c&&c.prototype;if(n({target:"Promise",proto:!0,forced:i,real:!0},{catch:function(t){return this.then(void 0,t)}}),!o&&s(c)){var p=u("Promise").prototype.catch;f.catch!==p&&a(f,"catch",p,{unsafe:!0})}},function(t,e,r){"use strict";var n=r(5),o=r(6),i=r(9),c=r(15),u=r(24),s=r(22);n({target:"Promise",stat:!0,forced:r(35)},{race:function(t){var e=this,r=c.f(e),n=r.reject,a=u(function(){var c=i(e.resolve);s(t,function(t){o(c,e,t).then(r.resolve,n)})});return a.error&&n(a.value),r.promise}})},function(t,e,r){"use strict";var n=r(5),o=r(15);n({target:"Promise",stat:!0,forced:r(25).CONSTRUCTOR},{reject:function(t){var e=o.f(this);return(0,e.reject)(t),e.promise}})},function(t,e,r){"use strict";var n=r(5),o=r(11),i=r(12),c=r(18),u=r(25).CONSTRUCTOR,s=r(79),a=o("Promise"),f=i&&!u;n({target:"Promise",stat:!0,forced:i||u},{resolve:function(t){return s(f&&this===a?c:this,t)}})},function(t,e,r){"use strict";var n=r(5),o=r(6),i=r(9),c=r(15),u=r(24),s=r(22);n({target:"Promise",stat:!0,forced:r(35)},{allSettled:function(t){var e=this,r=c.f(e),n=r.resolve,a=r.reject,f=u(function(){var r=i(e.resolve),c=[],u=0,a=1;s(t,function(t){var i=u++,s=!1;a++,o(r,e,t).then(function(t){s||(s=!0,c[i]={status:"fulfilled",value:t},--a||n(c))},function(t){s||(s=!0,c[i]={status:"rejected",reason:t},--a||n(c))})}),--a||n(c)});return f.error&&a(f.value),r.promise}})},function(t,e,r){"use strict";var n=r(5),o=r(6),i=r(9),c=r(11),u=r(15),s=r(24),a=r(22),f=r(35);n({target:"Promise",stat:!0,forced:f},{any:function(t){var e=this,r=c("AggregateError"),n=u.f(e),f=n.resolve,p=n.reject,l=s(function(){var n=i(e.resolve),c=[],u=0,s=1,l=!1;a(t,function(t){var i=u++,a=!1;s++,o(n,e,t).then(function(t){a||l||(l=!0,f(t))},function(t){a||l||(a=!0,c[i]=t,--s||p(new r(c,"No one promise resolved")))})}),--s||p(new r(c,"No one promise resolved"))});return l.error&&p(l.value),n.promise}})},function(t,e,r){"use strict";var n=r(5),o=r(15);n({target:"Promise",stat:!0},{withResolvers:function(){var t=o.f(this);return{promise:t.promise,resolve:t.resolve,reject:t.reject}}})},function(t,e,r){"use strict";var n=r(5),o=r(12),i=r(18),c=r(3),u=r(11),s=r(0),a=r(75),f=r(79),p=r(16),l=i&&i.prototype;if(n({target:"Promise",proto:!0,real:!0,forced:!!i&&c(function(){l.finally.call({then:function(){}},function(){})})},{finally:function(t){var e=a(this,u("Promise")),r=s(t);return this.then(r?function(r){return f(e,t()).then(function(){return r})}:t,r?function(r){return f(e,t()).then(function(){throw r})}:t)}}),!o&&s(i)){var v=u("Promise").prototype.finally;l.finally!==v&&p(l,"finally",v,{unsafe:!0})}},function(t,e,r){"use strict";var n=r(143).charAt,o=r(49),i=r(32),c=r(71),u=r(73),s=i.set,a=i.getterFor("String Iterator");c(String,"String",function(t){s(this,{type:"String Iterator",string:o(t),index:0})},function(){var t,e=a(this),r=e.string,o=e.index;return o>=r.length?u(void 0,!0):(t=n(r,o),e.index+=t.length,u(t,!1))})},function(t,e,r){"use strict";var n=r(2),o=r(43),i=r(49),c=r(28),u=n("".charAt),s=n("".charCodeAt),a=n("".slice),f=function(t){return function(e,r){var n,f,p=i(c(e)),l=o(r),v=p.length;return l<0||l>=v?t?"":void 0:(n=s(p,l))<55296||n>56319||l+1===v||(f=s(p,l+1))<56320||f>57343?t?u(p,l):n:t?a(p,l,l+2):f-56320+(n-55296<<10)+65536}};t.exports={codeAt:f(!1),charAt:f(!0)}},function(t,e,r){"use strict";var n=r(1);t.exports=n},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__(80),__webpack_require__(146),__webpack_require__(147),__webpack_require__(148),__webpack_require__(149),__webpack_require__(150),__webpack_require__(151),__webpack_require__(152)],__WEBPACK_AMD_DEFINE_RESULT__=function(declare,_WidgetBase,domStyle,domAttr,domConstruct,lang,html,LinkPane){"use strict";return declare("HTMLSnippet.widget.HTMLSnippet",[_WidgetBase],{contenttype:"html",contents:"",contentsPath:"",oncl
5069ickmf:"",documentation:"",refreshOnContextChange:!1,refreshOnContextUpdate:!1,encloseHTMLWithDiv:!0,_objectChangeHandler:null,contextObj:null,postCreate:function(){console.debug(this.id+".postCreate"),this._setupEvents(),this.refreshOnContextChange||this.executeCode()},executeCode:function(){console.debug(this.id+".executeCode");var t=""!==this.contentsPath;switch(this.contenttype){case"html":if(t)new LinkPane({preload:!0,loadingMessage:"",href:this.contentsPath,onDownloadError:function(){console.log("Error loading html path")}}).placeAt(this.domNode.id).startup();else if(this.encloseHTMLWithDiv){domStyle.set(this.domNode,{height:"auto",width:"100%",outline:0}),domAttr.set(this.domNode,"style",this.style);var e=domConstruct.create("div",{innerHTML:this.contents});domConstruct.place(e,this.domNode,"only")}else html.set(this.domNode,this.contents);break;case"js":case"jsjQuery":if(t){var r=document.createElement("script"),n=+new Date;r.type="text/javascript",r.src=this.contentsPath+"?v="+n.toString(),domConstruct.place(r,this.domNode,"only")}else"jsjQuery"===this.contenttype?this._evalJQueryCode():this.evalJs()}},update:function(t,e){console.debug(this.id+".update"),this.contextObj=t,this.refreshOnContextChange&&(this.executeCode(),this.refreshOnContextUpdate&&(null!==this._objectChangeHandler&&this.unsubscribe(this._objectChangeHandler),t&&(this._objectChangeHandler=this.subscribe({guid:t.getGuid(),callback:lang.hitch(this,function(){this.executeCode()})})))),this._executeCallback(e,"update")},_setupEvents:function(){console.debug(this.id+"._setupEvents"),this.onclickmf&&this.connect(this.domNode,"click",this._executeMicroflow)},_executeMicroflow:function(){if(console.debug(this.id+"._executeMicroflow"),this.onclickmf){var t={actionname:this.onclickmf};null!==this.contextObj&&(t.applyto="selection",t.guids=[this.contextObj.getGuid()]),mx.data.action({params:t,callback:function(t){console.debug(this.id+" (executed microflow successfully).")},error:function(t){console.error(this.id+t)}})}},evalJs:function(){console.debug(this.id+".evalJS");try{eval(this.contents+"\r\n//# sourceURL="+this.id+".js")}catch(t){this._handleError(t)}},_evalJQueryCode:function(){console.debug(this.id+"._evalJQueryCode"),__webpack_require__.e(2).then(function(){var __WEBPACK_AMD_REQUIRE_ARRAY__=[__webpack_require__(153)];lang.hitch(this,function(jQuery){try{(function(snippetCode){var jqueryIdRegex1=/window.\jQuery/g,jqueryIdRegex2=/window.\$/g;snippetCode=snippetCode.replace(jqueryIdRegex1,"jQuery"),snippetCode=snippetCode.replace(jqueryIdRegex2,"$"),snippetCode="var jQuery, $; jQuery = $ = this.jquery;"+snippetCode+"console.debug('your code snippet is evaluated and executed against JQuery version:'+ this.jquery.fn.jquery);",eval(snippetCode)}).call({jquery:jQuery,widget:this},this.contents)}catch(t){this._handleError(t)}}).apply(null,__WEBPACK_AMD_REQUIRE_ARRAY__)}.bind(this)).catch(__webpack_require__.oe)},_handleError:function(t){console.debug(this.id+"._handleError"),domConstruct.place('<div class="alert alert-danger">Error while evaluating javascript input: '+t+"</div>",this.domNode,"only")},_executeCallback:function(t,e){console.debug(this.id+"._executeCallback"+(e?" from "+e:"")),t&&"function"==typeof t&&t()}})}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),void 0===__WEBPACK_AMD_DEFINE_RESULT__||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)},function(t,e){t.exports=__WEBPACK_EXTERNAL_MODULE__146__},function(t,e){t.exports=__WEBPACK_EXTERNAL_MODULE__147__},function(t,e){t.exports=__WEBPACK_EXTERNAL_MODULE__148__},function(t,e){t.exports=__WEBPACK_EXTERNAL_MODULE__149__},function(t,e){t.exports=__WEBPACK_EXTERNAL_MODULE__150__},function(t,e){t.exports=__WEBPACK_EXTERNAL_MODULE__151__},function(t,e){t.exports=__WEBPACK_EXTERNAL_MODULE__152__},,,function(t,e,r){r(81),t.exports=r(156)},function(t,e,r){var n,o;n=[r(80),r(145)],void 0===(o=function(t,e){"use strict";return t("HTMLSnippet.widget.HTMLSnippetContext",[e])}.apply(e,n))||(t.exports=o)}])}); 5070}, 5071'MicroflowTimer/widget/MicroflowTimer':function(){ 5072define([ 5073 "dojo/_base/declare", 5074 "mxui/widget/_WidgetBase", 5075 "dojo/_base/lang", 5076 "dojo/_base/array" 5077], function(declare, _WidgetBase, lang, dojoArray) { 5078 "use strict"; 5079 5080 return declare("MicroflowTimer.widget.MicroflowTimer", [_WidgetBase], { 5081 5082 // Parameters configured in the Modeler. 5083 interval: 30000, 5084 once: false, 5085 startatonce: true, 5086 callEvent: "", // "callMicroflow" | "callNanoflow" 5087 microflow: "", 5088 nanoflow: null, 5089 firstIntervalAttr: null, 5090 intervalAttr: null, 5091 timerStatusAttr: null, 5092 5093 // Internal variables. Non-primitives created in the prototype are shared between all widget instances. 5094 _handles: null, 5095 _contextObj: null, 5096 _timer: null, 5097 _timeout: null, 5098 _timerStarted: false, 5099 5100 _flowRunning: false, 5101 5102 postCreate: function() { 5103 this._handles = []; 5104 5105 if(!(this.microflow && this.callEvent === "callMicroflow" || this.nanoflow.nanoflow && this.callEvent === "callNanoflow")) { 5106 mx.ui.error("No action specified for " + this.callEvent); 5107 } 5108 }, 5109 5110 update: function (obj, callback) { 5111 console.debug(this.id + ".update"); 5112 5113 this._contextObj = obj; 5114 this._resetSubscriptions(); 5115 5116 //changes the interval to the attribute value, if set 5117 if (this._contextObj && this.intervalAttr) { 5118 this.interval = this._contextObj.get(this.intervalAttr); 5119 } 5120 5121 if (!this._timerStarted) { 5122 this._runTimer(); 5123 } 5124 5125 this._executeCallback(callback, "update"); 5126 }, 5127 5128 resize: function(box) {}, 5129 5130 uninitialize: function() { 5131 this._stopTimer(); 5132 }, 5133 5134 _checkTimerStatus: function() { 5135 console.debug(this.id + "._checkStatus"); 5136 5137 var running, newInterval; 5138 5139 //both optional attributes are used 5140 if (this.intervalAttr && this.timerStatusAttr) { 5141 //get the running state 5142 running = this._contextObj.get(this.timerStatusAttr); 5143 //change the interval if it was set in the attribute 5144 newInterval = this._contextObj.get(this.intervalAttr); 5145 if (this.interval !== newInterval) { 5146 this.interval = newInterval; 5147 //stop and start the timer if it's running and will keep running 5148 if (running && this._timerStarted) { 5149 this._intervalChange(newInterval); 5150 } 5151 } 5152 5153 this._timerStatusChange(running); 5154 5155 //just timer status is used 5156 } else if (this.timerStatusAttr) { 5157 running = this._contextObj.get(this.timerStatusAttr); 5158 this._timerStatusChange(running); 5159 5160 //just interval is used 5161 } else if (this.intervalAttr) { 5162 newInterval = this._contextObj.get(this.intervalAttr); 5163 if (this.interval !== newInterval) { 5164 this.interval = newInterval; 5165 this._intervalChange(newInterval); 5166 } 5167 } 5168 5169 }, 5170 5171 _timerStatusChange: function (running) { 5172 if (running !== this._timerStarted) { 5173 if (running) { 5174 this._runTimer(); 5175 } else { 5176 this._stopTimer(); 5177 } 5178 } 5179 }, 5180 5181 //Called when the optional timer interval attribute is changed 5182 _intervalChange: function (newInterval) { 5183 console.debug(this.id + "._intervalChange"); 5184 5185 this.interval = newInterval; 5186 5187 if (this._timerStarted) { 5188 this._stopTimer(); 5189 this._runTimer(); 5190 } 5191 }, 5192 5193 _runTimer: function() { 5194 console.debug(this.id + "._runTimer", this.interval); 5195 if (this.callEvent !== "" && this._contextObj) { 5196 this._timerStarted = true; 5197 5198 //if there's a first interval, get and use that first, then use the regular interval 5199 if (this.firstIntervalAttr) { 5200 var firstInterval = this._contextObj.get(this.firstIntervalAttr); 5201 5202 if (this.once) { 5203 this._timeout = setTimeout(lang.hitch(this, this._executeEvent), firstInterval); 5204 } else { 5205 if (this.startatonce) { 5206 this._executeEvent(); 5207 } 5208 this._timeout = setTimeout(lang.hitch(this, function() { 5209 this._executeEvent(); 5210 this._timer = setInterval(lang.hitch(this, this._executeEvent), this.interval); 5211 }), firstInterval); 5212 } 5213 //otherwise just use the regulat interval 5214 } else { 5215 if (this.once) { 5216 this._timeout = setTimeout(lang.hitch(this, this._executeEvent), this.interval); 5217 } else { 5218 if (this.startatonce) { 5219 this._executeEvent(); 5220 } 5221 this._timer = setInterval(lang.hitch(this, this._executeEvent), this.interval); 5222 } 5223 } 5224 } 5225 }, 5226 5227 _stopTimer: function() { 5228 console.debug(this.id + "._stopTimer"); 5229 this._timerStarted = false;
5230 5231 if (this._timer !== null) { 5232 console.debug(this.id + "._stopTimer timer cleared"); 5233 clearInterval(this._timer); 5234 this._timer = null; 5235 } 5236 if (this._timeout !== null) { 5237 console.debug(this.id + "._stopTimer timeout cleared"); 5238 clearTimeout(this._timeout); 5239 this._timeout = null; 5240 } 5241 }, 5242 5243 _executeEvent: function() { 5244 if (this._flowRunning === true) { 5245 return; 5246 } 5247 5248 this._flowRunning = true; 5249 5250 if(this.callEvent === "callMicroflow" && this.microflow) { 5251 this._execMf(); 5252 } else if (this.callEvent === "callNanoflow" && this.nanoflow.nanoflow){ 5253 this._executeNanoFlow(); 5254 } else { 5255 return; 5256 } 5257 }, 5258 5259 _execMf: function() { 5260 console.debug(this.id + "._execMf"); 5261 if (!this._contextObj) { 5262 return; 5263 } 5264 5265 if (this.microflow) { 5266 var mfObject = { 5267 params: { 5268 actionname: this.microflow, 5269 applyto: "selection", 5270 guids: [this._contextObj.getGuid()] 5271 }, 5272 callback: lang.hitch(this, function(result) { 5273 if (!result) { 5274 console.debug(this.id + "._execMf callback, stopping timer"); 5275 this._stopTimer(); 5276 } 5277 this._flowRunning = false; 5278 }), 5279 error: lang.hitch(this, function(error) { 5280 console.error(this.id + ": An error ocurred while executing microflow: ", error); 5281 this._flowRunning = false; 5282 }) 5283 }; 5284 5285 if (!mx.version || mx.version && parseInt(mx.version.split(".")[0]) < 6) { 5286 mfObject.store = { 5287 caller: this.mxform 5288 }; 5289 } else { 5290 mfObject.origin = this.mxform; 5291 } 5292 5293 mx.data.action(mfObject, this); 5294 } 5295 }, 5296 5297 _executeNanoFlow: function() { 5298 if (this.nanoflow.nanoflow && this.mxcontext) { 5299 mx.data.callNanoflow({ 5300 nanoflow: this.nanoflow, 5301 origin: this.mxform, 5302 context: this.mxcontext, 5303 callback: lang.hitch(this, function(result) { 5304 if (!result) { 5305 console.debug(this.id + "._executeNanoFlow callback, stopping timer"); 5306 this._stopTimer(); 5307 } 5308 this._flowRunning = false; 5309 }), 5310 error: lang.hitch(this, function(error) { 5311 console.error(this.id + ": An error ocurred while executing nanoflow: ", error); 5312 this._flowRunning = false; 5313 }) 5314 }); 5315 } 5316 }, 5317 5318 // Reset subscriptions. 5319 _resetSubscriptions: function() { 5320 this.unsubscribeAll(); 5321 5322 // When a mendix object exists create subscribtions. 5323 if (this._contextObj && this.timerStatusAttr) { 5324 this.subscribe({ 5325 guid: this._contextObj.getGuid(), 5326 callback: lang.hitch(this, function(guid) { 5327 this._checkTimerStatus(); 5328 }) 5329 }); 5330 5331 this.subscribe({ 5332 guid: this._contextObj.getGuid(), 5333 attr: this.timerStatusAttr, 5334 callback: lang.hitch(this, function(guid, attr, attrValue) { 5335 this._checkTimerStatus(); 5336 }) 5337 }); 5338 5339 this.subscribe({ 5340 guid: this._contextObj.getGuid(), 5341 attr: this.intervalAttr, 5342 callback: lang.hitch(this, function(guid, attr, attrValue) { 5343 this._intervalChange(); 5344 }) 5345 }); 5346 } 5347 }, 5348 5349 _executeCallback: function (cb, from) { 5350 console.debug(this.id + "._executeCallback" + (from ? " from " + from : "")); 5351 if (cb && typeof cb === "function") { 5352 cb(); 5353 } 5354 } 5355 }); 5356}); 5357 5358require(["MicroflowTimer/widget/MicroflowTimer"]); 5359 5360},
5361'url:RadioButtonList/widget/template/RadioButtonList.html':"<div class=\"RadioButtonList mx-radiobuttons form-group\" data-dojo-attach-point=\"radioButtonContainer\">\r\n <label class=\"control-label\" id=\"${uniqueid}-label\" data-dojo-attach-point=\"radioButtonLabel\"></label>\r\n\t<div class=\"mx-radiogroup\" aria-labelledby=\"${uniqueid}-label\" role=\"radiogroup\" data-dojo-attach-point=\"inputNodes\"></div>\r\n</div>\r\n", 5362'*now':function(r){r(['dojo/i18n!*preload*widgets/nls/widgets*["ar","ca","cs","da","de","el","en-gb","en-us","es-es","fi-fi","fr-fr","he-il","hu","it-it","ja-jp","ko-kr","nl-nl","nb","pl","pt-br","pt-pt","ru","sk","sl","sv","th","tr","zh-tw","zh-cn","ROOT"]']);} 5363, 5364'*noref':1}}); 5365define("widgets/widgets", [ 5366"RadioButtonList/widget/AttrRadioButtonList", 5367"RadioButtonList/widget/AssocRadioButtonList", 5368"HTMLSnippet/widget/HTMLSnippet", 5369"HTMLSnippet/widget/HTMLSnippetContext", 5370"MicroflowTimer/widget/MicroflowTimer" 5371], function() {});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.