ace editor dependencies
frdel committed
Jul 2, 2025 at 20:52 UTC
85ed9c6e550f7719af8902b399a8b90b36ff94af
5 files changed
+28
-21441
webui/vendor/ace/ace.js
+3
-21441
@@ -1,21446 +1,8 @@
1
-/* ***** BEGIN LICENSE BLOCK *****
2
- * Distributed under the BSD license:
3
- *
4
- * Copyright (c) 2010, Ajax.org B.V.
5
- * All rights reserved.
6
- *
7
- * Redistribution and use in source and binary forms, with or without
8
- * modification, are permitted provided that the following conditions are met:
9
- * * Redistributions of source code must retain the above copyright
10
- * notice, this list of conditions and the following disclaimer.
11
- * * Redistributions in binary form must reproduce the above copyright
12
- * notice, this list of conditions and the following disclaimer in the
13
- * documentation and/or other materials provided with the distribution.
14
- * * Neither the name of Ajax.org B.V. nor the
15
- * names of its contributors may be used to endorse or promote products
16
- * derived from this software without specific prior written permission.
17
- *
18
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
- * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
22
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
- *
29
- * ***** END LICENSE BLOCK ***** */
30
-
31
-/**
32
- * Define a module along with a payload
33
- * @param module a name for the payload
34
- * @param payload a function to call with (require, exports, module) params
35
- */
36
-
37
-(function() {
38
-
39
-var ACE_NAMESPACE = "ace";
40
-
41
-var global = (function() { return this; })();
42
-if (!global && typeof window != "undefined") global = window; // strict mode
43
-
44
-
45
-if (!ACE_NAMESPACE && typeof requirejs !== "undefined")
46
- return;
47
-
48
-
49
-var define = function(module, deps, payload) {
50
- if (typeof module !== "string") {
51
- if (define.original)
52
- define.original.apply(this, arguments);
53
- else {
54
- console.error("dropping module because define wasn\'t a string.");
55
- console.trace();
56
- }
57
- return;
58
- }
59
- if (arguments.length == 2)
60
- payload = deps;
61
- if (!define.modules[module]) {
62
- define.payloads[module] = payload;
63
- define.modules[module] = null;
64
- }
65
-};
66
-
67
-define.modules = {};
68
-define.payloads = {};
69
-
70
-/**
71
- * Get at functionality define()ed using the function above
72
- */
73
-var _require = function(parentId, module, callback) {
74
- if (typeof module === "string") {
75
- var payload = lookup(parentId, module);
76
- if (payload != undefined) {
77
- callback && callback();
78
- return payload;
79
- }
80
- } else if (Object.prototype.toString.call(module) === "[object Array]") {
81
- var params = [];
82
- for (var i = 0, l = module.length; i < l; ++i) {
83
- var dep = lookup(parentId, module[i]);
84
- if (dep == undefined && require.original)
85
- return;
86
- params.push(dep);
87
- }
88
- return callback && callback.apply(null, params) || true;
89
- }
90
-};
91
-
92
-var require = function(module, callback) {
93
- var packagedModule = _require("", module, callback);
94
- if (packagedModule == undefined && require.original)
95
- return require.original.apply(this, arguments);
96
- return packagedModule;
97
-};
98
-
99
-var normalizeModule = function(parentId, moduleName) {
100
- // normalize plugin requires
101
- if (moduleName.indexOf("!") !== -1) {
102
- var chunks = moduleName.split("!");
103
- return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]);
104
- }
105
- // normalize relative requires
106
- if (moduleName.charAt(0) == ".") {
107
- var base = parentId.split("/").slice(0, -1).join("/");
108
- moduleName = base + "/" + moduleName;
109
-
110
- while(moduleName.indexOf(".") !== -1 && previous != moduleName) {
111
- var previous = moduleName;
112
- moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "");
113
- }
114
- }
115
- return moduleName;
116
-};
117
-
118
-/**
119
- * Internal function to lookup moduleNames and resolve them by calling the
120
- * definition function if needed.
121
- */
122
-var lookup = function(parentId, moduleName) {
123
- moduleName = normalizeModule(parentId, moduleName);
124
-
125
- var module = define.modules[moduleName];
126
- if (!module) {
127
- module = define.payloads[moduleName];
128
- if (typeof module === 'function') {
129
- var exports = {};
130
- var mod = {
131
- id: moduleName,
132
- uri: '',
133
- exports: exports,
134
- packaged: true
135
- };
136
-
137
- var req = function(module, callback) {
138
- return _require(moduleName, module, callback);
139
- };
140
-
141
- var returnValue = module(req, exports, mod);
142
- exports = returnValue || mod.exports;
143
- define.modules[moduleName] = exports;
144
- delete define.payloads[moduleName];
145
- }
146
- module = define.modules[moduleName] = exports || module;
147
- }
148
- return module;
149
-};
150
-
151
-function exportAce(ns) {
152
- var root = global;
153
- if (ns) {
154
- if (!global[ns])
155
- global[ns] = {};
156
- root = global[ns];
157
- }
158
-
159
- if (!root.define || !root.define.packaged) {
160
- define.original = root.define;
161
- root.define = define;
162
- root.define.packaged = true;
163
- }
164
-
165
- if (!root.require || !root.require.packaged) {
166
- require.original = root.require;
167
- root.require = require;
168
- root.require.packaged = true;
169
- }
170
-}
171
-
172
-exportAce(ACE_NAMESPACE);
173
-
174
-})();
175
-
176
-ace.define("ace/lib/es6-shim",["require","exports","module"], function(require, exports, module){function defineProp(obj, name, val) {
177
- Object.defineProperty(obj, name, {
178
- value: val,
179
- enumerable: false,
180
- writable: true,
181
- configurable: true
182
- });
183
-}
184
-if (!String.prototype.startsWith) {
185
- defineProp(String.prototype, "startsWith", function (searchString, position) {
186
- position = position || 0;
187
- return this.lastIndexOf(searchString, position) === position;
188
- });
189
-}
190
-if (!String.prototype.endsWith) {
191
- defineProp(String.prototype, "endsWith", function (searchString, position) {
192
- var subjectString = this;
193
- if (position === undefined || position > subjectString.length) {
194
- position = subjectString.length;
195
- }
196
- position -= searchString.length;
197
- var lastIndex = subjectString.indexOf(searchString, position);
198
- return lastIndex !== -1 && lastIndex === position;
199
- });
200
-}
201
-if (!String.prototype.repeat) {
202
- defineProp(String.prototype, "repeat", function (count) {
203
- var result = "";
204
- var string = this;
205
- while (count > 0) {
206
- if (count & 1)
207
- result += string;
208
- if ((count >>= 1))
209
- string += string;
210
- }
211
- return result;
212
- });
213
-}
214
-if (!String.prototype.includes) {
215
- defineProp(String.prototype, "includes", function (str, position) {
216
- return this.indexOf(str, position) != -1;
217
- });
218
-}
219
-if (!Object.assign) {
220
- Object.assign = function (target) {
221
- if (target === undefined || target === null) {
222
- throw new TypeError("Cannot convert undefined or null to object");
223
- }
224
- var output = Object(target);
225
- for (var index = 1; index < arguments.length; index++) {
226
- var source = arguments[index];
227
- if (source !== undefined && source !== null) {
228
- Object.keys(source).forEach(function (key) {
229
- output[key] = source[key];
230
- });
231
- }
232
- }
233
- return output;
234
- };
235
-}
236
-if (!Object.values) {
237
- Object.values = function (o) {
238
- return Object.keys(o).map(function (k) {
239
- return o[k];
240
- });
241
- };
242
-}
243
-if (!Array.prototype.find) {
244
- defineProp(Array.prototype, "find", function (predicate) {
245
- var len = this.length;
246
- var thisArg = arguments[1];
247
- for (var k = 0; k < len; k++) {
248
- var kValue = this[k];
249
- if (predicate.call(thisArg, kValue, k, this)) {
250
- return kValue;
251
- }
252
- }
253
- });
254
-}
255
-if (!Array.prototype.findIndex) {
256
- defineProp(Array.prototype, "findIndex", function (predicate) {
257
- var len = this.length;
258
- var thisArg = arguments[1];
259
- for (var k = 0; k < len; k++) {
260
- var kValue = this[k];
261
- if (predicate.call(thisArg, kValue, k, this)) {
262
- return k;
263
- }
264
- }
265
- });
266
-}
267
-if (!Array.prototype.includes) {
268
- defineProp(Array.prototype, "includes", function (item, position) {
269
- return this.indexOf(item, position) != -1;
270
- });
271
-}
272
-if (!Array.prototype.fill) {
273
- defineProp(Array.prototype, "fill", function (value) {
274
- var O = this;
275
- var len = O.length >>> 0;
276
- var start = arguments[1];
277
- var relativeStart = start >> 0;
278
- var k = relativeStart < 0
279
- ? Math.max(len + relativeStart, 0)
280
- : Math.min(relativeStart, len);
281
- var end = arguments[2];
282
- var relativeEnd = end === undefined ? len : end >> 0;
283
- var final = relativeEnd < 0
284
- ? Math.max(len + relativeEnd, 0)
285
- : Math.min(relativeEnd, len);
286
- while (k < final) {
287
- O[k] = value;
288
- k++;
289
- }
290
- return O;
291
- });
292
-}
293
-if (!Array.of) {
294
- defineProp(Array, "of", function () {
295
- return Array.prototype.slice.call(arguments);
296
- });
297
-}
298
-
299
-});
300
-
301
-ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/es6-shim"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st:
302
-"use strict";
303
-require("./es6-shim");
304
-
305
-});
306
-
307
-ace.define("ace/lib/deep_copy",["require","exports","module"], function(require, exports, module){exports.deepCopy = function deepCopy(obj) {
308
- if (typeof obj !== "object" || !obj)
309
- return obj;
310
- var copy;
311
- if (Array.isArray(obj)) {
312
- copy = [];
313
- for (var key = 0; key < obj.length; key++) {
314
- copy[key] = deepCopy(obj[key]);
315
- }
316
- return copy;
317
- }
318
- if (Object.prototype.toString.call(obj) !== "[object Object]")
319
- return obj;
320
- copy = {};
321
- for (var key in obj)
322
- copy[key] = deepCopy(obj[key]);
323
- return copy;
324
-};
325
-
326
-});
327
-
328
-ace.define("ace/lib/lang",["require","exports","module","ace/lib/deep_copy"], function(require, exports, module){"use strict";
329
-exports.last = function (a) {
330
- return a[a.length - 1];
331
-};
332
-exports.stringReverse = function (string) {
333
- return string.split("").reverse().join("");
334
-};
335
-exports.stringRepeat = function (string, count) {
336
- var result = '';
337
- while (count > 0) {
338
- if (count & 1)
339
- result += string;
340
- if (count >>= 1)
341
- string += string;
342
- }
343
- return result;
344
-};
345
-var trimBeginRegexp = /^\s\s*/;
346
-var trimEndRegexp = /\s\s*$/;
347
-exports.stringTrimLeft = function (string) {
348
- return string.replace(trimBeginRegexp, '');
349
-};
350
-exports.stringTrimRight = function (string) {
351
- return string.replace(trimEndRegexp, '');
352
-};
353
-exports.copyObject = function (obj) {
354
- var copy = {};
355
- for (var key in obj) {
356
- copy[key] = obj[key];
357
- }
358
- return copy;
359
-};
360
-exports.copyArray = function (array) {
361
- var copy = [];
362
- for (var i = 0, l = array.length; i < l; i++) {
363
- if (array[i] && typeof array[i] == "object")
364
- copy[i] = this.copyObject(array[i]);
365
- else
366
- copy[i] = array[i];
367
- }
368
- return copy;
369
-};
370
-exports.deepCopy = require("./deep_copy").deepCopy;
371
-exports.arrayToMap = function (arr) {
372
- var map = {};
373
- for (var i = 0; i < arr.length; i++) {
374
- map[arr[i]] = 1;
375
- }
376
- return map;
377
-};
378
-exports.createMap = function (props) {
379
- var map = Object.create(null);
380
- for (var i in props) {
381
- map[i] = props[i];
382
- }
383
- return map;
384
-};
385
-exports.arrayRemove = function (array, value) {
386
- for (var i = 0; i <= array.length; i++) {
387
- if (value === array[i]) {
388
- array.splice(i, 1);
389
- }
390
- }
391
-};
392
-exports.escapeRegExp = function (str) {
393
- return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
394
-};
395
-exports.escapeHTML = function (str) {
396
- return ("" + str).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/</g, "<");
397
-};
398
-exports.getMatchOffsets = function (string, regExp) {
399
- var matches = [];
400
- string.replace(regExp, function (str) {
401
- matches.push({
402
- offset: arguments[arguments.length - 2],
403
- length: str.length
404
- });
405
- });
406
- return matches;
407
-};
408
-exports.deferredCall = function (fcn) {
409
- var timer = null;
410
- var callback = function () {
411
- timer = null;
412
- fcn();
413
- };
414
- var deferred = function (timeout) {
415
- deferred.cancel();
416
- timer = setTimeout(callback, timeout || 0);
417
- return deferred;
418
- };
419
- deferred.schedule = deferred;
420
- deferred.call = function () {
421
- this.cancel();
422
- fcn();
423
- return deferred;
424
- };
425
- deferred.cancel = function () {
426
- clearTimeout(timer);
427
- timer = null;
428
- return deferred;
429
- };
430
- deferred.isPending = function () {
431
- return timer;
432
- };
433
- return deferred;
434
-};
435
-exports.delayedCall = function (fcn, defaultTimeout) {
436
- var timer = null;
437
- var callback = function () {
438
- timer = null;
439
- fcn();
440
- };
441
- var _self = function (timeout) {
442
- if (timer == null)
443
- timer = setTimeout(callback, timeout || defaultTimeout);
444
- };
445
- _self.delay = function (timeout) {
446
- timer && clearTimeout(timer);
447
- timer = setTimeout(callback, timeout || defaultTimeout);
448
- };
449
- _self.schedule = _self;
450
- _self.call = function () {
451
- this.cancel();
452
- fcn();
453
- };
454
- _self.cancel = function () {
455
- timer && clearTimeout(timer);
456
- timer = null;
457
- };
458
- _self.isPending = function () {
459
- return timer;
460
- };
461
- return _self;
462
-};
463
-exports.supportsLookbehind = function () {
464
- try {
465
- new RegExp('(?<=.)');
466
- }
467
- catch (e) {
468
- return false;
469
- }
470
- return true;
471
-};
472
-exports.skipEmptyMatch = function (line, last, supportsUnicodeFlag) {
473
- return supportsUnicodeFlag && line.codePointAt(last) > 0xffff ? 2 : 1;
474
-};
475
-
476
-});
477
-
478
-ace.define("ace/lib/useragent",["require","exports","module"], function(require, exports, module){"use strict";
479
-exports.OS = {
480
- LINUX: "LINUX",
481
- MAC: "MAC",
482
- WINDOWS: "WINDOWS"
483
-};
484
-exports.getOS = function () {
485
- if (exports.isMac) {
486
- return exports.OS.MAC;
487
- }
488
- else if (exports.isLinux) {
489
- return exports.OS.LINUX;
490
- }
491
- else {
492
- return exports.OS.WINDOWS;
493
- }
494
-};
495
-var _navigator = typeof navigator == "object" ? navigator : {};
496
-var os = (/mac|win|linux/i.exec(_navigator.platform) || ["other"])[0].toLowerCase();
497
-var ua = _navigator.userAgent || "";
498
-var appName = _navigator.appName || "";
499
-exports.isWin = (os == "win");
500
-exports.isMac = (os == "mac");
501
-exports.isLinux = (os == "linux");
502
-exports.isIE =
503
- (appName == "Microsoft Internet Explorer" || appName.indexOf("MSAppHost") >= 0)
504
- ? parseFloat((ua.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1])
505
- : parseFloat((ua.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1]); // for ie
506
-exports.isOldIE = exports.isIE && exports.isIE < 9;
507
-exports.isGecko = exports.isMozilla = ua.match(/ Gecko\/\d+/);
508
-exports.isOpera = typeof opera == "object" && Object.prototype.toString.call(window["opera"]) == "[object Opera]";
509
-exports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined;
510
-exports.isChrome = parseFloat(ua.split(" Chrome/")[1]) || undefined;
511
-exports.isSafari = parseFloat(ua.split(" Safari/")[1]) && !exports.isChrome || undefined;
512
-exports.isEdge = parseFloat(ua.split(" Edge/")[1]) || undefined;
513
-exports.isAIR = ua.indexOf("AdobeAIR") >= 0;
514
-exports.isAndroid = ua.indexOf("Android") >= 0;
515
-exports.isChromeOS = ua.indexOf(" CrOS ") >= 0;
516
-exports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window["MSStream"];
517
-if (exports.isIOS)
518
- exports.isMac = true;
519
-exports.isMobile = exports.isIOS || exports.isAndroid;
520
-
521
-});
522
-
523
-ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"], function(require, exports, module){"use strict";
524
-var useragent = require("./useragent");
525
-var XHTML_NS = "http://www.w3.org/1999/xhtml";
526
-exports.buildDom = function buildDom(arr, parent, refs) {
527
- if (typeof arr == "string" && arr) {
528
- var txt = document.createTextNode(arr);
529
- if (parent)
530
- parent.appendChild(txt);
531
- return txt;
532
- }
533
- if (!Array.isArray(arr)) {
534
- if (arr && arr.appendChild && parent)
535
- parent.appendChild(arr);
536
- return arr;
537
- }
538
- if (typeof arr[0] != "string" || !arr[0]) {
539
- var els = [];
540
- for (var i = 0; i < arr.length; i++) {
541
- var ch = buildDom(arr[i], parent, refs);
542
- ch && els.push(ch);
543
- }
544
- return els;
545
- }
546
- var el = document.createElement(arr[0]);
547
- var options = arr[1];
548
- var childIndex = 1;
549
- if (options && typeof options == "object" && !Array.isArray(options))
550
- childIndex = 2;
551
- for (var i = childIndex; i < arr.length; i++)
552
- buildDom(arr[i], el, refs);
553
- if (childIndex == 2) {
554
- Object.keys(options).forEach(function (n) {
555
- var val = options[n];
556
- if (n === "class") {
557
- el.className = Array.isArray(val) ? val.join(" ") : val;
558
- }
559
- else if (typeof val == "function" || n == "value" || n[0] == "$") {
560
- el[n] = val;
561
- }
562
- else if (n === "ref") {
563
- if (refs)
564
- refs[val] = el;
565
- }
566
- else if (n === "style") {
567
- if (typeof val == "string")
568
- el.style.cssText = val;
569
- }
570
- else if (val != null) {
571
- el.setAttribute(n, val);
572
- }
573
- });
574
- }
575
- if (parent)
576
- parent.appendChild(el);
577
- return el;
578
-};
579
-exports.getDocumentHead = function (doc) {
580
- if (!doc)
581
- doc = document;
582
- return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement;
583
-};
584
-exports.createElement = function (tag, ns) {
585
- return document.createElementNS ?
586
- document.createElementNS(ns || XHTML_NS, tag) :
587
- document.createElement(tag);
588
-};
589
-exports.removeChildren = function (element) {
590
- element.innerHTML = "";
591
-};
592
-exports.createTextNode = function (textContent, element) {
593
- var doc = element ? element.ownerDocument : document;
594
- return doc.createTextNode(textContent);
595
-};
596
-exports.createFragment = function (element) {
597
- var doc = element ? element.ownerDocument : document;
598
- return doc.createDocumentFragment();
599
-};
600
-exports.hasCssClass = function (el, name) {
601
- var classes = (el.className + "").split(/\s+/g);
602
- return classes.indexOf(name) !== -1;
603
-};
604
-exports.addCssClass = function (el, name) {
605
- if (!exports.hasCssClass(el, name)) {
606
- el.className += " " + name;
607
- }
608
-};
609
-exports.removeCssClass = function (el, name) {
610
- var classes = el.className.split(/\s+/g);
611
- while (true) {
612
- var index = classes.indexOf(name);
613
- if (index == -1) {
614
- break;
615
- }
616
- classes.splice(index, 1);
617
- }
618
- el.className = classes.join(" ");
619
-};
620
-exports.toggleCssClass = function (el, name) {
621
- var classes = el.className.split(/\s+/g), add = true;
622
- while (true) {
623
- var index = classes.indexOf(name);
624
- if (index == -1) {
625
- break;
626
- }
627
- add = false;
628
- classes.splice(index, 1);
629
- }
630
- if (add)
631
- classes.push(name);
632
- el.className = classes.join(" ");
633
- return add;
634
-};
635
-exports.setCssClass = function (node, className, include) {
636
- if (include) {
637
- exports.addCssClass(node, className);
638
- }
639
- else {
640
- exports.removeCssClass(node, className);
641
- }
642
-};
643
-exports.hasCssString = function (id, doc) {
644
- var index = 0, sheets;
645
- doc = doc || document;
646
- if ((sheets = doc.querySelectorAll("style"))) {
647
- while (index < sheets.length) {
648
- if (sheets[index++].id === id) {
649
- return true;
650
- }
651
- }
652
- }
653
-};
654
-exports.removeElementById = function (id, doc) {
655
- doc = doc || document;
656
- if (doc.getElementById(id)) {
657
- doc.getElementById(id).remove();
658
- }
659
-};
660
-var strictCSP;
661
-var cssCache = [];
662
-exports.useStrictCSP = function (value) {
663
- strictCSP = value;
664
- if (value == false)
665
- insertPendingStyles();
666
- else if (!cssCache)
667
- cssCache = [];
668
-};
669
-function insertPendingStyles() {
670
- var cache = cssCache;
671
- cssCache = null;
672
- cache && cache.forEach(function (item) {
673
- importCssString(item[0], item[1]);
674
- });
675
-}
676
-function importCssString(cssText, id, target) {
677
- if (typeof document == "undefined")
678
- return;
679
- if (cssCache) {
680
- if (target) {
681
- insertPendingStyles();
682
- }
683
- else if (target === false) {
684
- return cssCache.push([cssText, id]);
685
- }
686
- }
687
- if (strictCSP)
688
- return;
689
- var container = target;
690
- if (!target || !target.getRootNode) {
691
- container = document;
692
- }
693
- else {
694
- container = target.getRootNode();
695
- if (!container || container == target)
696
- container = document;
697
- }
698
- var doc = container.ownerDocument || container;
699
- if (id && exports.hasCssString(id, container))
700
- return null;
701
- if (id)
702
- cssText += "\n/*# sourceURL=ace/css/" + id + " */";
703
- var style = exports.createElement("style");
704
- style.appendChild(doc.createTextNode(cssText));
705
- if (id)
706
- style.id = id;
707
- if (container == doc)
708
- container = exports.getDocumentHead(doc);
709
- container.insertBefore(style, container.firstChild);
710
-}
711
-exports.importCssString = importCssString;
712
-exports.importCssStylsheet = function (uri, doc) {
713
- exports.buildDom(["link", { rel: "stylesheet", href: uri }], exports.getDocumentHead(doc));
714
-};
715
-exports.scrollbarWidth = function (doc) {
716
- var inner = exports.createElement("ace_inner");
717
- inner.style.width = "100%";
718
- inner.style.minWidth = "0px";
719
- inner.style.height = "200px";
720
- inner.style.display = "block";
721
- var outer = exports.createElement("ace_outer");
722
- var style = outer.style;
723
- style.position = "absolute";
724
- style.left = "-10000px";
725
- style.overflow = "hidden";
726
- style.width = "200px";
727
- style.minWidth = "0px";
728
- style.height = "150px";
729
- style.display = "block";
730
- outer.appendChild(inner);
731
- var body = (doc && doc.documentElement) || (document && document.documentElement);
732
- if (!body)
733
- return 0;
734
- body.appendChild(outer);
735
- var noScrollbar = inner.offsetWidth;
736
- style.overflow = "scroll";
737
- var withScrollbar = inner.offsetWidth;
738
- if (noScrollbar === withScrollbar) {
739
- withScrollbar = outer.clientWidth;
740
- }
741
- body.removeChild(outer);
742
- return noScrollbar - withScrollbar;
743
-};
744
-exports.computedStyle = function (element, style) {
745
- return window.getComputedStyle(element, "") || {};
746
-};
747
-exports.setStyle = function (styles, property, value) {
748
- if (styles[property] !== value) {
749
- styles[property] = value;
750
- }
751
-};
752
-exports.HAS_CSS_ANIMATION = false;
753
-exports.HAS_CSS_TRANSFORMS = false;
754
-exports.HI_DPI = useragent.isWin
755
- ? typeof window !== "undefined" && window.devicePixelRatio >= 1.5
756
- : true;
757
-if (useragent.isChromeOS)
758
- exports.HI_DPI = false;
759
-if (typeof document !== "undefined") {
760
- var div = document.createElement("div");
761
- if (exports.HI_DPI && div.style.transform !== undefined)
762
- exports.HAS_CSS_TRANSFORMS = true;
763
- if (!useragent.isEdge && typeof div.style.animationName !== "undefined")
764
- exports.HAS_CSS_ANIMATION = true;
765
- div = null;
766
-}
767
-if (exports.HAS_CSS_TRANSFORMS) {
768
- exports.translate = function (element, tx, ty) {
769
- element.style.transform = "translate(" + Math.round(tx) + "px, " + Math.round(ty) + "px)";
770
- };
771
-}
772
-else {
773
- exports.translate = function (element, tx, ty) {
774
- element.style.top = Math.round(ty) + "px";
775
- element.style.left = Math.round(tx) + "px";
776
- };
777
-}
778
-
779
-});
780
-
781
-ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"], function(require, exports, module){/*
782
- * based on code from:
783
- *
784
- * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.
785
- * Available via the MIT or new BSD license.
786
- * see: http://github.com/jrburke/requirejs for details
787
- */
788
-"use strict";
789
-var dom = require("./dom");
790
-exports.get = function (url, callback) {
791
- var xhr = new XMLHttpRequest();
792
- xhr.open('GET', url, true);
793
- xhr.onreadystatechange = function () {
794
- if (xhr.readyState === 4) {
795
- callback(xhr.responseText);
796
- }
797
- };
798
- xhr.send(null);
799
-};
800
-exports.loadScript = function (path, callback) {
801
- var head = dom.getDocumentHead();
802
- var s = document.createElement('script');
803
- s.src = path;
804
- head.appendChild(s);
805
- s.onload = s.onreadystatechange = function (_, isAbort) {
806
- if (isAbort || !s.readyState || s.readyState == "loaded" || s.readyState == "complete") {
807
- s = s.onload = s.onreadystatechange = null;
808
- if (!isAbort)
809
- callback();
810
- }
811
- };
812
-};
813
-exports.qualifyURL = function (url) {
814
- var a = document.createElement('a');
815
- a.href = url;
816
- return a.href;
817
-};
818
-
819
-});
820
-
821
-ace.define("ace/lib/oop",["require","exports","module"], function(require, exports, module){"use strict";
822
-exports.inherits = function (ctor, superCtor) {
823
- ctor.super_ = superCtor;
824
- ctor.prototype = Object.create(superCtor.prototype, {
825
- constructor: {
826
- value: ctor,
827
- enumerable: false,
828
- writable: true,
829
- configurable: true
830
- }
831
- });
832
-};
833
-exports.mixin = function (obj, mixin) {
834
- for (var key in mixin) {
835
- obj[key] = mixin[key];
836
- }
837
- return obj;
838
-};
839
-exports.implement = function (proto, mixin) {
840
- exports.mixin(proto, mixin);
841
-};
842
-
843
-});
844
-
845
-ace.define("ace/lib/event_emitter",["require","exports","module"], function(require, exports, module){"use strict";
846
-var EventEmitter = {};
847
-var stopPropagation = function () { this.propagationStopped = true; };
848
-var preventDefault = function () { this.defaultPrevented = true; };
849
-EventEmitter._emit =
850
- EventEmitter._dispatchEvent = function (eventName, e) {
851
- this._eventRegistry || (this._eventRegistry = {});
852
- this._defaultHandlers || (this._defaultHandlers = {});
853
- var listeners = this._eventRegistry[eventName] || [];
854
- var defaultHandler = this._defaultHandlers[eventName];
855
- if (!listeners.length && !defaultHandler)
856
- return;
857
- if (typeof e != "object" || !e)
858
- e = {};
859
- if (!e.type)
860
- e.type = eventName;
861
- if (!e.stopPropagation)
862
- e.stopPropagation = stopPropagation;
863
- if (!e.preventDefault)
864
- e.preventDefault = preventDefault;
865
- listeners = listeners.slice();
866
- for (var i = 0; i < listeners.length; i++) {
867
- listeners[i](e, this);
868
- if (e.propagationStopped)
869
- break;
870
- }
871
- if (defaultHandler && !e.defaultPrevented)
872
- return defaultHandler(e, this);
873
- };
874
-EventEmitter._signal = function (eventName, e) {
875
- var listeners = (this._eventRegistry || {})[eventName];
876
- if (!listeners)
877
- return;
878
- listeners = listeners.slice();
879
- for (var i = 0; i < listeners.length; i++)
880
- listeners[i](e, this);
881
-};
882
-EventEmitter.once = function (eventName, callback) {
883
- var _self = this;
884
- this.on(eventName, function newCallback() {
885
- _self.off(eventName, newCallback);
886
- callback.apply(null, arguments);
887
- });
888
- if (!callback) {
889
- return new Promise(function (resolve) {
890
- callback = resolve;
891
- });
892
- }
893
-};
894
-EventEmitter.setDefaultHandler = function (eventName, callback) {
895
- var handlers = this._defaultHandlers;
896
- if (!handlers)
897
- handlers = this._defaultHandlers = { _disabled_: {} };
898
- if (handlers[eventName]) {
899
- var old = handlers[eventName];
900
- var disabled = handlers._disabled_[eventName];
901
- if (!disabled)
902
- handlers._disabled_[eventName] = disabled = [];
903
- disabled.push(old);
904
- var i = disabled.indexOf(callback);
905
- if (i != -1)
906
- disabled.splice(i, 1);
907
- }
908
- handlers[eventName] = callback;
909
-};
910
-EventEmitter.removeDefaultHandler = function (eventName, callback) {
911
- var handlers = this._defaultHandlers;
912
- if (!handlers)
913
- return;
914
- var disabled = handlers._disabled_[eventName];
915
- if (handlers[eventName] == callback) {
916
- if (disabled)
917
- this.setDefaultHandler(eventName, disabled.pop());
918
- }
919
- else if (disabled) {
920
- var i = disabled.indexOf(callback);
921
- if (i != -1)
922
- disabled.splice(i, 1);
923
- }
924
-};
925
-EventEmitter.on =
926
- EventEmitter.addEventListener = function (eventName, callback, capturing) {
927
- this._eventRegistry = this._eventRegistry || {};
928
- var listeners = this._eventRegistry[eventName];
929
- if (!listeners)
930
- listeners = this._eventRegistry[eventName] = [];
931
- if (listeners.indexOf(callback) == -1)
932
- listeners[capturing ? "unshift" : "push"](callback);
933
- return callback;
934
- };
935
-EventEmitter.off =
936
- EventEmitter.removeListener =
937
- EventEmitter.removeEventListener = function (eventName, callback) {
938
- this._eventRegistry = this._eventRegistry || {};
939
- var listeners = this._eventRegistry[eventName];
940
- if (!listeners)
941
- return;
942
- var index = listeners.indexOf(callback);
943
- if (index !== -1)
944
- listeners.splice(index, 1);
945
- };
946
-EventEmitter.removeAllListeners = function (eventName) {
947
- if (!eventName)
948
- this._eventRegistry = this._defaultHandlers = undefined;
949
- if (this._eventRegistry)
950
- this._eventRegistry[eventName] = undefined;
951
- if (this._defaultHandlers)
952
- this._defaultHandlers[eventName] = undefined;
953
-};
954
-exports.EventEmitter = EventEmitter;
955
-
956
-});
957
-
958
-ace.define("ace/lib/report_error",["require","exports","module"], function(require, exports, module){exports.reportError = function reportError(msg, data) {
959
- var e = new Error(msg);
960
- e["data"] = data;
961
- if (typeof console == "object" && console.error)
962
- console.error(e);
963
- setTimeout(function () { throw e; });
964
-};
965
-
966
-});
967
-
968
-ace.define("ace/lib/default_english_messages",["require","exports","module"], function(require, exports, module){var defaultEnglishMessages = {
969
- "autocomplete.popup.aria-roledescription": "Autocomplete suggestions",
970
- "autocomplete.popup.aria-label": "Autocomplete suggestions",
971
- "autocomplete.popup.item.aria-roledescription": "item",
972
- "autocomplete.loading": "Loading...",
973
- "editor.scroller.aria-roledescription": "editor",
974
- "editor.scroller.aria-label": "Editor content, press Enter to start editing, press Escape to exit",
975
- "editor.gutter.aria-roledescription": "editor",
976
- "editor.gutter.aria-label": "Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit",
977
- "error-marker.good-state": "Looks good!",
978
- "prompt.recently-used": "Recently used",
979
- "prompt.other-commands": "Other commands",
980
- "prompt.no-matching-commands": "No matching commands",
981
- "search-box.find.placeholder": "Search for",
982
- "search-box.find-all.text": "All",
983
- "search-box.replace.placeholder": "Replace with",
984
- "search-box.replace-next.text": "Replace",
985
- "search-box.replace-all.text": "All",
986
- "search-box.toggle-replace.title": "Toggle Replace mode",
987
- "search-box.toggle-regexp.title": "RegExp Search",
988
- "search-box.toggle-case.title": "CaseSensitive Search",
989
- "search-box.toggle-whole-word.title": "Whole Word Search",
990
- "search-box.toggle-in-selection.title": "Search In Selection",
991
- "search-box.search-counter": "$0 of $1",
992
- "text-input.aria-roledescription": "editor",
993
- "text-input.aria-label": "Cursor at row $0",
994
- "gutter.code-folding.range.aria-label": "Toggle code folding, rows $0 through $1",
995
- "gutter.code-folding.closed.aria-label": "Toggle code folding, rows $0 through $1",
996
- "gutter.code-folding.open.aria-label": "Toggle code folding, row $0",
997
- "gutter.code-folding.closed.title": "Unfold code",
998
- "gutter.code-folding.open.title": "Fold code",
999
- "gutter.annotation.aria-label.error": "Error, read annotations row $0",
1000
- "gutter.annotation.aria-label.warning": "Warning, read annotations row $0",
1001
- "gutter.annotation.aria-label.info": "Info, read annotations row $0",
1002
- "inline-fold.closed.title": "Unfold code",
1003
- "gutter-tooltip.aria-label.error.singular": "error",
1004
- "gutter-tooltip.aria-label.error.plural": "errors",
1005
- "gutter-tooltip.aria-label.warning.singular": "warning",
1006
- "gutter-tooltip.aria-label.warning.plural": "warnings",
1007
- "gutter-tooltip.aria-label.info.singular": "information message",
1008
- "gutter-tooltip.aria-label.info.plural": "information messages",
1009
- "gutter.annotation.aria-label.security": "Security finding, read annotations row $0",
1010
- "gutter.annotation.aria-label.hint": "Suggestion, read annotations row $0",
1011
- "gutter-tooltip.aria-label.security.singular": "security finding",
1012
- "gutter-tooltip.aria-label.security.plural": "security findings",
1013
- "gutter-tooltip.aria-label.hint.singular": "suggestion",
1014
- "gutter-tooltip.aria-label.hint.plural": "suggestions"
1015
-};
1016
-exports.defaultEnglishMessages = defaultEnglishMessages;
1017
-
1018
-});
1019
-
1020
-ace.define("ace/lib/app_config",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/report_error","ace/lib/default_english_messages"], function(require, exports, module){"no use strict";
1021
-var oop = require("./oop");
1022
-var EventEmitter = require("./event_emitter").EventEmitter;
1023
-var reportError = require("./report_error").reportError;
1024
-var defaultEnglishMessages = require("./default_english_messages").defaultEnglishMessages;
1025
-var optionsProvider = {
1026
- setOptions: function (optList) {
1027
- Object.keys(optList).forEach(function (key) {
1028
- this.setOption(key, optList[key]);
1029
- }, this);
1030
- },
1031
- getOptions: function (optionNames) {
1032
- var result = {};
1033
- if (!optionNames) {
1034
- var options = this.$options;
1035
- optionNames = Object.keys(options).filter(function (key) {
1036
- return !options[key].hidden;
1037
- });
1038
- }
1039
- else if (!Array.isArray(optionNames)) {
1040
- result = optionNames;
1041
- optionNames = Object.keys(result);
1042
- }
1043
- optionNames.forEach(function (key) {
1044
- result[key] = this.getOption(key);
1045
- }, this);
1046
- return result;
1047
- },
1048
- setOption: function (name, value) {
1049
- if (this["$" + name] === value)
1050
- return;
1051
- var opt = this.$options[name];
1052
- if (!opt) {
1053
- return warn('misspelled option "' + name + '"');
1054
- }
1055
- if (opt.forwardTo)
1056
- return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value);
1057
- if (!opt.handlesSet)
1058
- this["$" + name] = value;
1059
- if (opt && opt.set)
1060
- opt.set.call(this, value);
1061
- },
1062
- getOption: function (name) {
1063
- var opt = this.$options[name];
1064
- if (!opt) {
1065
- return warn('misspelled option "' + name + '"');
1066
- }
1067
- if (opt.forwardTo)
1068
- return this[opt.forwardTo] && this[opt.forwardTo].getOption(name);
1069
- return opt && opt.get ? opt.get.call(this) : this["$" + name];
1070
- }
1071
-};
1072
-function warn(message) {
1073
- if (typeof console != "undefined" && console.warn)
1074
- console.warn.apply(console, arguments);
1075
-}
1076
-var messages;
1077
-var nlsPlaceholders;
1078
-var AppConfig = /** @class */ (function () {
1079
- function AppConfig() {
1080
- this.$defaultOptions = {};
1081
- messages = defaultEnglishMessages;
1082
- nlsPlaceholders = "dollarSigns";
1083
- }
1084
- AppConfig.prototype.defineOptions = function (obj, path, options) {
1085
- if (!obj.$options)
1086
- this.$defaultOptions[path] = obj.$options = {};
1087
- Object.keys(options).forEach(function (key) {
1088
- var opt = options[key];
1089
- if (typeof opt == "string")
1090
- opt = { forwardTo: opt };
1091
- opt.name || (opt.name = key);
1092
- obj.$options[opt.name] = opt;
1093
- if ("initialValue" in opt)
1094
- obj["$" + opt.name] = opt.initialValue;
1095
- });
1096
- oop.implement(obj, optionsProvider);
1097
- return this;
1098
- };
1099
- AppConfig.prototype.resetOptions = function (obj) {
1100
- Object.keys(obj.$options).forEach(function (key) {
1101
- var opt = obj.$options[key];
1102
- if ("value" in opt)
1103
- obj.setOption(key, opt.value);
1104
- });
1105
- };
1106
- AppConfig.prototype.setDefaultValue = function (path, name, value) {
1107
- if (!path) {
1108
- for (path in this.$defaultOptions)
1109
- if (this.$defaultOptions[path][name])
1110
- break;
1111
- if (!this.$defaultOptions[path][name])
1112
- return false;
1113
- }
1114
- var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {});
1115
- if (opts[name]) {
1116
- if (opts.forwardTo)
1117
- this.setDefaultValue(opts.forwardTo, name, value);
1118
- else
1119
- opts[name].value = value;
1120
- }
1121
- };
1122
- AppConfig.prototype.setDefaultValues = function (path, optionHash) {
1123
- Object.keys(optionHash).forEach(function (key) {
1124
- this.setDefaultValue(path, key, optionHash[key]);
1125
- }, this);
1126
- };
1127
- AppConfig.prototype.setMessages = function (value, options) {
1128
- messages = value;
1129
- if (options && options.placeholders) {
1130
- nlsPlaceholders = options.placeholders;
1131
- }
1132
- };
1133
- AppConfig.prototype.nls = function (key, defaultString, params) {
1134
- if (!messages[key]) {
1135
- warn("No message found for the key '" + key + "' in the provided messages, trying to find a translation for the default string '" + defaultString + "'.");
1136
- if (!messages[defaultString]) {
1137
- warn("No message found for the default string '" + defaultString + "' in the provided messages. Falling back to the default English message.");
1138
- }
1139
- }
1140
- var translated = messages[key] || messages[defaultString] || defaultString;
1141
- if (params) {
1142
- if (nlsPlaceholders === "dollarSigns") {
1143
- translated = translated.replace(/\$(\$|[\d]+)/g, function (_, dollarMatch) {
1144
- if (dollarMatch == "$")
1145
- return "$";
1146
- return params[dollarMatch];
1147
- });
1148
- }
1149
- if (nlsPlaceholders === "curlyBrackets") {
1150
- translated = translated.replace(/\{([^\}]+)\}/g, function (_, curlyBracketMatch) {
1151
- return params[curlyBracketMatch];
1152
- });
1153
- }
1154
- }
1155
- return translated;
1156
- };
1157
- return AppConfig;
1158
-}());
1159
-AppConfig.prototype.warn = warn;
1160
-AppConfig.prototype.reportError = reportError;
1161
-oop.implement(AppConfig.prototype, EventEmitter);
1162
-exports.AppConfig = AppConfig;
1163
-
1164
-});
1165
-
1166
-ace.define("ace/theme/textmate-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-tm .ace_gutter {\n background: #f0f0f0;\n color: #333;\n}\n\n.ace-tm .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-tm .ace_fold {\n background-color: #6B72E6;\n}\n\n.ace-tm {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-tm .ace_cursor {\n color: black;\n}\n \n.ace-tm .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-tm .ace_storage,\n.ace-tm .ace_keyword {\n color: blue;\n}\n\n.ace-tm .ace_constant {\n color: rgb(197, 6, 11);\n}\n\n.ace-tm .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-tm .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-tm .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-tm .ace_invalid {\n background-color: rgba(255, 0, 0, 0.1);\n color: red;\n}\n\n.ace-tm .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-tm .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-tm .ace_support.ace_type,\n.ace-tm .ace_support.ace_class {\n color: rgb(109, 121, 222);\n}\n\n.ace-tm .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-tm .ace_string {\n color: rgb(3, 106, 7);\n}\n\n.ace-tm .ace_comment {\n color: rgb(76, 136, 107);\n}\n\n.ace-tm .ace_comment.ace_doc {\n color: rgb(0, 102, 255);\n}\n\n.ace-tm .ace_comment.ace_doc.ace_tag {\n color: rgb(128, 159, 191);\n}\n\n.ace-tm .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-tm .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-tm .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-tm .ace_entity.ace_name.ace_function {\n color: #0000A2;\n}\n\n\n.ace-tm .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-tm .ace_list {\n color:rgb(185, 6, 144);\n}\n\n.ace-tm .ace_meta.ace_tag {\n color:rgb(0, 22, 142);\n}\n\n.ace-tm .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-tm .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n.ace-tm.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n.ace-tm .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-tm .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-tm .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-tm .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-tm .ace_gutter-active-line {\n background-color : #dcdcdc;\n}\n\n.ace-tm .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-tm .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-tm .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n";
1167
-
1168
-});
1169
-
1170
-ace.define("ace/theme/textmate",["require","exports","module","ace/theme/textmate-css","ace/lib/dom"], function(require, exports, module){"use strict";
1171
-exports.isDark = false;
1172
-exports.cssClass = "ace-tm";
1173
-exports.cssText = require("./textmate-css");
1174
-exports.$id = "ace/theme/textmate";
1175
-var dom = require("../lib/dom");
1176
-dom.importCssString(exports.cssText, exports.cssClass, false);
1177
-
1178
-});
1179
-
1180
-ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/net","ace/lib/dom","ace/lib/app_config","ace/theme/textmate"], function(require, exports, module){"no use strict";
1181
-var lang = require("./lib/lang");
1182
-var net = require("./lib/net");
1183
-var dom = require("./lib/dom");
1184
-var AppConfig = require("./lib/app_config").AppConfig;
1185
-module.exports = exports = new AppConfig();
1186
-var options = {
1187
- packaged: false,
1188
- workerPath: null,
1189
- modePath: null,
1190
- themePath: null,
1191
- basePath: "",
1192
- suffix: ".js",
1193
- $moduleUrls: {},
1194
- loadWorkerFromBlob: true,
1195
- sharedPopups: false,
1196
- useStrictCSP: null
1197
-};
1198
-exports.get = function (key) {
1199
- if (!options.hasOwnProperty(key))
1200
- throw new Error("Unknown config key: " + key);
1201
- return options[key];
1202
-};
1203
-exports.set = function (key, value) {
1204
- if (options.hasOwnProperty(key))
1205
- options[key] = value;
1206
- else if (this.setDefaultValue("", key, value) == false)
1207
- throw new Error("Unknown config key: " + key);
1208
- if (key == "useStrictCSP")
1209
- dom.useStrictCSP(value);
1210
-};
1211
-exports.all = function () {
1212
- return lang.copyObject(options);
1213
-};
1214
-exports.$modes = {};
1215
-exports.moduleUrl = function (name, component) {
1216
- if (options.$moduleUrls[name])
1217
- return options.$moduleUrls[name];
1218
- var parts = name.split("/");
1219
- component = component || parts[parts.length - 2] || "";
1220
- var sep = component == "snippets" ? "/" : "-";
1221
- var base = parts[parts.length - 1];
1222
- if (component == "worker" && sep == "-") {
1223
- var re = new RegExp("^" + component + "[\\-_]|[\\-_]" + component + "$", "g");
1224
- base = base.replace(re, "");
1225
- }
1226
- if ((!base || base == component) && parts.length > 1)
1227
- base = parts[parts.length - 2];
1228
- var path = options[component + "Path"];
1229
- if (path == null) {
1230
- path = options.basePath;
1231
- }
1232
- else if (sep == "/") {
1233
- component = sep = "";
1234
- }
1235
- if (path && path.slice(-1) != "/")
1236
- path += "/";
1237
- return path + component + sep + base + this.get("suffix");
1238
-};
1239
-exports.setModuleUrl = function (name, subst) {
1240
- return options.$moduleUrls[name] = subst;
1241
-};
1242
-var loader = function (moduleName, cb) {
1243
- if (moduleName === "ace/theme/textmate" || moduleName === "./theme/textmate")
1244
- return cb(null, require("./theme/textmate"));
1245
- if (customLoader)
1246
- return customLoader(moduleName, cb);
1247
- console.error("loader is not configured");
1248
-};
1249
-var customLoader;
1250
-exports.setLoader = function (cb) {
1251
- customLoader = cb;
1252
-};
1253
-exports.dynamicModules = Object.create(null);
1254
-exports.$loading = {};
1255
-exports.$loaded = {};
1256
-exports.loadModule = function (moduleId, onLoad) {
1257
- var loadedModule;
1258
- if (Array.isArray(moduleId)) {
1259
- var moduleType = moduleId[0];
1260
- var moduleName = moduleId[1];
1261
- }
1262
- else if (typeof moduleId == "string") {
1263
- var moduleName = moduleId;
1264
- }
1265
- var load = function (module) {
1266
- if (module && !exports.$loading[moduleName])
1267
- return onLoad && onLoad(module);
1268
- if (!exports.$loading[moduleName])
1269
- exports.$loading[moduleName] = [];
1270
- exports.$loading[moduleName].push(onLoad);
1271
- if (exports.$loading[moduleName].length > 1)
1272
- return;
1273
- var afterLoad = function () {
1274
- loader(moduleName, function (err, module) {
1275
- if (module)
1276
- exports.$loaded[moduleName] = module;
1277
- exports._emit("load.module", { name: moduleName, module: module });
1278
- var listeners = exports.$loading[moduleName];
1279
- exports.$loading[moduleName] = null;
1280
- listeners.forEach(function (onLoad) {
1281
- onLoad && onLoad(module);
1282
- });
1283
- });
1284
- };
1285
- if (!exports.get("packaged"))
1286
- return afterLoad();
1287
- net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);
1288
- reportErrorIfPathIsNotConfigured();
1289
- };
1290
- if (exports.dynamicModules[moduleName]) {
1291
- exports.dynamicModules[moduleName]().then(function (module) {
1292
- if (module.default) {
1293
- load(module.default);
1294
- }
1295
- else {
1296
- load(module);
1297
- }
1298
- });
1299
- }
1300
- else {
1301
- try {
1302
- loadedModule = this.$require(moduleName);
1303
- }
1304
- catch (e) { }
1305
- load(loadedModule || exports.$loaded[moduleName]);
1306
- }
1307
-};
1308
-exports.$require = function (moduleName) {
1309
- if (typeof module["require"] == "function") {
1310
- var req = "require";
1311
- return module[req](moduleName);
1312
- }
1313
-};
1314
-exports.setModuleLoader = function (moduleName, onLoad) {
1315
- exports.dynamicModules[moduleName] = onLoad;
1316
-};
1317
-var reportErrorIfPathIsNotConfigured = function () {
1318
- if (!options.basePath && !options.workerPath
1319
- && !options.modePath && !options.themePath
1320
- && !Object.keys(options.$moduleUrls).length) {
1321
- console.error("Unable to infer path to ace from script src,", "use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes", "or with webpack use ace/webpack-resolver");
1322
- reportErrorIfPathIsNotConfigured = function () { };
1323
- }
1324
-};
1325
-exports.version = "1.36.5";
1326
-
1327
-});
1328
-
1329
-ace.define("ace/loader_build",["require","exports","module","ace/lib/fixoldbrowsers","ace/config"], function(require, exports, module) {
1330
-"use strict";
1331
-
1332
-require("./lib/fixoldbrowsers");
1333
-var config = require("./config");
1334
-config.setLoader(function(moduleName, cb) {
1335
- require([moduleName], function(module) {
1336
- cb(null, module);
1337
- });
1338
-});
1339
-
1340
-var global = (function() {
1341
- return this || typeof window != "undefined" && window;
1342
-})();
1343
-
1344
-module.exports = function(ace) {
1345
- config.init = init;
1346
- config.$require = require;
1347
- ace.require = require;
1348
-
1349
- if (typeof define === "function")
1350
- ace.define = define;
1351
-};
1352
-init(true);function init(packaged) {
1353
-
1354
- if (!global || !global.document)
1355
- return;
1356
-
1357
- config.set("packaged", packaged || require.packaged || module.packaged || (global.define && define.packaged));
1358
-
1359
- var scriptOptions = {};
1360
- var scriptUrl = "";
1361
- var currentScript = (document.currentScript || document._currentScript ); // native or polyfill
1362
- var currentDocument = currentScript && currentScript.ownerDocument || document;
1363
-
1364
- if (currentScript && currentScript.src) {
1365
- scriptUrl = currentScript.src.split(/[?#]/)[0].split("/").slice(0, -1).join("/") || "";
1366
- }
1367
-
1368
- var scripts = currentDocument.getElementsByTagName("script");
1369
- for (var i=0; i<scripts.length; i++) {
1370
- var script = scripts[i];
1371
-
1372
- var src = script.src || script.getAttribute("src");
1373
- if (!src)
1374
- continue;
1375
-
1376
- var attributes = script.attributes;
1377
- for (var j=0, l=attributes.length; j < l; j++) {
1378
- var attr = attributes[j];
1379
- if (attr.name.indexOf("data-ace-") === 0) {
1380
- scriptOptions[deHyphenate(attr.name.replace(/^data-ace-/, ""))] = attr.value;
1381
- }
1382
- }
1383
-
1384
- var m = src.match(/^(.*)\/ace([\-.]\w+)?\.js(\?|$)/);
1385
- if (m)
1386
- scriptUrl = m[1];
1387
- }
1388
-
1389
- if (scriptUrl) {
1390
- scriptOptions.base = scriptOptions.base || scriptUrl;
1391
- scriptOptions.packaged = true;
1392
- }
1393
-
1394
- scriptOptions.basePath = scriptOptions.base;
1395
- scriptOptions.workerPath = scriptOptions.workerPath || scriptOptions.base;
1396
- scriptOptions.modePath = scriptOptions.modePath || scriptOptions.base;
1397
- scriptOptions.themePath = scriptOptions.themePath || scriptOptions.base;
1398
- delete scriptOptions.base;
1399
-
1400
- for (var key in scriptOptions)
1401
- if (typeof scriptOptions[key] !== "undefined")
1402
- config.set(key, scriptOptions[key]);
1403
-}
1404
-
1405
-function deHyphenate(str) {
1406
- return str.replace(/-(.)/g, function(m, m1) { return m1.toUpperCase(); });
1407
-}
1408
-});
1409
-
1410
-ace.define("ace/range",["require","exports","module"], function(require, exports, module){"use strict";
1411
-var Range = /** @class */ (function () {
1412
- function Range(startRow, startColumn, endRow, endColumn) {
1413
- this.start = {
1414
- row: startRow,
1415
- column: startColumn
1416
- };
1417
- this.end = {
1418
- row: endRow,
1419
- column: endColumn
1420
- };
1421
- }
1422
- Range.prototype.isEqual = function (range) {
1423
- return this.start.row === range.start.row &&
1424
- this.end.row === range.end.row &&
1425
- this.start.column === range.start.column &&
1426
- this.end.column === range.end.column;
1427
- };
1428
- Range.prototype.toString = function () {
1429
- return ("Range: [" + this.start.row + "/" + this.start.column +
1430
- "] -> [" + this.end.row + "/" + this.end.column + "]");
1431
- };
1432
- Range.prototype.contains = function (row, column) {
1433
- return this.compare(row, column) == 0;
1434
- };
1435
- Range.prototype.compareRange = function (range) {
1436
- var cmp, end = range.end, start = range.start;
1437
- cmp = this.compare(end.row, end.column);
1438
- if (cmp == 1) {
1439
- cmp = this.compare(start.row, start.column);
1440
- if (cmp == 1) {
1441
- return 2;
1442
- }
1443
- else if (cmp == 0) {
1444
- return 1;
1445
- }
1446
- else {
1447
- return 0;
1448
- }
1449
- }
1450
- else if (cmp == -1) {
1451
- return -2;
1452
- }
1453
- else {
1454
- cmp = this.compare(start.row, start.column);
1455
- if (cmp == -1) {
1456
- return -1;
1457
- }
1458
- else if (cmp == 1) {
1459
- return 42;
1460
- }
1461
- else {
1462
- return 0;
1463
- }
1464
- }
1465
- };
1466
- Range.prototype.comparePoint = function (p) {
1467
- return this.compare(p.row, p.column);
1468
- };
1469
- Range.prototype.containsRange = function (range) {
1470
- return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
1471
- };
1472
- Range.prototype.intersects = function (range) {
1473
- var cmp = this.compareRange(range);
1474
- return (cmp == -1 || cmp == 0 || cmp == 1);
1475
- };
1476
- Range.prototype.isEnd = function (row, column) {
1477
- return this.end.row == row && this.end.column == column;
1478
- };
1479
- Range.prototype.isStart = function (row, column) {
1480
- return this.start.row == row && this.start.column == column;
1481
- };
1482
- Range.prototype.setStart = function (row, column) {
1483
- if (typeof row == "object") {
1484
- this.start.column = row.column;
1485
- this.start.row = row.row;
1486
- }
1487
- else {
1488
- this.start.row = row;
1489
- this.start.column = column;
1490
- }
1491
- };
1492
- Range.prototype.setEnd = function (row, column) {
1493
- if (typeof row == "object") {
1494
- this.end.column = row.column;
1495
- this.end.row = row.row;
1496
- }
1497
- else {
1498
- this.end.row = row;
1499
- this.end.column = column;
1500
- }
1501
- };
1502
- Range.prototype.inside = function (row, column) {
1503
- if (this.compare(row, column) == 0) {
1504
- if (this.isEnd(row, column) || this.isStart(row, column)) {
1505
- return false;
1506
- }
1507
- else {
1508
- return true;
1509
- }
1510
- }
1511
- return false;
1512
- };
1513
- Range.prototype.insideStart = function (row, column) {
1514
- if (this.compare(row, column) == 0) {
1515
- if (this.isEnd(row, column)) {
1516
- return false;
1517
- }
1518
- else {
1519
- return true;
1520
- }
1521
- }
1522
- return false;
1523
- };
1524
- Range.prototype.insideEnd = function (row, column) {
1525
- if (this.compare(row, column) == 0) {
1526
- if (this.isStart(row, column)) {
1527
- return false;
1528
- }
1529
- else {
1530
- return true;
1531
- }
1532
- }
1533
- return false;
1534
- };
1535
- Range.prototype.compare = function (row, column) {
1536
- if (!this.isMultiLine()) {
1537
- if (row === this.start.row) {
1538
- return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);
1539
- }
1540
- }
1541
- if (row < this.start.row)
1542
- return -1;
1543
- if (row > this.end.row)
1544
- return 1;
1545
- if (this.start.row === row)
1546
- return column >= this.start.column ? 0 : -1;
1547
- if (this.end.row === row)
1548
- return column <= this.end.column ? 0 : 1;
1549
- return 0;
1550
- };
1551
- Range.prototype.compareStart = function (row, column) {
1552
- if (this.start.row == row && this.start.column == column) {
1553
- return -1;
1554
- }
1555
- else {
1556
- return this.compare(row, column);
1557
- }
1558
- };
1559
- Range.prototype.compareEnd = function (row, column) {
1560
- if (this.end.row == row && this.end.column == column) {
1561
- return 1;
1562
- }
1563
- else {
1564
- return this.compare(row, column);
1565
- }
1566
- };
1567
- Range.prototype.compareInside = function (row, column) {
1568
- if (this.end.row == row && this.end.column == column) {
1569
- return 1;
1570
- }
1571
- else if (this.start.row == row && this.start.column == column) {
1572
- return -1;
1573
- }
1574
- else {
1575
- return this.compare(row, column);
1576
- }
1577
- };
1578
- Range.prototype.clipRows = function (firstRow, lastRow) {
1579
- if (this.end.row > lastRow)
1580
- var end = { row: lastRow + 1, column: 0 };
1581
- else if (this.end.row < firstRow)
1582
- var end = { row: firstRow, column: 0 };
1583
- if (this.start.row > lastRow)
1584
- var start = { row: lastRow + 1, column: 0 };
1585
- else if (this.start.row < firstRow)
1586
- var start = { row: firstRow, column: 0 };
1587
- return Range.fromPoints(start || this.start, end || this.end);
1588
- };
1589
- Range.prototype.extend = function (row, column) {
1590
- var cmp = this.compare(row, column);
1591
- if (cmp == 0)
1592
- return this;
1593
- else if (cmp == -1)
1594
- var start = { row: row, column: column };
1595
- else
1596
- var end = { row: row, column: column };
1597
- return Range.fromPoints(start || this.start, end || this.end);
1598
- };
1599
- Range.prototype.isEmpty = function () {
1600
- return (this.start.row === this.end.row && this.start.column === this.end.column);
1601
- };
1602
- Range.prototype.isMultiLine = function () {
1603
- return (this.start.row !== this.end.row);
1604
- };
1605
- Range.prototype.clone = function () {
1606
- return Range.fromPoints(this.start, this.end);
1607
- };
1608
- Range.prototype.collapseRows = function () {
1609
- if (this.end.column == 0)
1610
- return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0);
1611
- else
1612
- return new Range(this.start.row, 0, this.end.row, 0);
1613
- };
1614
- Range.prototype.toScreenRange = function (session) {
1615
- var screenPosStart = session.documentToScreenPosition(this.start);
1616
- var screenPosEnd = session.documentToScreenPosition(this.end);
1617
- return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column);
1618
- };
1619
- Range.prototype.moveBy = function (row, column) {
1620
- this.start.row += row;
1621
- this.start.column += column;
1622
- this.end.row += row;
1623
- this.end.column += column;
1624
- };
1625
- return Range;
1626
-}());
1627
-Range.fromPoints = function (start, end) {
1628
- return new Range(start.row, start.column, end.row, end.column);
1629
-};
1630
-Range.comparePoints = function (p1, p2) {
1631
- return p1.row - p2.row || p1.column - p2.column;
1632
-};
1633
-exports.Range = Range;
1634
-
1635
-});
1636
-
1637
-ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"], function(require, exports, module){"use strict";
1638
-var oop = require("./oop");
1639
-var Keys = {
1640
- MODIFIER_KEYS: {
1641
- 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',
1642
- 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'
1643
- },
1644
- KEY_MODS: {
1645
- "ctrl": 1, "alt": 2, "option": 2, "shift": 4,
1646
- "super": 8, "meta": 8, "command": 8, "cmd": 8,
1647
- "control": 1
1648
- },
1649
- FUNCTION_KEYS: {
1650
- 8: "Backspace",
1651
- 9: "Tab",
1652
- 13: "Return",
1653
- 19: "Pause",
1654
- 27: "Esc",
1655
- 32: "Space",
1656
- 33: "PageUp",
1657
- 34: "PageDown",
1658
- 35: "End",
1659
- 36: "Home",
1660
- 37: "Left",
1661
- 38: "Up",
1662
- 39: "Right",
1663
- 40: "Down",
1664
- 44: "Print",
1665
- 45: "Insert",
1666
- 46: "Delete",
1667
- '-13': "NumpadEnter",
1668
- 144: "Numlock",
1669
- 145: "Scrolllock"
1670
- },
1671
- PRINTABLE_KEYS: {
1672
- 32: ' ', 59: ';', 61: '=', 107: '+', 109: '-', 110: '.',
1673
- 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',
1674
- 219: '[', 220: '\\', 221: ']', 222: "'", 111: '/', 106: '*'
1675
- }
1676
-};
1677
-var codeToKeyCode = {
1678
- Command: 224,
1679
- Backspace: 8,
1680
- Tab: 9,
1681
- Return: 13,
1682
- Enter: 13,
1683
- Pause: 19,
1684
- Escape: 27,
1685
- PageUp: 33,
1686
- PageDown: 34,
1687
- End: 35,
1688
- Home: 36,
1689
- Insert: 45,
1690
- Delete: 46,
1691
- ArrowLeft: 37,
1692
- ArrowUp: 38,
1693
- ArrowRight: 39,
1694
- ArrowDown: 40,
1695
- Backquote: 192,
1696
- Minus: 189,
1697
- Equal: 187,
1698
- BracketLeft: 219,
1699
- Backslash: 220,
1700
- BracketRight: 221,
1701
- Semicolon: 186,
1702
- Quote: 222,
1703
- Comma: 188,
1704
- Period: 190,
1705
- Slash: 191,
1706
- Space: 32,
1707
- NumpadAdd: 107,
1708
- NumpadDecimal: 110,
1709
- NumpadSubtract: 109,
1710
- NumpadDivide: 111,
1711
- NumpadMultiply: 106
1712
-};
1713
-for (var i = 0; i < 10; i++) {
1714
- codeToKeyCode["Digit" + i] = 48 + i;
1715
- codeToKeyCode["Numpad" + i] = 96 + i;
1716
- Keys.PRINTABLE_KEYS[48 + i] = "" + i;
1717
- Keys.FUNCTION_KEYS[96 + i] = "Numpad" + i;
1718
-}
1719
-for (var i = 65; i < 91; i++) {
1720
- var chr = String.fromCharCode(i + 32);
1721
- codeToKeyCode["Key" + chr.toUpperCase()] = i;
1722
- Keys.PRINTABLE_KEYS[i] = chr;
1723
-}
1724
-for (var i = 1; i < 13; i++) {
1725
- codeToKeyCode["F" + i] = 111 + i;
1726
- Keys.FUNCTION_KEYS[111 + i] = "F" + i;
1727
-}
1728
-var modifiers = {
1729
- Shift: 16,
1730
- Control: 17,
1731
- Alt: 18,
1732
- Meta: 224
1733
-};
1734
-for (var mod in modifiers) {
1735
- codeToKeyCode[mod] = codeToKeyCode[mod + "Left"]
1736
- = codeToKeyCode[mod + "Right"] = modifiers[mod];
1737
-}
1738
-exports.$codeToKeyCode = codeToKeyCode;
1739
-Keys.PRINTABLE_KEYS[173] = '-';
1740
-for (var j in Keys.FUNCTION_KEYS) {
1741
- var name = Keys.FUNCTION_KEYS[j].toLowerCase();
1742
- Keys[name] = parseInt(j, 10);
1743
-}
1744
-for (var j in Keys.PRINTABLE_KEYS) {
1745
- var name = Keys.PRINTABLE_KEYS[j].toLowerCase();
1746
- Keys[name] = parseInt(j, 10);
1747
-}
1748
-oop.mixin(Keys, Keys.MODIFIER_KEYS);
1749
-oop.mixin(Keys, Keys.PRINTABLE_KEYS);
1750
-oop.mixin(Keys, Keys.FUNCTION_KEYS);
1751
-Keys.enter = Keys["return"];
1752
-Keys.escape = Keys.esc;
1753
-Keys.del = Keys["delete"];
1754
-(function () {
1755
- var mods = ["cmd", "ctrl", "alt", "shift"];
1756
- for (var i = Math.pow(2, mods.length); i--;) {
1757
- Keys.KEY_MODS[i] = mods.filter(function (x) {
1758
- return i & Keys.KEY_MODS[x];
1759
- }).join("-") + "-";
1760
- }
1761
-})();
1762
-Keys.KEY_MODS[0] = "";
1763
-Keys.KEY_MODS[-1] = "input-";
1764
-oop.mixin(exports, Keys);
1765
-exports.default = exports;
1766
-exports.keyCodeToString = function (keyCode) {
1767
- var keyString = Keys[keyCode];
1768
- if (typeof keyString != "string")
1769
- keyString = String.fromCharCode(keyCode);
1770
- return keyString.toLowerCase();
1771
-};
1772
-
1773
-});
1774
-
1775
-ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module){"use strict"; var keys = require("./keys");
1776
-var useragent = require("./useragent");
1777
-var pressedKeys = null;
1778
-var ts = 0;
1779
-var activeListenerOptions;
1780
-function detectListenerOptionsSupport() {
1781
- activeListenerOptions = false;
1782
- try {
1783
- document.createComment("").addEventListener("test", function () { }, {
1784
- get passive() {
1785
- activeListenerOptions = { passive: false };
1786
- return true;
1787
- }
1788
- });
1789
- }
1790
- catch (e) { }
1791
-}
1792
-function getListenerOptions() {
1793
- if (activeListenerOptions == undefined)
1794
- detectListenerOptionsSupport();
1795
- return activeListenerOptions;
1796
-}
1797
-function EventListener(elem, type, callback) {
1798
- this.elem = elem;
1799
- this.type = type;
1800
- this.callback = callback;
1801
-}
1802
-EventListener.prototype.destroy = function () {
1803
- removeListener(this.elem, this.type, this.callback);
1804
- this.elem = this.type = this.callback = undefined;
1805
-};
1806
-var addListener = exports.addListener = function (elem, type, callback, /**@type{any?}*/ destroyer) {
1807
- elem.addEventListener(type, callback, getListenerOptions());
1808
- if (destroyer)
1809
- destroyer.$toDestroy.push(new EventListener(elem, type, callback));
1810
-};
1811
-var removeListener = exports.removeListener = function (elem, type, callback) {
1812
- elem.removeEventListener(type, callback, getListenerOptions());
1813
-};
1814
-exports.stopEvent = function (e) {
1815
- exports.stopPropagation(e);
1816
- exports.preventDefault(e);
1817
- return false;
1818
-};
1819
-exports.stopPropagation = function (e) {
1820
- if (e.stopPropagation)
1821
- e.stopPropagation();
1822
-};
1823
-exports.preventDefault = function (e) {
1824
- if (e.preventDefault)
1825
- e.preventDefault();
1826
-};
1827
-exports.getButton = function (e) {
1828
- if (e.type == "dblclick")
1829
- return 0;
1830
- if (e.type == "contextmenu" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))
1831
- return 2;
1832
- return e.button;
1833
-};
1834
-exports.capture = function (el, eventHandler, releaseCaptureHandler) {
1835
- var ownerDocument = el && el.ownerDocument || document;
1836
- function onMouseUp(e) {
1837
- eventHandler && eventHandler(e);
1838
- releaseCaptureHandler && releaseCaptureHandler(e);
1839
- removeListener(ownerDocument, "mousemove", eventHandler);
1840
- removeListener(ownerDocument, "mouseup", onMouseUp);
1841
- removeListener(ownerDocument, "dragstart", onMouseUp);
1842
- }
1843
- addListener(ownerDocument, "mousemove", eventHandler);
1844
- addListener(ownerDocument, "mouseup", onMouseUp);
1845
- addListener(ownerDocument, "dragstart", onMouseUp);
1846
- return onMouseUp;
1847
-};
1848
-exports.addMouseWheelListener = function (el, callback, destroyer) {
1849
- addListener(el, "wheel", function (e) {
1850
- var factor = 0.15;
1851
- var deltaX = e.deltaX || 0;
1852
- var deltaY = e.deltaY || 0;
1853
- switch (e.deltaMode) {
1854
- case e.DOM_DELTA_PIXEL:
1855
- e.wheelX = deltaX * factor;
1856
- e.wheelY = deltaY * factor;
1857
- break;
1858
- case e.DOM_DELTA_LINE:
1859
- var linePixels = 15;
1860
- e.wheelX = deltaX * linePixels;
1861
- e.wheelY = deltaY * linePixels;
1862
- break;
1863
- case e.DOM_DELTA_PAGE:
1864
- var pagePixels = 150;
1865
- e.wheelX = deltaX * pagePixels;
1866
- e.wheelY = deltaY * pagePixels;
1867
- break;
1868
- }
1869
- callback(e);
1870
- }, destroyer);
1871
-};
1872
-exports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) {
1873
- var clicks = 0;
1874
- var startX, startY, timer;
1875
- var eventNames = {
1876
- 2: "dblclick",
1877
- 3: "tripleclick",
1878
- 4: "quadclick"
1879
- };
1880
- function onMousedown(e) {
1881
- if (exports.getButton(e) !== 0) {
1882
- clicks = 0;
1883
- }
1884
- else if (e.detail > 1) {
1885
- clicks++;
1886
- if (clicks > 4)
1887
- clicks = 1;
1888
- }
1889
- else {
1890
- clicks = 1;
1891
- }
1892
- if (useragent.isIE) {
1893
- var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;
1894
- if (!timer || isNewClick)
1895
- clicks = 1;
1896
- if (timer)
1897
- clearTimeout(timer);
1898
- timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600);
1899
- if (clicks == 1) {
1900
- startX = e.clientX;
1901
- startY = e.clientY;
1902
- }
1903
- }
1904
- e._clicks = clicks;
1905
- eventHandler[callbackName]("mousedown", e);
1906
- if (clicks > 4)
1907
- clicks = 0;
1908
- else if (clicks > 1)
1909
- return eventHandler[callbackName](eventNames[clicks], e);
1910
- }
1911
- if (!Array.isArray(elements))
1912
- elements = [elements];
1913
- elements.forEach(function (el) {
1914
- addListener(el, "mousedown", onMousedown, destroyer);
1915
- });
1916
-};
1917
-function getModifierHash(e) {
1918
- return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);
1919
-}
1920
-exports.getModifierString = function (e) {
1921
- return keys.KEY_MODS[getModifierHash(e)];
1922
-};
1923
-function normalizeCommandKeys(callback, e, keyCode) {
1924
- var hashId = getModifierHash(e);
1925
- if (!keyCode && e.code) {
1926
- keyCode = keys.$codeToKeyCode[e.code] || keyCode;
1927
- }
1928
- if (!useragent.isMac && pressedKeys) {
1929
- if (e.getModifierState && (e.getModifierState("OS") || e.getModifierState("Win")))
1930
- hashId |= 8;
1931
- if (pressedKeys.altGr) {
1932
- if ((3 & hashId) != 3)
1933
- pressedKeys.altGr = 0;
1934
- else
1935
- return;
1936
- }
1937
- if (keyCode === 18 || keyCode === 17) {
1938
- var location = e.location;
1939
- if (keyCode === 17 && location === 1) {
1940
- if (pressedKeys[keyCode] == 1)
1941
- ts = e.timeStamp;
1942
- }
1943
- else if (keyCode === 18 && hashId === 3 && location === 2) {
1944
- var dt = e.timeStamp - ts;
1945
- if (dt < 50)
1946
- pressedKeys.altGr = true;
1947
- }
1948
- }
1949
- }
1950
- if (keyCode in keys.MODIFIER_KEYS) {
1951
- keyCode = -1;
1952
- }
1953
- if (!hashId && keyCode === 13) {
1954
- if (e.location === 3) {
1955
- callback(e, hashId, -keyCode);
1956
- if (e.defaultPrevented)
1957
- return;
1958
- }
1959
- }
1960
- if (useragent.isChromeOS && hashId & 8) {
1961
- callback(e, hashId, keyCode);
1962
- if (e.defaultPrevented)
1963
- return;
1964
- else
1965
- hashId &= ~8;
1966
- }
1967
- if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {
1968
- return false;
1969
- }
1970
- return callback(e, hashId, keyCode);
1971
-}
1972
-exports.addCommandKeyListener = function (el, callback, destroyer) {
1973
- var lastDefaultPrevented = null;
1974
- addListener(el, "keydown", function (e) {
1975
- pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;
1976
- var result = normalizeCommandKeys(callback, e, e.keyCode);
1977
- lastDefaultPrevented = e.defaultPrevented;
1978
- return result;
1979
- }, destroyer);
1980
- addListener(el, "keypress", function (e) {
1981
- if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {
1982
- exports.stopEvent(e);
1983
- lastDefaultPrevented = null;
1984
- }
1985
- }, destroyer);
1986
- addListener(el, "keyup", function (e) {
1987
- pressedKeys[e.keyCode] = null;
1988
- }, destroyer);
1989
- if (!pressedKeys) {
1990
- resetPressedKeys();
1991
- addListener(window, "focus", resetPressedKeys);
1992
- }
1993
-};
1994
-function resetPressedKeys() {
1995
- pressedKeys = Object.create(null);
1996
-}
1997
-if (typeof window == "object" && window.postMessage && !useragent.isOldIE) {
1998
- var postMessageId = 1;
1999
- exports.nextTick = function (callback, win) {
2000
- win = win || window;
2001
- var messageName = "zero-timeout-message-" + (postMessageId++);
2002
- var listener = function (e) {
2003
- if (e.data == messageName) {
2004
- exports.stopPropagation(e);
2005
- removeListener(win, "message", listener);
2006
- callback();
2007
- }
2008
- };
2009
- addListener(win, "message", listener);
2010
- win.postMessage(messageName, "*");
2011
- };
2012
-}
2013
-exports.$idleBlocked = false;
2014
-exports.onIdle = function (cb, timeout) {
2015
- return setTimeout(function handler() {
2016
- if (!exports.$idleBlocked) {
2017
- cb();
2018
- }
2019
- else {
2020
- setTimeout(handler, 100);
2021
- }
2022
- }, timeout);
2023
-};
2024
-exports.$idleBlockId = null;
2025
-exports.blockIdle = function (delay) {
2026
- if (exports.$idleBlockId)
2027
- clearTimeout(exports.$idleBlockId);
2028
- exports.$idleBlocked = true;
2029
- exports.$idleBlockId = setTimeout(function () {
2030
- exports.$idleBlocked = false;
2031
- }, delay || 100);
2032
-};
2033
-exports.nextFrame = typeof window == "object" && (window.requestAnimationFrame
2034
- || window["mozRequestAnimationFrame"]
2035
- || window["webkitRequestAnimationFrame"]
2036
- || window["msRequestAnimationFrame"]
2037
- || window["oRequestAnimationFrame"]);
2038
-if (exports.nextFrame)
2039
- exports.nextFrame = exports.nextFrame.bind(window);
2040
-else
2041
- exports.nextFrame = function (callback) {
2042
- setTimeout(callback, 17);
2043
- };
2044
-
2045
-});
2046
-
2047
-ace.define("ace/clipboard",["require","exports","module"], function(require, exports, module){"use strict";
2048
-var $cancelT;
2049
-module.exports = {
2050
- lineMode: false,
2051
- pasteCancelled: function () {
2052
- if ($cancelT && $cancelT > Date.now() - 50)
2053
- return true;
2054
- return $cancelT = false;
2055
- },
2056
- cancel: function () {
2057
- $cancelT = Date.now();
2058
- }
2059
-};
2060
-
2061
-});
2062
-
2063
-ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/config","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"], function(require, exports, module){"use strict";
2064
-var event = require("../lib/event");
2065
-var nls = require("../config").nls;
2066
-var useragent = require("../lib/useragent");
2067
-var dom = require("../lib/dom");
2068
-var lang = require("../lib/lang");
2069
-var clipboard = require("../clipboard");
2070
-var BROKEN_SETDATA = useragent.isChrome < 18;
2071
-var USE_IE_MIME_TYPE = useragent.isIE;
2072
-var HAS_FOCUS_ARGS = useragent.isChrome > 63;
2073
-var MAX_LINE_LENGTH = 400;
2074
-var KEYS = require("../lib/keys");
2075
-var MODS = KEYS.KEY_MODS;
2076
-var isIOS = useragent.isIOS;
2077
-var valueResetRegex = isIOS ? /\s/ : /\n/;
2078
-var isMobile = useragent.isMobile;
2079
-var TextInput;
2080
-TextInput = function (parentNode, host) {
2081
- var text = dom.createElement("textarea");
2082
- text.className = "ace_text-input";
2083
- text.setAttribute("wrap", "off");
2084
- text.setAttribute("autocorrect", "off");
2085
- text.setAttribute("autocapitalize", "off");
2086
- text.setAttribute("spellcheck", "false");
2087
- text.style.opacity = "0";
2088
- parentNode.insertBefore(text, parentNode.firstChild);
2089
- var copied = false;
2090
- var pasted = false;
2091
- var inComposition = false;
2092
- var sendingText = false;
2093
- var tempStyle = '';
2094
- if (!isMobile)
2095
- text.style.fontSize = "1px";
2096
- var commandMode = false;
2097
- var ignoreFocusEvents = false;
2098
- var lastValue = "";
2099
- var lastSelectionStart = 0;
2100
- var lastSelectionEnd = 0;
2101
- var lastRestoreEnd = 0;
2102
- var rowStart = Number.MAX_SAFE_INTEGER;
2103
- var rowEnd = Number.MIN_SAFE_INTEGER;
2104
- var numberOfExtraLines = 0;
2105
- try {
2106
- var isFocused = document.activeElement === text;
2107
- }
2108
- catch (e) { }
2109
- this.setNumberOfExtraLines = function (number) {
2110
- rowStart = Number.MAX_SAFE_INTEGER;
2111
- rowEnd = Number.MIN_SAFE_INTEGER;
2112
- if (number < 0) {
2113
- numberOfExtraLines = 0;
2114
- return;
2115
- }
2116
- numberOfExtraLines = number;
2117
- };
2118
- this.setAriaLabel = function () {
2119
- var ariaLabel = "";
2120
- if (host.$textInputAriaLabel) {
2121
- ariaLabel += "".concat(host.$textInputAriaLabel, ", ");
2122
- }
2123
- if (host.session) {
2124
- var row = host.session.selection.cursor.row;
2125
- ariaLabel += nls("text-input.aria-label", "Cursor at row $0", [row + 1]);
2126
- }
2127
- text.setAttribute("aria-label", ariaLabel);
2128
- };
2129
- this.setAriaOptions = function (options) {
2130
- if (options.activeDescendant) {
2131
- text.setAttribute("aria-haspopup", "true");
2132
- text.setAttribute("aria-autocomplete", options.inline ? "both" : "list");
2133
- text.setAttribute("aria-activedescendant", options.activeDescendant);
2134
- }
2135
- else {
2136
- text.setAttribute("aria-haspopup", "false");
2137
- text.setAttribute("aria-autocomplete", "both");
2138
- text.removeAttribute("aria-activedescendant");
2139
- }
2140
- if (options.role) {
2141
- text.setAttribute("role", options.role);
2142
- }
2143
- if (options.setLabel) {
2144
- text.setAttribute("aria-roledescription", nls("text-input.aria-roledescription", "editor"));
2145
- this.setAriaLabel();
2146
- }
2147
- };
2148
- this.setAriaOptions({ role: "textbox" });
2149
- event.addListener(text, "blur", function (e) {
2150
- if (ignoreFocusEvents)
2151
- return;
2152
- host.onBlur(e);
2153
- isFocused = false;
2154
- }, host);
2155
- event.addListener(text, "focus", function (e) {
2156
- if (ignoreFocusEvents)
2157
- return;
2158
- isFocused = true;
2159
- if (useragent.isEdge) {
2160
- try {
2161
- if (!document.hasFocus())
2162
- return;
2163
- }
2164
- catch (e) { }
2165
- }
2166
- host.onFocus(e);
2167
- if (useragent.isEdge)
2168
- setTimeout(resetSelection);
2169
- else
2170
- resetSelection();
2171
- }, host);
2172
- this.$focusScroll = false;
2173
- this.focus = function () {
2174
- this.setAriaOptions({
2175
- setLabel: host.renderer.enableKeyboardAccessibility
2176
- });
2177
- if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == "browser")
2178
- return text.focus({ preventScroll: true });
2179
- var top = text.style.top;
2180
- text.style.position = "fixed";
2181
- text.style.top = "0px";
2182
- try {
2183
- var isTransformed = text.getBoundingClientRect().top != 0;
2184
- }
2185
- catch (e) {
2186
- return;
2187
- }
2188
- var ancestors = [];
2189
- if (isTransformed) {
2190
- var t = text.parentElement;
2191
- while (t && t.nodeType == 1) {
2192
- ancestors.push(t);
2193
- t.setAttribute("ace_nocontext", "true");
2194
- if (!t.parentElement && t.getRootNode)
2195
- t = t.getRootNode()["host"];
2196
- else
2197
- t = t.parentElement;
2198
- }
2199
- }
2200
- text.focus({ preventScroll: true });
2201
- if (isTransformed) {
2202
- ancestors.forEach(function (p) {
2203
- p.removeAttribute("ace_nocontext");
2204
- });
2205
- }
2206
- setTimeout(function () {
2207
- text.style.position = "";
2208
- if (text.style.top == "0px")
2209
- text.style.top = top;
2210
- }, 0);
2211
- };
2212
- this.blur = function () {
2213
- text.blur();
2214
- };
2215
- this.isFocused = function () {
2216
- return isFocused;
2217
- };
2218
- host.on("beforeEndOperation", function () {
2219
- var curOp = host.curOp;
2220
- var commandName = curOp && curOp.command && curOp.command.name;
2221
- if (commandName == "insertstring")
2222
- return;
2223
- var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);
2224
- if (inComposition && isUserAction) {
2225
- lastValue = text.value = "";
2226
- onCompositionEnd();
2227
- }
2228
- resetSelection();
2229
- });
2230
- host.on("changeSelection", this.setAriaLabel);
2231
- var positionToSelection = function (row, column) {
2232
- var selection = column;
2233
- for (var i = 1; i <= row - rowStart && i < 2 * numberOfExtraLines + 1; i++) {
2234
- selection += host.session.getLine(row - i).length + 1;
2235
- }
2236
- return selection;
2237
- };
2238
- var resetSelection = isIOS
2239
- ? function (value) {
2240
- if (!isFocused || (copied && !value) || sendingText)
2241
- return;
2242
- if (!value)
2243
- value = "";
2244
- var newValue = "\n ab" + value + "cde fg\n";
2245
- if (newValue != text.value)
2246
- text.value = lastValue = newValue;
2247
- var selectionStart = 4;
2248
- var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));
2249
- if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {
2250
- text.setSelectionRange(selectionStart, selectionEnd);
2251
- }
2252
- lastSelectionStart = selectionStart;
2253
- lastSelectionEnd = selectionEnd;
2254
- }
2255
- : function () {
2256
- if (inComposition || sendingText)
2257
- return;
2258
- if (!isFocused && !afterContextMenu)
2259
- return;
2260
- inComposition = true;
2261
- var selectionStart = 0;
2262
- var selectionEnd = 0;
2263
- var line = "";
2264
- if (host.session) {
2265
- var selection = host.selection;
2266
- var range = selection.getRange();
2267
- var row = selection.cursor.row;
2268
- if (row === rowEnd + 1) {
2269
- rowStart = rowEnd + 1;
2270
- rowEnd = rowStart + 2 * numberOfExtraLines;
2271
- }
2272
- else if (row === rowStart - 1) {
2273
- rowEnd = rowStart - 1;
2274
- rowStart = rowEnd - 2 * numberOfExtraLines;
2275
- }
2276
- else if (row < rowStart - 1 || row > rowEnd + 1) {
2277
- rowStart = row > numberOfExtraLines ? row - numberOfExtraLines : 0;
2278
- rowEnd = row > numberOfExtraLines ? row + numberOfExtraLines : 2 * numberOfExtraLines;
2279
- }
2280
- var lines = [];
2281
- for (var i = rowStart; i <= rowEnd; i++) {
2282
- lines.push(host.session.getLine(i));
2283
- }
2284
- line = lines.join('\n');
2285
- selectionStart = positionToSelection(range.start.row, range.start.column);
2286
- selectionEnd = positionToSelection(range.end.row, range.end.column);
2287
- if (range.start.row < rowStart) {
2288
- var prevLine = host.session.getLine(rowStart - 1);
2289
- selectionStart = range.start.row < rowStart - 1 ? 0 : selectionStart;
2290
- selectionEnd += prevLine.length + 1;
2291
- line = prevLine + "\n" + line;
2292
- }
2293
- else if (range.end.row > rowEnd) {
2294
- var nextLine = host.session.getLine(rowEnd + 1);
2295
- selectionEnd = range.end.row > rowEnd + 1 ? nextLine.length : range.end.column;
2296
- selectionEnd += line.length + 1;
2297
- line = line + "\n" + nextLine;
2298
- }
2299
- else if (isMobile && row > 0) {
2300
- line = "\n" + line;
2301
- selectionEnd += 1;
2302
- selectionStart += 1;
2303
- }
2304
- if (line.length > MAX_LINE_LENGTH) {
2305
- if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {
2306
- line = line.slice(0, MAX_LINE_LENGTH);
2307
- }
2308
- else {
2309
- line = "\n";
2310
- if (selectionStart == selectionEnd) {
2311
- selectionStart = selectionEnd = 0;
2312
- }
2313
- else {
2314
- selectionStart = 0;
2315
- selectionEnd = 1;
2316
- }
2317
- }
2318
- }
2319
- var newValue = line + "\n\n";
2320
- if (newValue != lastValue) {
2321
- text.value = lastValue = newValue;
2322
- lastSelectionStart = lastSelectionEnd = newValue.length;
2323
- }
2324
- }
2325
- if (afterContextMenu) {
2326
- lastSelectionStart = text.selectionStart;
2327
- lastSelectionEnd = text.selectionEnd;
2328
- }
2329
- if (lastSelectionEnd != selectionEnd
2330
- || lastSelectionStart != selectionStart
2331
- || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization
2332
- ) {
2333
- try {
2334
- text.setSelectionRange(selectionStart, selectionEnd);
2335
- lastSelectionStart = selectionStart;
2336
- lastSelectionEnd = selectionEnd;
2337
- }
2338
- catch (e) { }
2339
- }
2340
- inComposition = false;
2341
- };
2342
- this.resetSelection = resetSelection;
2343
- if (isFocused)
2344
- host.onFocus();
2345
- var isAllSelected = function (text) {
2346
- return text.selectionStart === 0 && text.selectionEnd >= lastValue.length
2347
- && text.value === lastValue && lastValue
2348
- && text.selectionEnd !== lastSelectionEnd;
2349
- };
2350
- var onSelect = function (e) {
2351
- if (inComposition)
2352
- return;
2353
- if (copied) {
2354
- copied = false;
2355
- }
2356
- else if (isAllSelected(text)) {
2357
- host.selectAll();
2358
- resetSelection();
2359
- }
2360
- else if (isMobile && text.selectionStart != lastSelectionStart) {
2361
- resetSelection();
2362
- }
2363
- };
2364
- var inputHandler = null;
2365
- this.setInputHandler = function (cb) { inputHandler = cb; };
2366
- this.getInputHandler = function () { return inputHandler; };
2367
- var afterContextMenu = false;
2368
- var sendText = function (value, fromInput) {
2369
- if (afterContextMenu)
2370
- afterContextMenu = false;
2371
- if (pasted) {
2372
- resetSelection();
2373
- if (value)
2374
- host.onPaste(value);
2375
- pasted = false;
2376
- return "";
2377
- }
2378
- else {
2379
- var selectionStart = text.selectionStart;
2380
- var selectionEnd = text.selectionEnd;
2381
- var extendLeft = lastSelectionStart;
2382
- var extendRight = lastValue.length - lastSelectionEnd;
2383
- var inserted = value;
2384
- var restoreStart = value.length - selectionStart;
2385
- var restoreEnd = value.length - selectionEnd;
2386
- var i = 0;
2387
- while (extendLeft > 0 && lastValue[i] == value[i]) {
2388
- i++;
2389
- extendLeft--;
2390
- }
2391
- inserted = inserted.slice(i);
2392
- i = 1;
2393
- while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) {
2394
- i++;
2395
- extendRight--;
2396
- }
2397
- restoreStart -= i - 1;
2398
- restoreEnd -= i - 1;
2399
- var endIndex = inserted.length - i + 1;
2400
- if (endIndex < 0) {
2401
- extendLeft = -endIndex;
2402
- endIndex = 0;
2403
- }
2404
- inserted = inserted.slice(0, endIndex);
2405
- if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)
2406
- return "";
2407
- sendingText = true;
2408
- var shouldReset = false;
2409
- if (useragent.isAndroid && inserted == ". ") {
2410
- inserted = " ";
2411
- shouldReset = true;
2412
- }
2413
- if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {
2414
- host.onTextInput(inserted);
2415
- }
2416
- else {
2417
- host.onTextInput(inserted, {
2418
- extendLeft: extendLeft,
2419
- extendRight: extendRight,
2420
- restoreStart: restoreStart,
2421
- restoreEnd: restoreEnd
2422
- });
2423
- }
2424
- sendingText = false;
2425
- lastValue = value;
2426
- lastSelectionStart = selectionStart;
2427
- lastSelectionEnd = selectionEnd;
2428
- lastRestoreEnd = restoreEnd;
2429
- return shouldReset ? "\n" : inserted;
2430
- }
2431
- };
2432
- var onInput = function (e) {
2433
- if (inComposition)
2434
- return onCompositionUpdate();
2435
- if (e && e.inputType) {
2436
- if (e.inputType == "historyUndo")
2437
- return host.execCommand("undo");
2438
- if (e.inputType == "historyRedo")
2439
- return host.execCommand("redo");
2440
- }
2441
- var data = text.value;
2442
- var inserted = sendText(data, true);
2443
- if (data.length > MAX_LINE_LENGTH + 100
2444
- || valueResetRegex.test(inserted)
2445
- || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) {
2446
- resetSelection();
2447
- }
2448
- };
2449
- var handleClipboardData = function (e, data, forceIEMime) {
2450
- var clipboardData = e.clipboardData || window["clipboardData"];
2451
- if (!clipboardData || BROKEN_SETDATA)
2452
- return;
2453
- var mime = USE_IE_MIME_TYPE || forceIEMime ? "Text" : "text/plain";
2454
- try {
2455
- if (data) {
2456
- return clipboardData.setData(mime, data) !== false;
2457
- }
2458
- else {
2459
- return clipboardData.getData(mime);
2460
- }
2461
- }
2462
- catch (e) {
2463
- if (!forceIEMime)
2464
- return handleClipboardData(e, data, true);
2465
- }
2466
- };
2467
- var doCopy = function (e, isCut) {
2468
- var data = host.getCopyText();
2469
- if (!data)
2470
- return event.preventDefault(e);
2471
- if (handleClipboardData(e, data)) {
2472
- if (isIOS) {
2473
- resetSelection(data);
2474
- copied = data;
2475
- setTimeout(function () {
2476
- copied = false;
2477
- }, 10);
2478
- }
2479
- isCut ? host.onCut() : host.onCopy();
2480
- event.preventDefault(e);
2481
- }
2482
- else {
2483
- copied = true;
2484
- text.value = data;
2485
- text.select();
2486
- setTimeout(function () {
2487
- copied = false;
2488
- resetSelection();
2489
- isCut ? host.onCut() : host.onCopy();
2490
- });
2491
- }
2492
- };
2493
- var onCut = function (e) {
2494
- doCopy(e, true);
2495
- };
2496
- var onCopy = function (e) {
2497
- doCopy(e, false);
2498
- };
2499
- var onPaste = function (e) {
2500
- var data = handleClipboardData(e);
2501
- if (clipboard.pasteCancelled())
2502
- return;
2503
- if (typeof data == "string") {
2504
- if (data)
2505
- host.onPaste(data, e);
2506
- if (useragent.isIE)
2507
- setTimeout(resetSelection);
2508
- event.preventDefault(e);
2509
- }
2510
- else {
2511
- text.value = "";
2512
- pasted = true;
2513
- }
2514
- };
2515
- event.addCommandKeyListener(text, function (e, hashId, keyCode) {
2516
- if (inComposition)
2517
- return;
2518
- return host.onCommandKey(e, hashId, keyCode);
2519
- }, host);
2520
- event.addListener(text, "select", onSelect, host);
2521
- event.addListener(text, "input", onInput, host);
2522
- event.addListener(text, "cut", onCut, host);
2523
- event.addListener(text, "copy", onCopy, host);
2524
- event.addListener(text, "paste", onPaste, host);
2525
- if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {
2526
- event.addListener(parentNode, "keydown", function (e) {
2527
- if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)
2528
- return;
2529
- switch (e.keyCode) {
2530
- case 67:
2531
- onCopy(e);
2532
- break;
2533
- case 86:
2534
- onPaste(e);
2535
- break;
2536
- case 88:
2537
- onCut(e);
2538
- break;
2539
- }
2540
- }, host);
2541
- }
2542
- var onCompositionStart = function (e) {
2543
- if (inComposition || !host.onCompositionStart || host.$readOnly)
2544
- return;
2545
- inComposition = {};
2546
- if (commandMode)
2547
- return;
2548
- if (e.data)
2549
- inComposition.useTextareaForIME = false;
2550
- setTimeout(onCompositionUpdate, 0);
2551
- host._signal("compositionStart");
2552
- host.on("mousedown", cancelComposition);
2553
- var range = host.getSelectionRange();
2554
- range.end.row = range.start.row;
2555
- range.end.column = range.start.column;
2556
- inComposition.markerRange = range;
2557
- inComposition.selectionStart = lastSelectionStart;
2558
- host.onCompositionStart(inComposition);
2559
- if (inComposition.useTextareaForIME) {
2560
- lastValue = text.value = "";
2561
- lastSelectionStart = 0;
2562
- lastSelectionEnd = 0;
2563
- }
2564
- else {
2565
- if (text.msGetInputContext)
2566
- inComposition.context = text.msGetInputContext();
2567
- if (text.getInputContext)
2568
- inComposition.context = text.getInputContext();
2569
- }
2570
- };
2571
- var onCompositionUpdate = function () {
2572
- if (!inComposition || !host.onCompositionUpdate || host.$readOnly)
2573
- return;
2574
- if (commandMode)
2575
- return cancelComposition();
2576
- if (inComposition.useTextareaForIME) {
2577
- host.onCompositionUpdate(text.value);
2578
- }
2579
- else {
2580
- var data = text.value;
2581
- sendText(data);
2582
- if (inComposition.markerRange) {
2583
- if (inComposition.context) {
2584
- inComposition.markerRange.start.column = inComposition.selectionStart
2585
- = inComposition.context.compositionStartOffset;
2586
- }
2587
- inComposition.markerRange.end.column = inComposition.markerRange.start.column
2588
- + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;
2589
- }
2590
- }
2591
- };
2592
- var onCompositionEnd = function (e) {
2593
- if (!host.onCompositionEnd || host.$readOnly)
2594
- return;
2595
- inComposition = false;
2596
- host.onCompositionEnd();
2597
- host.off("mousedown", cancelComposition);
2598
- if (e)
2599
- onInput();
2600
- };
2601
- function cancelComposition() {
2602
- ignoreFocusEvents = true;
2603
- text.blur();
2604
- text.focus();
2605
- ignoreFocusEvents = false;
2606
- }
2607
- var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);
2608
- function onKeyup(e) {
2609
- if (e.keyCode == 27 && text.value.length < text.selectionStart) {
2610
- if (!inComposition)
2611
- lastValue = text.value;
2612
- lastSelectionStart = lastSelectionEnd = -1;
2613
- resetSelection();
2614
- }
2615
- syncComposition();
2616
- }
2617
- event.addListener(text, "compositionstart", onCompositionStart, host);
2618
- event.addListener(text, "compositionupdate", onCompositionUpdate, host);
2619
- event.addListener(text, "keyup", onKeyup, host);
2620
- event.addListener(text, "keydown", syncComposition, host);
2621
- event.addListener(text, "compositionend", onCompositionEnd, host);
2622
- this.getElement = function () {
2623
- return text;
2624
- };
2625
- this.setCommandMode = function (value) {
2626
- commandMode = value;
2627
- text.readOnly = false;
2628
- };
2629
- this.setReadOnly = function (readOnly) {
2630
- if (!commandMode)
2631
- text.readOnly = readOnly;
2632
- };
2633
- this.setCopyWithEmptySelection = function (value) {
2634
- };
2635
- this.onContextMenu = function (e) {
2636
- afterContextMenu = true;
2637
- resetSelection();
2638
- host._emit("nativecontextmenu", { target: host, domEvent: e });
2639
- this.moveToMouse(e, true);
2640
- };
2641
- this.moveToMouse = function (e, bringToFront) {
2642
- if (!tempStyle)
2643
- tempStyle = text.style.cssText;
2644
- text.style.cssText = (bringToFront ? "z-index:100000;" : "")
2645
- + (useragent.isIE ? "opacity:0.1;" : "")
2646
- + "text-indent: -" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + "px;";
2647
- var rect = host.container.getBoundingClientRect();
2648
- var style = dom.computedStyle(host.container);
2649
- var top = rect.top + (parseInt(style.borderTopWidth) || 0);
2650
- var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);
2651
- var maxTop = rect.bottom - top - text.clientHeight - 2;
2652
- var move = function (e) {
2653
- dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));
2654
- };
2655
- move(e);
2656
- if (e.type != "mousedown")
2657
- return;
2658
- host.renderer.$isMousePressed = true;
2659
- clearTimeout(closeTimeout);
2660
- if (useragent.isWin)
2661
- event.capture(host.container, move, onContextMenuClose);
2662
- };
2663
- this.onContextMenuClose = onContextMenuClose;
2664
- var closeTimeout;
2665
- function onContextMenuClose() {
2666
- clearTimeout(closeTimeout);
2667
- closeTimeout = setTimeout(function () {
2668
- if (tempStyle) {
2669
- text.style.cssText = tempStyle;
2670
- tempStyle = '';
2671
- }
2672
- host.renderer.$isMousePressed = false;
2673
- if (host.renderer.$keepTextAreaAtCursor)
2674
- host.renderer.$moveTextAreaToCursor();
2675
- }, 0);
2676
- }
2677
- var onContextMenu = function (e) {
2678
- host.textInput.onContextMenu(e);
2679
- onContextMenuClose();
2680
- };
2681
- event.addListener(text, "mouseup", onContextMenu, host);
2682
- event.addListener(text, "mousedown", function (e) {
2683
- e.preventDefault();
2684
- onContextMenuClose();
2685
- }, host);
2686
- event.addListener(host.renderer.scroller, "contextmenu", onContextMenu, host);
2687
- event.addListener(text, "contextmenu", onContextMenu, host);
2688
- if (isIOS)
2689
- addIosSelectionHandler(parentNode, host, text);
2690
- function addIosSelectionHandler(parentNode, host, text) {
2691
- var typingResetTimeout = null;
2692
- var typing = false;
2693
- text.addEventListener("keydown", function (e) {
2694
- if (typingResetTimeout)
2695
- clearTimeout(typingResetTimeout);
2696
- typing = true;
2697
- }, true);
2698
- text.addEventListener("keyup", function (e) {
2699
- typingResetTimeout = setTimeout(function () {
2700
- typing = false;
2701
- }, 100);
2702
- }, true);
2703
- var detectArrowKeys = function (e) {
2704
- if (document.activeElement !== text)
2705
- return;
2706
- if (typing || inComposition || host.$mouseHandler.isMousePressed)
2707
- return;
2708
- if (copied) {
2709
- return;
2710
- }
2711
- var selectionStart = text.selectionStart;
2712
- var selectionEnd = text.selectionEnd;
2713
- var key = null;
2714
- var modifier = 0;
2715
- if (selectionStart == 0) {
2716
- key = KEYS.up;
2717
- }
2718
- else if (selectionStart == 1) {
2719
- key = KEYS.home;
2720
- }
2721
- else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == "\n") {
2722
- key = KEYS.end;
2723
- }
2724
- else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == " ") {
2725
- key = KEYS.left;
2726
- modifier = MODS.option;
2727
- }
2728
- else if (selectionStart < lastSelectionStart
2729
- || (selectionStart == lastSelectionStart
2730
- && lastSelectionEnd != lastSelectionStart
2731
- && selectionStart == selectionEnd)) {
2732
- key = KEYS.left;
2733
- }
2734
- else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split("\n").length > 2) {
2735
- key = KEYS.down;
2736
- }
2737
- else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == " ") {
2738
- key = KEYS.right;
2739
- modifier = MODS.option;
2740
- }
2741
- else if (selectionEnd > lastSelectionEnd
2742
- || (selectionEnd == lastSelectionEnd
2743
- && lastSelectionEnd != lastSelectionStart
2744
- && selectionStart == selectionEnd)) {
2745
- key = KEYS.right;
2746
- }
2747
- if (selectionStart !== selectionEnd)
2748
- modifier |= MODS.shift;
2749
- if (key) {
2750
- var result = host.onCommandKey({}, modifier, key);
2751
- if (!result && host.commands) {
2752
- key = KEYS.keyCodeToString(key);
2753
- var command = host.commands.findKeyCommand(modifier, key);
2754
- if (command)
2755
- host.execCommand(command);
2756
- }
2757
- lastSelectionStart = selectionStart;
2758
- lastSelectionEnd = selectionEnd;
2759
- resetSelection("");
2760
- }
2761
- };
2762
- document.addEventListener("selectionchange", detectArrowKeys);
2763
- host.on("destroy", function () {
2764
- document.removeEventListener("selectionchange", detectArrowKeys);
2765
- });
2766
- }
2767
- this.destroy = function () {
2768
- if (text.parentElement)
2769
- text.parentElement.removeChild(text);
2770
- };
2771
-};
2772
-exports.TextInput = TextInput;
2773
-exports.$setUserAgentForTests = function (_isMobile, _isIOS) {
2774
- isMobile = _isMobile;
2775
- isIOS = _isIOS;
2776
-};
2777
-
2778
-});
2779
-
2780
-ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"], function(require, exports, module){"use strict";
2781
-var useragent = require("../lib/useragent");
2782
-var DRAG_OFFSET = 0; // pixels
2783
-var SCROLL_COOLDOWN_T = 550; // milliseconds
2784
-var DefaultHandlers = /** @class */ (function () {
2785
- function DefaultHandlers(mouseHandler) {
2786
- mouseHandler.$clickSelection = null;
2787
- var editor = mouseHandler.editor;
2788
- editor.setDefaultHandler("mousedown", this.onMouseDown.bind(mouseHandler));
2789
- editor.setDefaultHandler("dblclick", this.onDoubleClick.bind(mouseHandler));
2790
- editor.setDefaultHandler("tripleclick", this.onTripleClick.bind(mouseHandler));
2791
- editor.setDefaultHandler("quadclick", this.onQuadClick.bind(mouseHandler));
2792
- editor.setDefaultHandler("mousewheel", this.onMouseWheel.bind(mouseHandler));
2793
- var exports = ["select", "startSelect", "selectEnd", "selectAllEnd", "selectByWordsEnd",
2794
- "selectByLinesEnd", "dragWait", "dragWaitEnd", "focusWait"];
2795
- exports.forEach(function (x) {
2796
- mouseHandler[x] = this[x];
2797
- }, this);
2798
- mouseHandler["selectByLines"] = this.extendSelectionBy.bind(mouseHandler, "getLineRange");
2799
- mouseHandler["selectByWords"] = this.extendSelectionBy.bind(mouseHandler, "getWordRange");
2800
- }
2801
- DefaultHandlers.prototype.onMouseDown = function (ev) {
2802
- var inSelection = ev.inSelection();
2803
- var pos = ev.getDocumentPosition();
2804
- this.mousedownEvent = ev;
2805
- var editor = this.editor;
2806
- var button = ev.getButton();
2807
- if (button !== 0) {
2808
- var selectionRange = editor.getSelectionRange();
2809
- var selectionEmpty = selectionRange.isEmpty();
2810
- if (selectionEmpty || button == 1)
2811
- editor.selection.moveToPosition(pos);
2812
- if (button == 2) {
2813
- editor.textInput.onContextMenu(ev.domEvent);
2814
- if (!useragent.isMozilla)
2815
- ev.preventDefault();
2816
- }
2817
- return;
2818
- }
2819
- this.mousedownEvent.time = Date.now();
2820
- if (inSelection && !editor.isFocused()) {
2821
- editor.focus();
2822
- if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {
2823
- this.setState("focusWait");
2824
- this.captureMouse(ev);
2825
- return;
2826
- }
2827
- }
2828
- this.captureMouse(ev);
2829
- this.startSelect(pos, ev.domEvent._clicks > 1);
2830
- return ev.preventDefault();
2831
- };
2832
- DefaultHandlers.prototype.startSelect = function (pos, waitForClickSelection) {
2833
- pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);
2834
- var editor = this.editor;
2835
- if (!this.mousedownEvent)
2836
- return;
2837
- if (this.mousedownEvent.getShiftKey())
2838
- editor.selection.selectToPosition(pos);
2839
- else if (!waitForClickSelection)
2840
- editor.selection.moveToPosition(pos);
2841
- if (!waitForClickSelection)
2842
- this.select();
2843
- editor.setStyle("ace_selecting");
2844
- this.setState("select");
2845
- };
2846
- DefaultHandlers.prototype.select = function () {
2847
- var anchor, editor = this.editor;
2848
- var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);
2849
- if (this.$clickSelection) {
2850
- var cmp = this.$clickSelection.comparePoint(cursor);
2851
- if (cmp == -1) {
2852
- anchor = this.$clickSelection.end;
2853
- }
2854
- else if (cmp == 1) {
2855
- anchor = this.$clickSelection.start;
2856
- }
2857
- else {
2858
- var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);
2859
- cursor = orientedRange.cursor;
2860
- anchor = orientedRange.anchor;
2861
- }
2862
- editor.selection.setSelectionAnchor(anchor.row, anchor.column);
2863
- }
2864
- editor.selection.selectToPosition(cursor);
2865
- editor.renderer.scrollCursorIntoView();
2866
- };
2867
- DefaultHandlers.prototype.extendSelectionBy = function (unitName) {
2868
- var anchor, editor = this.editor;
2869
- var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);
2870
- var range = editor.selection[unitName](cursor.row, cursor.column);
2871
- if (this.$clickSelection) {
2872
- var cmpStart = this.$clickSelection.comparePoint(range.start);
2873
- var cmpEnd = this.$clickSelection.comparePoint(range.end);
2874
- if (cmpStart == -1 && cmpEnd <= 0) {
2875
- anchor = this.$clickSelection.end;
2876
- if (range.end.row != cursor.row || range.end.column != cursor.column)
2877
- cursor = range.start;
2878
- }
2879
- else if (cmpEnd == 1 && cmpStart >= 0) {
2880
- anchor = this.$clickSelection.start;
2881
- if (range.start.row != cursor.row || range.start.column != cursor.column)
2882
- cursor = range.end;
2883
- }
2884
- else if (cmpStart == -1 && cmpEnd == 1) {
2885
- cursor = range.end;
2886
- anchor = range.start;
2887
- }
2888
- else {
2889
- var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);
2890
- cursor = orientedRange.cursor;
2891
- anchor = orientedRange.anchor;
2892
- }
2893
- editor.selection.setSelectionAnchor(anchor.row, anchor.column);
2894
- }
2895
- editor.selection.selectToPosition(cursor);
2896
- editor.renderer.scrollCursorIntoView();
2897
- };
2898
- DefaultHandlers.prototype.selectByLinesEnd = function () {
2899
- this.$clickSelection = null;
2900
- this.editor.unsetStyle("ace_selecting");
2901
- };
2902
- DefaultHandlers.prototype.focusWait = function () {
2903
- var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);
2904
- var time = Date.now();
2905
- if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)
2906
- this.startSelect(this.mousedownEvent.getDocumentPosition());
2907
- };
2908
- DefaultHandlers.prototype.onDoubleClick = function (ev) {
2909
- var pos = ev.getDocumentPosition();
2910
- var editor = this.editor;
2911
- var session = editor.session;
2912
- var range = session.getBracketRange(pos);
2913
- if (range) {
2914
- if (range.isEmpty()) {
2915
- range.start.column--;
2916
- range.end.column++;
2917
- }
2918
- this.setState("select");
2919
- }
2920
- else {
2921
- range = editor.selection.getWordRange(pos.row, pos.column);
2922
- this.setState("selectByWords");
2923
- }
2924
- this.$clickSelection = range;
2925
- this.select();
2926
- };
2927
- DefaultHandlers.prototype.onTripleClick = function (ev) {
2928
- var pos = ev.getDocumentPosition();
2929
- var editor = this.editor;
2930
- this.setState("selectByLines");
2931
- var range = editor.getSelectionRange();
2932
- if (range.isMultiLine() && range.contains(pos.row, pos.column)) {
2933
- this.$clickSelection = editor.selection.getLineRange(range.start.row);
2934
- this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;
2935
- }
2936
- else {
2937
- this.$clickSelection = editor.selection.getLineRange(pos.row);
2938
- }
2939
- this.select();
2940
- };
2941
- DefaultHandlers.prototype.onQuadClick = function (ev) {
2942
- var editor = this.editor;
2943
- editor.selectAll();
2944
- this.$clickSelection = editor.getSelectionRange();
2945
- this.setState("selectAll");
2946
- };
2947
- DefaultHandlers.prototype.onMouseWheel = function (ev) {
2948
- if (ev.getAccelKey())
2949
- return;
2950
- if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {
2951
- ev.wheelX = ev.wheelY;
2952
- ev.wheelY = 0;
2953
- }
2954
- var editor = this.editor;
2955
- if (!this.$lastScroll)
2956
- this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };
2957
- var prevScroll = this.$lastScroll;
2958
- var t = ev.domEvent.timeStamp;
2959
- var dt = t - prevScroll.t;
2960
- var vx = dt ? ev.wheelX / dt : prevScroll.vx;
2961
- var vy = dt ? ev.wheelY / dt : prevScroll.vy;
2962
- if (dt < SCROLL_COOLDOWN_T) {
2963
- vx = (vx + prevScroll.vx) / 2;
2964
- vy = (vy + prevScroll.vy) / 2;
2965
- }
2966
- var direction = Math.abs(vx / vy);
2967
- var canScroll = false;
2968
- if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))
2969
- canScroll = true;
2970
- if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))
2971
- canScroll = true;
2972
- if (canScroll) {
2973
- prevScroll.allowed = t;
2974
- }
2975
- else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {
2976
- var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)
2977
- && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);
2978
- if (isSlower) {
2979
- canScroll = true;
2980
- prevScroll.allowed = t;
2981
- }
2982
- else {
2983
- prevScroll.allowed = 0;
2984
- }
2985
- }
2986
- prevScroll.t = t;
2987
- prevScroll.vx = vx;
2988
- prevScroll.vy = vy;
2989
- if (canScroll) {
2990
- editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);
2991
- return ev.stop();
2992
- }
2993
- };
2994
- return DefaultHandlers;
2995
-}());
2996
-DefaultHandlers.prototype.selectEnd = DefaultHandlers.prototype.selectByLinesEnd;
2997
-DefaultHandlers.prototype.selectAllEnd = DefaultHandlers.prototype.selectByLinesEnd;
2998
-DefaultHandlers.prototype.selectByWordsEnd = DefaultHandlers.prototype.selectByLinesEnd;
2999
-exports.DefaultHandlers = DefaultHandlers;
3000
-function calcDistance(ax, ay, bx, by) {
3001
- return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));
3002
-}
3003
-function calcRangeOrientation(range, cursor) {
3004
- if (range.start.row == range.end.row)
3005
- var cmp = 2 * cursor.column - range.start.column - range.end.column;
3006
- else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)
3007
- var cmp = cursor.column - 4;
3008
- else
3009
- var cmp = 2 * cursor.row - range.start.row - range.end.row;
3010
- if (cmp < 0)
3011
- return { cursor: range.start, anchor: range.end };
3012
- else
3013
- return { cursor: range.end, anchor: range.start };
3014
-}
3015
-
3016
-});
3017
-
3018
-ace.define("ace/lib/scroll",["require","exports","module"], function(require, exports, module){exports.preventParentScroll = function preventParentScroll(event) {
3019
- event.stopPropagation();
3020
- var target = event.currentTarget;
3021
- var contentOverflows = target.scrollHeight > target.clientHeight;
3022
- if (!contentOverflows) {
3023
- event.preventDefault();
3024
- }
3025
-};
3026
-
3027
-});
3028
-
3029
-ace.define("ace/tooltip",["require","exports","module","ace/lib/dom","ace/lib/event","ace/range","ace/lib/scroll"], function(require, exports, module){"use strict";
3030
-var __extends = (this && this.__extends) || (function () {
3031
- var extendStatics = function (d, b) {
3032
- extendStatics = Object.setPrototypeOf ||
3033
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
3034
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
3035
- return extendStatics(d, b);
3036
- };
3037
- return function (d, b) {
3038
- if (typeof b !== "function" && b !== null)
3039
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
3040
- extendStatics(d, b);
3041
- function __() { this.constructor = d; }
3042
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
3043
- };
3044
-})();
3045
-var __values = (this && this.__values) || function(o) {
3046
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
3047
- if (m) return m.call(o);
3048
- if (o && typeof o.length === "number") return {
3049
- next: function () {
3050
- if (o && i >= o.length) o = void 0;
3051
- return { value: o && o[i++], done: !o };
3052
- }
3053
- };
3054
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
3055
-};
3056
-var dom = require("./lib/dom");
3057
-var event = require("./lib/event");
3058
-var Range = require("./range").Range;
3059
-var preventParentScroll = require("./lib/scroll").preventParentScroll;
3060
-var CLASSNAME = "ace_tooltip";
3061
-var Tooltip = /** @class */ (function () {
3062
- function Tooltip(parentNode) {
3063
- this.isOpen = false;
3064
- this.$element = null;
3065
- this.$parentNode = parentNode;
3066
- }
3067
- Tooltip.prototype.$init = function () {
3068
- this.$element = dom.createElement("div");
3069
- this.$element.className = CLASSNAME;
3070
- this.$element.style.display = "none";
3071
- this.$parentNode.appendChild(this.$element);
3072
- return this.$element;
3073
- };
3074
- Tooltip.prototype.getElement = function () {
3075
- return this.$element || this.$init();
3076
- };
3077
- Tooltip.prototype.setText = function (text) {
3078
- this.getElement().textContent = text;
3079
- };
3080
- Tooltip.prototype.setHtml = function (html) {
3081
- this.getElement().innerHTML = html;
3082
- };
3083
- Tooltip.prototype.setPosition = function (x, y) {
3084
- this.getElement().style.left = x + "px";
3085
- this.getElement().style.top = y + "px";
3086
- };
3087
- Tooltip.prototype.setClassName = function (className) {
3088
- dom.addCssClass(this.getElement(), className);
3089
- };
3090
- Tooltip.prototype.setTheme = function (theme) {
3091
- this.$element.className = CLASSNAME + " " +
3092
- (theme.isDark ? "ace_dark " : "") + (theme.cssClass || "");
3093
- };
3094
- Tooltip.prototype.show = function (text, x, y) {
3095
- if (text != null)
3096
- this.setText(text);
3097
- if (x != null && y != null)
3098
- this.setPosition(x, y);
3099
- if (!this.isOpen) {
3100
- this.getElement().style.display = "block";
3101
- this.isOpen = true;
3102
- }
3103
- };
3104
- Tooltip.prototype.hide = function (e) {
3105
- if (this.isOpen) {
3106
- this.getElement().style.display = "none";
3107
- this.getElement().className = CLASSNAME;
3108
- this.isOpen = false;
3109
- }
3110
- };
3111
- Tooltip.prototype.getHeight = function () {
3112
- return this.getElement().offsetHeight;
3113
- };
3114
- Tooltip.prototype.getWidth = function () {
3115
- return this.getElement().offsetWidth;
3116
- };
3117
- Tooltip.prototype.destroy = function () {
3118
- this.isOpen = false;
3119
- if (this.$element && this.$element.parentNode) {
3120
- this.$element.parentNode.removeChild(this.$element);
3121
- }
3122
- };
3123
- return Tooltip;
3124
-}());
3125
-var PopupManager = /** @class */ (function () {
3126
- function PopupManager() {
3127
- this.popups = [];
3128
- }
3129
- PopupManager.prototype.addPopup = function (popup) {
3130
- this.popups.push(popup);
3131
- this.updatePopups();
3132
- };
3133
- PopupManager.prototype.removePopup = function (popup) {
3134
- var index = this.popups.indexOf(popup);
3135
- if (index !== -1) {
3136
- this.popups.splice(index, 1);
3137
- this.updatePopups();
3138
- }
3139
- };
3140
- PopupManager.prototype.updatePopups = function () {
3141
- var e_1, _a, e_2, _b;
3142
- this.popups.sort(function (a, b) { return b.priority - a.priority; });
3143
- var visiblepopups = [];
3144
- try {
3145
- for (var _c = __values(this.popups), _d = _c.next(); !_d.done; _d = _c.next()) {
3146
- var popup = _d.value;
3147
- var shouldDisplay = true;
3148
- try {
3149
- for (var visiblepopups_1 = (e_2 = void 0, __values(visiblepopups)), visiblepopups_1_1 = visiblepopups_1.next(); !visiblepopups_1_1.done; visiblepopups_1_1 = visiblepopups_1.next()) {
3150
- var visiblePopup = visiblepopups_1_1.value;
3151
- if (this.doPopupsOverlap(visiblePopup, popup)) {
3152
- shouldDisplay = false;
3153
- break;
3154
- }
3155
- }
3156
- }
3157
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
3158
- finally {
3159
- try {
3160
- if (visiblepopups_1_1 && !visiblepopups_1_1.done && (_b = visiblepopups_1.return)) _b.call(visiblepopups_1);
3161
- }
3162
- finally { if (e_2) throw e_2.error; }
3163
- }
3164
- if (shouldDisplay) {
3165
- visiblepopups.push(popup);
3166
- }
3167
- else {
3168
- popup.hide();
3169
- }
3170
- }
3171
- }
3172
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
3173
- finally {
3174
- try {
3175
- if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
3176
- }
3177
- finally { if (e_1) throw e_1.error; }
3178
- }
3179
- };
3180
- PopupManager.prototype.doPopupsOverlap = function (popupA, popupB) {
3181
- var rectA = popupA.getElement().getBoundingClientRect();
3182
- var rectB = popupB.getElement().getBoundingClientRect();
3183
- return (rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom
3184
- > rectB.top);
3185
- };
3186
- return PopupManager;
3187
-}());
3188
-var popupManager = new PopupManager();
3189
-exports.popupManager = popupManager;
3190
-exports.Tooltip = Tooltip;
3191
-var HoverTooltip = /** @class */ (function (_super) {
3192
- __extends(HoverTooltip, _super);
3193
- function HoverTooltip(parentNode) {
3194
- if (parentNode === void 0) { parentNode = document.body; }
3195
- var _this = _super.call(this, parentNode) || this;
3196
- _this.timeout = undefined;
3197
- _this.lastT = 0;
3198
- _this.idleTime = 350;
3199
- _this.lastEvent = undefined;
3200
- _this.onMouseOut = _this.onMouseOut.bind(_this);
3201
- _this.onMouseMove = _this.onMouseMove.bind(_this);
3202
- _this.waitForHover = _this.waitForHover.bind(_this);
3203
- _this.hide = _this.hide.bind(_this);
3204
- var el = _this.getElement();
3205
- el.style.whiteSpace = "pre-wrap";
3206
- el.style.pointerEvents = "auto";
3207
- el.addEventListener("mouseout", _this.onMouseOut);
3208
- el.tabIndex = -1;
3209
- el.addEventListener("blur", function () {
3210
- if (!el.contains(document.activeElement))
3211
- this.hide();
3212
- }.bind(_this));
3213
- el.addEventListener("wheel", preventParentScroll);
3214
- return _this;
3215
- }
3216
- HoverTooltip.prototype.addToEditor = function (editor) {
3217
- editor.on("mousemove", this.onMouseMove);
3218
- editor.on("mousedown", this.hide);
3219
- editor.renderer.getMouseEventTarget().addEventListener("mouseout", this.onMouseOut, true);
3220
- };
3221
- HoverTooltip.prototype.removeFromEditor = function (editor) {
3222
- editor.off("mousemove", this.onMouseMove);
3223
- editor.off("mousedown", this.hide);
3224
- editor.renderer.getMouseEventTarget().removeEventListener("mouseout", this.onMouseOut, true);
3225
- if (this.timeout) {
3226
- clearTimeout(this.timeout);
3227
- this.timeout = null;
3228
- }
3229
- };
3230
- HoverTooltip.prototype.onMouseMove = function (e, editor) {
3231
- this.lastEvent = e;
3232
- this.lastT = Date.now();
3233
- var isMousePressed = editor.$mouseHandler.isMousePressed;
3234
- if (this.isOpen) {
3235
- var pos = this.lastEvent && this.lastEvent.getDocumentPosition();
3236
- if (!this.range
3237
- || !this.range.contains(pos.row, pos.column)
3238
- || isMousePressed
3239
- || this.isOutsideOfText(this.lastEvent)) {
3240
- this.hide();
3241
- }
3242
- }
3243
- if (this.timeout || isMousePressed)
3244
- return;
3245
- this.lastEvent = e;
3246
- this.timeout = setTimeout(this.waitForHover, this.idleTime);
3247
- };
3248
- HoverTooltip.prototype.waitForHover = function () {
3249
- if (this.timeout)
3250
- clearTimeout(this.timeout);
3251
- var dt = Date.now() - this.lastT;
3252
- if (this.idleTime - dt > 10) {
3253
- this.timeout = setTimeout(this.waitForHover, this.idleTime - dt);
3254
- return;
3255
- }
3256
- this.timeout = null;
3257
- if (this.lastEvent && !this.isOutsideOfText(this.lastEvent)) {
3258
- this.$gatherData(this.lastEvent, this.lastEvent.editor);
3259
- }
3260
- };
3261
- HoverTooltip.prototype.isOutsideOfText = function (e) {
3262
- var editor = e.editor;
3263
- var docPos = e.getDocumentPosition();
3264
- var line = editor.session.getLine(docPos.row);
3265
- if (docPos.column == line.length) {
3266
- var screenPos = editor.renderer.pixelToScreenCoordinates(e.clientX, e.clientY);
3267
- var clippedPos = editor.session.documentToScreenPosition(docPos.row, docPos.column);
3268
- if (clippedPos.column != screenPos.column
3269
- || clippedPos.row != screenPos.row) {
3270
- return true;
3271
- }
3272
- }
3273
- return false;
3274
- };
3275
- HoverTooltip.prototype.setDataProvider = function (value) {
3276
- this.$gatherData = value;
3277
- };
3278
- HoverTooltip.prototype.showForRange = function (editor, range, domNode, startingEvent) {
3279
- var MARGIN = 10;
3280
- if (startingEvent && startingEvent != this.lastEvent)
3281
- return;
3282
- if (this.isOpen && document.activeElement == this.getElement())
3283
- return;
3284
- var renderer = editor.renderer;
3285
- if (!this.isOpen) {
3286
- popupManager.addPopup(this);
3287
- this.$registerCloseEvents();
3288
- this.setTheme(renderer.theme);
3289
- }
3290
- this.isOpen = true;
3291
- this.addMarker(range, editor.session);
3292
- this.range = Range.fromPoints(range.start, range.end);
3293
- var position = renderer.textToScreenCoordinates(range.start.row, range.start.column);
3294
- var rect = renderer.scroller.getBoundingClientRect();
3295
- if (position.pageX < rect.left)
3296
- position.pageX = rect.left;
3297
- var element = this.getElement();
3298
- element.innerHTML = "";
3299
- element.appendChild(domNode);
3300
- element.style.maxHeight = "";
3301
- element.style.display = "block";
3302
- var labelHeight = element.clientHeight;
3303
- var labelWidth = element.clientWidth;
3304
- var spaceBelow = window.innerHeight - position.pageY - renderer.lineHeight;
3305
- var isAbove = true;
3306
- if (position.pageY - labelHeight < 0 && position.pageY < spaceBelow) {
3307
- isAbove = false;
3308
- }
3309
- element.style.maxHeight = (isAbove ? position.pageY : spaceBelow) - MARGIN + "px";
3310
- element.style.top = isAbove ? "" : position.pageY + renderer.lineHeight + "px";
3311
- element.style.bottom = isAbove ? window.innerHeight - position.pageY + "px" : "";
3312
- element.style.left = Math.min(position.pageX, window.innerWidth - labelWidth - MARGIN) + "px";
3313
- };
3314
- HoverTooltip.prototype.addMarker = function (range, session) {
3315
- if (this.marker) {
3316
- this.$markerSession.removeMarker(this.marker);
3317
- }
3318
- this.$markerSession = session;
3319
- this.marker = session && session.addMarker(range, "ace_highlight-marker", "text");
3320
- };
3321
- HoverTooltip.prototype.hide = function (e) {
3322
- if (!e && document.activeElement == this.getElement())
3323
- return;
3324
- if (e && e.target && (e.type != "keydown" || e.ctrlKey || e.metaKey) && this.$element.contains(e.target))
3325
- return;
3326
- this.lastEvent = null;
3327
- if (this.timeout)
3328
- clearTimeout(this.timeout);
3329
- this.timeout = null;
3330
- this.addMarker(null);
3331
- if (this.isOpen) {
3332
- this.$removeCloseEvents();
3333
- this.getElement().style.display = "none";
3334
- this.isOpen = false;
3335
- popupManager.removePopup(this);
3336
- }
3337
- };
3338
- HoverTooltip.prototype.$registerCloseEvents = function () {
3339
- window.addEventListener("keydown", this.hide, true);
3340
- window.addEventListener("wheel", this.hide, true);
3341
- window.addEventListener("mousedown", this.hide, true);
3342
- };
3343
- HoverTooltip.prototype.$removeCloseEvents = function () {
3344
- window.removeEventListener("keydown", this.hide, true);
3345
- window.removeEventListener("wheel", this.hide, true);
3346
- window.removeEventListener("mousedown", this.hide, true);
3347
- };
3348
- HoverTooltip.prototype.onMouseOut = function (e) {
3349
- if (this.timeout) {
3350
- clearTimeout(this.timeout);
3351
- this.timeout = null;
3352
- }
3353
- this.lastEvent = null;
3354
- if (!this.isOpen)
3355
- return;
3356
- if (!e.relatedTarget || this.getElement().contains(e.relatedTarget))
3357
- return;
3358
- if (e && e.currentTarget.contains(e.relatedTarget))
3359
- return;
3360
- if (!e.relatedTarget.classList.contains("ace_content"))
3361
- this.hide();
3362
- };
3363
- return HoverTooltip;
3364
-}(Tooltip));
3365
-exports.HoverTooltip = HoverTooltip;
3366
-
3367
-});
3368
-
3369
-ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/tooltip","ace/config","ace/lib/lang"], function(require, exports, module){"use strict";
3370
-var __extends = (this && this.__extends) || (function () {
3371
- var extendStatics = function (d, b) {
3372
- extendStatics = Object.setPrototypeOf ||
3373
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
3374
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
3375
- return extendStatics(d, b);
3376
- };
3377
- return function (d, b) {
3378
- if (typeof b !== "function" && b !== null)
3379
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
3380
- extendStatics(d, b);
3381
- function __() { this.constructor = d; }
3382
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
3383
- };
3384
-})();
3385
-var __values = (this && this.__values) || function(o) {
3386
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
3387
- if (m) return m.call(o);
3388
- if (o && typeof o.length === "number") return {
3389
- next: function () {
3390
- if (o && i >= o.length) o = void 0;
3391
- return { value: o && o[i++], done: !o };
3392
- }
3393
- };
3394
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
3395
-};
3396
-var dom = require("../lib/dom");
3397
-var event = require("../lib/event");
3398
-var Tooltip = require("../tooltip").Tooltip;
3399
-var nls = require("../config").nls;
3400
-var lang = require("../lib/lang");
3401
-function GutterHandler(mouseHandler) {
3402
- var editor = mouseHandler.editor;
3403
- var gutter = editor.renderer.$gutterLayer;
3404
- var tooltip = new GutterTooltip(editor);
3405
- mouseHandler.editor.setDefaultHandler("guttermousedown", function (e) {
3406
- if (!editor.isFocused() || e.getButton() != 0)
3407
- return;
3408
- var gutterRegion = gutter.getRegion(e);
3409
- if (gutterRegion == "foldWidgets")
3410
- return;
3411
- var row = e.getDocumentPosition().row;
3412
- var selection = editor.session.selection;
3413
- if (e.getShiftKey())
3414
- selection.selectTo(row, 0);
3415
- else {
3416
- if (e.domEvent.detail == 2) {
3417
- editor.selectAll();
3418
- return e.preventDefault();
3419
- }
3420
- mouseHandler.$clickSelection = editor.selection.getLineRange(row);
3421
- }
3422
- mouseHandler.setState("selectByLines");
3423
- mouseHandler.captureMouse(e);
3424
- return e.preventDefault();
3425
- });
3426
- var tooltipTimeout, mouseEvent;
3427
- function showTooltip() {
3428
- var row = mouseEvent.getDocumentPosition().row;
3429
- var maxRow = editor.session.getLength();
3430
- if (row == maxRow) {
3431
- var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;
3432
- var pos = mouseEvent.$pos;
3433
- if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))
3434
- return hideTooltip();
3435
- }
3436
- tooltip.showTooltip(row);
3437
- if (!tooltip.isOpen)
3438
- return;
3439
- editor.on("mousewheel", hideTooltip);
3440
- if (mouseHandler.$tooltipFollowsMouse) {
3441
- moveTooltip(mouseEvent);
3442
- }
3443
- else {
3444
- var gutterRow = mouseEvent.getGutterRow();
3445
- var gutterCell = gutter.$lines.get(gutterRow);
3446
- if (gutterCell) {
3447
- var gutterElement = gutterCell.element.querySelector(".ace_gutter_annotation");
3448
- var rect = gutterElement.getBoundingClientRect();
3449
- var style = tooltip.getElement().style;
3450
- style.left = rect.right + "px";
3451
- style.top = rect.bottom + "px";
3452
- }
3453
- else {
3454
- moveTooltip(mouseEvent);
3455
- }
3456
- }
3457
- }
3458
- function hideTooltip() {
3459
- if (tooltipTimeout)
3460
- tooltipTimeout = clearTimeout(tooltipTimeout);
3461
- if (tooltip.isOpen) {
3462
- tooltip.hideTooltip();
3463
- editor.off("mousewheel", hideTooltip);
3464
- }
3465
- }
3466
- function moveTooltip(e) {
3467
- tooltip.setPosition(e.x, e.y);
3468
- }
3469
- mouseHandler.editor.setDefaultHandler("guttermousemove", function (e) {
3470
- var target = e.domEvent.target || e.domEvent.srcElement;
3471
- if (dom.hasCssClass(target, "ace_fold-widget"))
3472
- return hideTooltip();
3473
- if (tooltip.isOpen && mouseHandler.$tooltipFollowsMouse)
3474
- moveTooltip(e);
3475
- mouseEvent = e;
3476
- if (tooltipTimeout)
3477
- return;
3478
- tooltipTimeout = setTimeout(function () {
3479
- tooltipTimeout = null;
3480
- if (mouseEvent && !mouseHandler.isMousePressed)
3481
- showTooltip();
3482
- else
3483
- hideTooltip();
3484
- }, 50);
3485
- });
3486
- event.addListener(editor.renderer.$gutter, "mouseout", function (e) {
3487
- mouseEvent = null;
3488
- if (!tooltip.isOpen || tooltipTimeout)
3489
- return;
3490
- tooltipTimeout = setTimeout(function () {
3491
- tooltipTimeout = null;
3492
- hideTooltip();
3493
- }, 50);
3494
- }, editor);
3495
- editor.on("changeSession", hideTooltip);
3496
- editor.on("input", hideTooltip);
3497
-}
3498
-exports.GutterHandler = GutterHandler;
3499
-var GutterTooltip = /** @class */ (function (_super) {
3500
- __extends(GutterTooltip, _super);
3501
- function GutterTooltip(editor) {
3502
- var _this = _super.call(this, editor.container) || this;
3503
- _this.editor = editor;
3504
- return _this;
3505
- }
3506
- GutterTooltip.prototype.setPosition = function (x, y) {
3507
- var windowWidth = window.innerWidth || document.documentElement.clientWidth;
3508
- var windowHeight = window.innerHeight || document.documentElement.clientHeight;
3509
- var width = this.getWidth();
3510
- var height = this.getHeight();
3511
- x += 15;
3512
- y += 15;
3513
- if (x + width > windowWidth) {
3514
- x -= (x + width) - windowWidth;
3515
- }
3516
- if (y + height > windowHeight) {
3517
- y -= 20 + height;
3518
- }
3519
- Tooltip.prototype.setPosition.call(this, x, y);
3520
- };
3521
- Object.defineProperty(GutterTooltip, "annotationLabels", {
3522
- get: function () {
3523
- return {
3524
- error: {
3525
- singular: nls("gutter-tooltip.aria-label.error.singular", "error"),
3526
- plural: nls("gutter-tooltip.aria-label.error.plural", "errors")
3527
- },
3528
- security: {
3529
- singular: nls("gutter-tooltip.aria-label.security.singular", "security finding"),
3530
- plural: nls("gutter-tooltip.aria-label.security.plural", "security findings")
3531
- },
3532
- warning: {
3533
- singular: nls("gutter-tooltip.aria-label.warning.singular", "warning"),
3534
- plural: nls("gutter-tooltip.aria-label.warning.plural", "warnings")
3535
- },
3536
- info: {
3537
- singular: nls("gutter-tooltip.aria-label.info.singular", "information message"),
3538
- plural: nls("gutter-tooltip.aria-label.info.plural", "information messages")
3539
- },
3540
- hint: {
3541
- singular: nls("gutter-tooltip.aria-label.hint.singular", "suggestion"),
3542
- plural: nls("gutter-tooltip.aria-label.hint.plural", "suggestions")
3543
- }
3544
- };
3545
- },
3546
- enumerable: false,
3547
- configurable: true
3548
- });
3549
- GutterTooltip.prototype.showTooltip = function (row) {
3550
- var _a;
3551
- var gutter = this.editor.renderer.$gutterLayer;
3552
- var annotationsInRow = gutter.$annotations[row];
3553
- var annotation;
3554
- if (annotationsInRow)
3555
- annotation = {
3556
- displayText: Array.from(annotationsInRow.displayText),
3557
- type: Array.from(annotationsInRow.type)
3558
- };
3559
- else
3560
- annotation = { displayText: [], type: [] };
3561
- var fold = gutter.session.getFoldLine(row);
3562
- if (fold && gutter.$showFoldedAnnotations) {
3563
- var annotationsInFold = { error: [], security: [], warning: [], info: [], hint: [] };
3564
- var severityRank = { error: 1, security: 2, warning: 3, info: 4, hint: 5 };
3565
- var mostSevereAnnotationTypeInFold;
3566
- for (var i = row + 1; i <= fold.end.row; i++) {
3567
- if (!gutter.$annotations[i])
3568
- continue;
3569
- for (var j = 0; j < gutter.$annotations[i].text.length; j++) {
3570
- var annotationType = gutter.$annotations[i].type[j];
3571
- annotationsInFold[annotationType].push(gutter.$annotations[i].text[j]);
3572
- if (!mostSevereAnnotationTypeInFold ||
3573
- severityRank[annotationType] < severityRank[mostSevereAnnotationTypeInFold]) {
3574
- mostSevereAnnotationTypeInFold = annotationType;
3575
- }
3576
- }
3577
- }
3578
- if (["error", "security", "warning"].includes(mostSevereAnnotationTypeInFold)) {
3579
- var summaryFoldedAnnotations = "".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), " in folded code.");
3580
- annotation.displayText.push(summaryFoldedAnnotations);
3581
- annotation.type.push(mostSevereAnnotationTypeInFold + "_fold");
3582
- }
3583
- }
3584
- if (annotation.displayText.length === 0)
3585
- return this.hide();
3586
- var annotationMessages = { error: [], security: [], warning: [], info: [], hint: [] };
3587
- var iconClassName = gutter.$useSvgGutterIcons ? "ace_icon_svg" : "ace_icon";
3588
- for (var i = 0; i < annotation.displayText.length; i++) {
3589
- var lineElement = dom.createElement("span");
3590
- var iconElement = dom.createElement("span");
3591
- (_a = iconElement.classList).add.apply(_a, ["ace_".concat(annotation.type[i]), iconClassName]);
3592
- iconElement.setAttribute("aria-label", "".concat(GutterTooltip.annotationLabels[annotation.type[i].replace("_fold", "")].singular));
3593
- iconElement.setAttribute("role", "img");
3594
- iconElement.appendChild(dom.createTextNode(" "));
3595
- lineElement.appendChild(iconElement);
3596
- lineElement.appendChild(dom.createTextNode(annotation.displayText[i]));
3597
- lineElement.appendChild(dom.createElement("br"));
3598
- annotationMessages[annotation.type[i].replace("_fold", "")].push(lineElement);
3599
- }
3600
- var tooltipElement = this.getElement();
3601
- dom.removeChildren(tooltipElement);
3602
- annotationMessages.error.forEach(function (el) { return tooltipElement.appendChild(el); });
3603
- annotationMessages.security.forEach(function (el) { return tooltipElement.appendChild(el); });
3604
- annotationMessages.warning.forEach(function (el) { return tooltipElement.appendChild(el); });
3605
- annotationMessages.info.forEach(function (el) { return tooltipElement.appendChild(el); });
3606
- annotationMessages.hint.forEach(function (el) { return tooltipElement.appendChild(el); });
3607
- tooltipElement.setAttribute("aria-live", "polite");
3608
- if (!this.isOpen) {
3609
- this.setTheme(this.editor.renderer.theme);
3610
- this.setClassName("ace_gutter-tooltip");
3611
- }
3612
- this.show();
3613
- this.editor._signal("showGutterTooltip", this);
3614
- };
3615
- GutterTooltip.prototype.hideTooltip = function () {
3616
- this.$element.removeAttribute("aria-live");
3617
- this.hide();
3618
- this.editor._signal("hideGutterTooltip", this);
3619
- };
3620
- GutterTooltip.annotationsToSummaryString = function (annotations) {
3621
- var e_1, _a;
3622
- var summary = [];
3623
- var annotationTypes = ["error", "security", "warning", "info", "hint"];
3624
- try {
3625
- for (var annotationTypes_1 = __values(annotationTypes), annotationTypes_1_1 = annotationTypes_1.next(); !annotationTypes_1_1.done; annotationTypes_1_1 = annotationTypes_1.next()) {
3626
- var annotationType = annotationTypes_1_1.value;
3627
- if (!annotations[annotationType].length)
3628
- continue;
3629
- var label = annotations[annotationType].length === 1 ? GutterTooltip.annotationLabels[annotationType].singular : GutterTooltip.annotationLabels[annotationType].plural;
3630
- summary.push("".concat(annotations[annotationType].length, " ").concat(label));
3631
- }
3632
- }
3633
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
3634
- finally {
3635
- try {
3636
- if (annotationTypes_1_1 && !annotationTypes_1_1.done && (_a = annotationTypes_1.return)) _a.call(annotationTypes_1);
3637
- }
3638
- finally { if (e_1) throw e_1.error; }
3639
- }
3640
- return summary.join(", ");
3641
- };
3642
- return GutterTooltip;
3643
-}(Tooltip));
3644
-exports.GutterTooltip = GutterTooltip;
3645
-
3646
-});
3647
-
3648
-ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module){"use strict";
3649
-var event = require("../lib/event");
3650
-var useragent = require("../lib/useragent");
3651
-var MouseEvent = /** @class */ (function () {
3652
- function MouseEvent(domEvent, editor) { this.speed; this.wheelX; this.wheelY;
3653
- this.domEvent = domEvent;
3654
- this.editor = editor;
3655
- this.x = this.clientX = domEvent.clientX;
3656
- this.y = this.clientY = domEvent.clientY;
3657
- this.$pos = null;
3658
- this.$inSelection = null;
3659
- this.propagationStopped = false;
3660
- this.defaultPrevented = false;
3661
- }
3662
- MouseEvent.prototype.stopPropagation = function () {
3663
- event.stopPropagation(this.domEvent);
3664
- this.propagationStopped = true;
3665
- };
3666
- MouseEvent.prototype.preventDefault = function () {
3667
- event.preventDefault(this.domEvent);
3668
- this.defaultPrevented = true;
3669
- };
3670
- MouseEvent.prototype.stop = function () {
3671
- this.stopPropagation();
3672
- this.preventDefault();
3673
- };
3674
- MouseEvent.prototype.getDocumentPosition = function () {
3675
- if (this.$pos)
3676
- return this.$pos;
3677
- this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);
3678
- return this.$pos;
3679
- };
3680
- MouseEvent.prototype.getGutterRow = function () {
3681
- var documentRow = this.getDocumentPosition().row;
3682
- var screenRow = this.editor.session.documentToScreenRow(documentRow, 0);
3683
- var screenTopRow = this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row, 0);
3684
- return screenRow - screenTopRow;
3685
- };
3686
- MouseEvent.prototype.inSelection = function () {
3687
- if (this.$inSelection !== null)
3688
- return this.$inSelection;
3689
- var editor = this.editor;
3690
- var selectionRange = editor.getSelectionRange();
3691
- if (selectionRange.isEmpty())
3692
- this.$inSelection = false;
3693
- else {
3694
- var pos = this.getDocumentPosition();
3695
- this.$inSelection = selectionRange.contains(pos.row, pos.column);
3696
- }
3697
- return this.$inSelection;
3698
- };
3699
- MouseEvent.prototype.getButton = function () {
3700
- return event.getButton(this.domEvent);
3701
- };
3702
- MouseEvent.prototype.getShiftKey = function () {
3703
- return this.domEvent.shiftKey;
3704
- };
3705
- MouseEvent.prototype.getAccelKey = function () {
3706
- return useragent.isMac ? this.domEvent.metaKey : this.domEvent.ctrlKey;
3707
- };
3708
- return MouseEvent;
3709
-}());
3710
-exports.MouseEvent = MouseEvent;
3711
-
3712
-});
3713
-
3714
-ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"], function(require, exports, module){"use strict";
3715
-var dom = require("../lib/dom");
3716
-var event = require("../lib/event");
3717
-var useragent = require("../lib/useragent");
3718
-var AUTOSCROLL_DELAY = 200;
3719
-var SCROLL_CURSOR_DELAY = 200;
3720
-var SCROLL_CURSOR_HYSTERESIS = 5;
3721
-function DragdropHandler(mouseHandler) {
3722
- var editor = mouseHandler.editor;
3723
- var dragImage = dom.createElement("div");
3724
- dragImage.style.cssText = "top:-100px;position:absolute;z-index:2147483647;opacity:0.5";
3725
- dragImage.textContent = "\xa0";
3726
- var exports = ["dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag"];
3727
- exports.forEach(function (x) {
3728
- mouseHandler[x] = this[x];
3729
- }, this);
3730
- editor.on("mousedown", this.onMouseDown.bind(mouseHandler));
3731
- var mouseTarget = editor.container;
3732
- var dragSelectionMarker, x, y;
3733
- var timerId, range;
3734
- var dragCursor, counter = 0;
3735
- var dragOperation;
3736
- var isInternal;
3737
- var autoScrollStartTime;
3738
- var cursorMovedTime;
3739
- var cursorPointOnCaretMoved;
3740
- this.onDragStart = function (e) {
3741
- if (this.cancelDrag || !mouseTarget.draggable) {
3742
- var self = this;
3743
- setTimeout(function () {
3744
- self.startSelect();
3745
- self.captureMouse(e);
3746
- }, 0);
3747
- return e.preventDefault();
3748
- }
3749
- range = editor.getSelectionRange();
3750
- var dataTransfer = e.dataTransfer;
3751
- dataTransfer.effectAllowed = editor.getReadOnly() ? "copy" : "copyMove";
3752
- editor.container.appendChild(dragImage);
3753
- dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0);
3754
- setTimeout(function () {
3755
- editor.container.removeChild(dragImage);
3756
- });
3757
- dataTransfer.clearData();
3758
- dataTransfer.setData("Text", editor.session.getTextRange());
3759
- isInternal = true;
3760
- this.setState("drag");
3761
- };
3762
- this.onDragEnd = function (e) {
3763
- mouseTarget.draggable = false;
3764
- isInternal = false;
3765
- this.setState(null);
3766
- if (!editor.getReadOnly()) {
3767
- var dropEffect = e.dataTransfer.dropEffect;
3768
- if (!dragOperation && dropEffect == "move")
3769
- editor.session.remove(editor.getSelectionRange());
3770
- editor.$resetCursorStyle();
3771
- }
3772
- this.editor.unsetStyle("ace_dragging");
3773
- this.editor.renderer.setCursorStyle("");
3774
- };
3775
- this.onDragEnter = function (e) {
3776
- if (editor.getReadOnly() || !canAccept(e.dataTransfer))
3777
- return;
3778
- x = e.clientX;
3779
- y = e.clientY;
3780
- if (!dragSelectionMarker)
3781
- addDragMarker();
3782
- counter++;
3783
- e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);
3784
- return event.preventDefault(e);
3785
- };
3786
- this.onDragOver = function (e) {
3787
- if (editor.getReadOnly() || !canAccept(e.dataTransfer))
3788
- return;
3789
- x = e.clientX;
3790
- y = e.clientY;
3791
- if (!dragSelectionMarker) {
3792
- addDragMarker();
3793
- counter++;
3794
- }
3795
- if (onMouseMoveTimer !== null)
3796
- onMouseMoveTimer = null;
3797
- e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);
3798
- return event.preventDefault(e);
3799
- };
3800
- this.onDragLeave = function (e) {
3801
- counter--;
3802
- if (counter <= 0 && dragSelectionMarker) {
3803
- clearDragMarker();
3804
- dragOperation = null;
3805
- return event.preventDefault(e);
3806
- }
3807
- };
3808
- this.onDrop = function (e) {
3809
- if (!dragCursor)
3810
- return;
3811
- var dataTransfer = e.dataTransfer;
3812
- if (isInternal) {
3813
- switch (dragOperation) {
3814
- case "move":
3815
- if (range.contains(dragCursor.row, dragCursor.column)) {
3816
- range = {
3817
- start: dragCursor,
3818
- end: dragCursor
3819
- };
3820
- }
3821
- else {
3822
- range = editor.moveText(range, dragCursor);
3823
- }
3824
- break;
3825
- case "copy":
3826
- range = editor.moveText(range, dragCursor, true);
3827
- break;
3828
- }
3829
- }
3830
- else {
3831
- var dropData = dataTransfer.getData('Text');
3832
- range = {
3833
- start: dragCursor,
3834
- end: editor.session.insert(dragCursor, dropData)
3835
- };
3836
- editor.focus();
3837
- dragOperation = null;
3838
- }
3839
- clearDragMarker();
3840
- return event.preventDefault(e);
3841
- };
3842
- event.addListener(mouseTarget, "dragstart", this.onDragStart.bind(mouseHandler), editor);
3843
- event.addListener(mouseTarget, "dragend", this.onDragEnd.bind(mouseHandler), editor);
3844
- event.addListener(mouseTarget, "dragenter", this.onDragEnter.bind(mouseHandler), editor);
3845
- event.addListener(mouseTarget, "dragover", this.onDragOver.bind(mouseHandler), editor);
3846
- event.addListener(mouseTarget, "dragleave", this.onDragLeave.bind(mouseHandler), editor);
3847
- event.addListener(mouseTarget, "drop", this.onDrop.bind(mouseHandler), editor);
3848
- function scrollCursorIntoView(cursor, prevCursor) {
3849
- var now = Date.now();
3850
- var vMovement = !prevCursor || cursor.row != prevCursor.row;
3851
- var hMovement = !prevCursor || cursor.column != prevCursor.column;
3852
- if (!cursorMovedTime || vMovement || hMovement) {
3853
- editor.moveCursorToPosition(cursor);
3854
- cursorMovedTime = now;
3855
- cursorPointOnCaretMoved = { x: x, y: y };
3856
- }
3857
- else {
3858
- var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);
3859
- if (distance > SCROLL_CURSOR_HYSTERESIS) {
3860
- cursorMovedTime = null;
3861
- }
3862
- else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {
3863
- editor.renderer.scrollCursorIntoView();
3864
- cursorMovedTime = null;
3865
- }
3866
- }
3867
- }
3868
- function autoScroll(cursor, prevCursor) {
3869
- var now = Date.now();
3870
- var lineHeight = editor.renderer.layerConfig.lineHeight;
3871
- var characterWidth = editor.renderer.layerConfig.characterWidth;
3872
- var editorRect = editor.renderer.scroller.getBoundingClientRect();
3873
- var offsets = {
3874
- x: {
3875
- left: x - editorRect.left,
3876
- right: editorRect.right - x
3877
- },
3878
- y: {
3879
- top: y - editorRect.top,
3880
- bottom: editorRect.bottom - y
3881
- }
3882
- };
3883
- var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);
3884
- var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);
3885
- var scrollCursor = { row: cursor.row, column: cursor.column };
3886
- if (nearestXOffset / characterWidth <= 2) {
3887
- scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);
3888
- }
3889
- if (nearestYOffset / lineHeight <= 1) {
3890
- scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);
3891
- }
3892
- var vScroll = cursor.row != scrollCursor.row;
3893
- var hScroll = cursor.column != scrollCursor.column;
3894
- var vMovement = !prevCursor || cursor.row != prevCursor.row;
3895
- if (vScroll || (hScroll && !vMovement)) {
3896
- if (!autoScrollStartTime)
3897
- autoScrollStartTime = now;
3898
- else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)
3899
- editor.renderer.scrollCursorIntoView(scrollCursor);
3900
- }
3901
- else {
3902
- autoScrollStartTime = null;
3903
- }
3904
- }
3905
- function onDragInterval() {
3906
- var prevCursor = dragCursor;
3907
- dragCursor = editor.renderer.screenToTextCoordinates(x, y);
3908
- scrollCursorIntoView(dragCursor, prevCursor);
3909
- autoScroll(dragCursor, prevCursor);
3910
- }
3911
- function addDragMarker() {
3912
- range = editor.selection.toOrientedRange();
3913
- dragSelectionMarker = editor.session.addMarker(range, "ace_selection", editor.getSelectionStyle());
3914
- editor.clearSelection();
3915
- if (editor.isFocused())
3916
- editor.renderer.$cursorLayer.setBlinking(false);
3917
- clearInterval(timerId);
3918
- onDragInterval();
3919
- timerId = setInterval(onDragInterval, 20);
3920
- counter = 0;
3921
- event.addListener(document, "mousemove", onMouseMove);
3922
- }
3923
- function clearDragMarker() {
3924
- clearInterval(timerId);
3925
- editor.session.removeMarker(dragSelectionMarker);
3926
- dragSelectionMarker = null;
3927
- editor.selection.fromOrientedRange(range);
3928
- if (editor.isFocused() && !isInternal)
3929
- editor.$resetCursorStyle();
3930
- range = null;
3931
- dragCursor = null;
3932
- counter = 0;
3933
- autoScrollStartTime = null;
3934
- cursorMovedTime = null;
3935
- event.removeListener(document, "mousemove", onMouseMove);
3936
- }
3937
- var onMouseMoveTimer = null;
3938
- function onMouseMove() {
3939
- if (onMouseMoveTimer == null) {
3940
- onMouseMoveTimer = setTimeout(function () {
3941
- if (onMouseMoveTimer != null && dragSelectionMarker)
3942
- clearDragMarker();
3943
- }, 20);
3944
- }
3945
- }
3946
- function canAccept(dataTransfer) {
3947
- var types = dataTransfer.types;
3948
- return !types || Array.prototype.some.call(types, function (type) {
3949
- return type == 'text/plain' || type == 'Text';
3950
- });
3951
- }
3952
- function getDropEffect(e) {
3953
- var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];
3954
- var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];
3955
- var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;
3956
- var effectAllowed = "uninitialized";
3957
- try {
3958
- effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();
3959
- }
3960
- catch (e) { }
3961
- var dropEffect = "none";
3962
- if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)
3963
- dropEffect = "copy";
3964
- else if (moveAllowed.indexOf(effectAllowed) >= 0)
3965
- dropEffect = "move";
3966
- else if (copyAllowed.indexOf(effectAllowed) >= 0)
3967
- dropEffect = "copy";
3968
- return dropEffect;
3969
- }
3970
-}
3971
-(function () {
3972
- this.dragWait = function () {
3973
- var interval = Date.now() - this.mousedownEvent.time;
3974
- if (interval > this.editor.getDragDelay())
3975
- this.startDrag();
3976
- };
3977
- this.dragWaitEnd = function () {
3978
- var target = this.editor.container;
3979
- target.draggable = false;
3980
- this.startSelect(this.mousedownEvent.getDocumentPosition());
3981
- this.selectEnd();
3982
- };
3983
- this.dragReadyEnd = function (e) {
3984
- this.editor.$resetCursorStyle();
3985
- this.editor.unsetStyle("ace_dragging");
3986
- this.editor.renderer.setCursorStyle("");
3987
- this.dragWaitEnd();
3988
- };
3989
- this.startDrag = function () {
3990
- this.cancelDrag = false;
3991
- var editor = this.editor;
3992
- var target = editor.container;
3993
- target.draggable = true;
3994
- editor.renderer.$cursorLayer.setBlinking(false);
3995
- editor.setStyle("ace_dragging");
3996
- var cursorStyle = useragent.isWin ? "default" : "move";
3997
- editor.renderer.setCursorStyle(cursorStyle);
3998
- this.setState("dragReady");
3999
- };
4000
- this.onMouseDrag = function (e) {
4001
- var target = this.editor.container;
4002
- if (useragent.isIE && this.state == "dragReady") {
4003
- var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);
4004
- if (distance > 3)
4005
- target.dragDrop();
4006
- }
4007
- if (this.state === "dragWait") {
4008
- var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);
4009
- if (distance > 0) {
4010
- target.draggable = false;
4011
- this.startSelect(this.mousedownEvent.getDocumentPosition());
4012
- }
4013
- }
4014
- };
4015
- this.onMouseDown = function (e) {
4016
- if (!this.$dragEnabled)
4017
- return;
4018
- this.mousedownEvent = e;
4019
- var editor = this.editor;
4020
- var inSelection = e.inSelection();
4021
- var button = e.getButton();
4022
- var clickCount = e.domEvent.detail || 1;
4023
- if (clickCount === 1 && button === 0 && inSelection) {
4024
- if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))
4025
- return;
4026
- this.mousedownEvent.time = Date.now();
4027
- var eventTarget = e.domEvent.target || e.domEvent.srcElement;
4028
- if ("unselectable" in eventTarget)
4029
- eventTarget.unselectable = "on";
4030
- if (editor.getDragDelay()) {
4031
- if (useragent.isWebKit) {
4032
- this.cancelDrag = true;
4033
- var mouseTarget = editor.container;
4034
- mouseTarget.draggable = true;
4035
- }
4036
- this.setState("dragWait");
4037
- }
4038
- else {
4039
- this.startDrag();
4040
- }
4041
- this.captureMouse(e, this.onMouseDrag.bind(this));
4042
- e.defaultPrevented = true;
4043
- }
4044
- };
4045
-}).call(DragdropHandler.prototype);
4046
-function calcDistance(ax, ay, bx, by) {
4047
- return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));
4048
-}
4049
-exports.DragdropHandler = DragdropHandler;
4050
-
4051
-});
4052
-
4053
-ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"], function(require, exports, module){"use strict";
4054
-var MouseEvent = require("./mouse_event").MouseEvent;
4055
-var event = require("../lib/event");
4056
-var dom = require("../lib/dom");
4057
-exports.addTouchListeners = function (el, editor) {
4058
- var mode = "scroll";
4059
- var startX;
4060
- var startY;
4061
- var touchStartT;
4062
- var lastT;
4063
- var longTouchTimer;
4064
- var animationTimer;
4065
- var animationSteps = 0;
4066
- var pos;
4067
- var clickCount = 0;
4068
- var vX = 0;
4069
- var vY = 0;
4070
- var pressed;
4071
- var contextMenu;
4072
- function createContextMenu() {
4073
- var clipboard = window.navigator && window.navigator.clipboard;
4074
- var isOpen = false;
4075
- var updateMenu = function () {
4076
- var selected = editor.getCopyText();
4077
- var hasUndo = editor.session.getUndoManager().hasUndo();
4078
- contextMenu.replaceChild(dom.buildDom(isOpen ? ["span",
4079
- !selected && canExecuteCommand("selectall") && ["span", { class: "ace_mobile-button", action: "selectall" }, "Select All"],
4080
- selected && canExecuteCommand("copy") && ["span", { class: "ace_mobile-button", action: "copy" }, "Copy"],
4081
- selected && canExecuteCommand("cut") && ["span", { class: "ace_mobile-button", action: "cut" }, "Cut"],
4082
- clipboard && canExecuteCommand("paste") && ["span", { class: "ace_mobile-button", action: "paste" }, "Paste"],
4083
- hasUndo && canExecuteCommand("undo") && ["span", { class: "ace_mobile-button", action: "undo" }, "Undo"],
4084
- canExecuteCommand("find") && ["span", { class: "ace_mobile-button", action: "find" }, "Find"],
4085
- canExecuteCommand("openCommandPalette") && ["span", { class: "ace_mobile-button", action: "openCommandPalette" }, "Palette"]
4086
- ] : ["span"]), contextMenu.firstChild);
4087
- };
4088
- var canExecuteCommand = function (/** @type {string} */ cmd) {
4089
- return editor.commands.canExecute(cmd, editor);
4090
- };
4091
- var handleClick = function (e) {
4092
- var action = e.target.getAttribute("action");
4093
- if (action == "more" || !isOpen) {
4094
- isOpen = !isOpen;
4095
- return updateMenu();
4096
- }
4097
- if (action == "paste") {
4098
- clipboard.readText().then(function (text) {
4099
- editor.execCommand(action, text);
4100
- });
4101
- }
4102
- else if (action) {
4103
- if (action == "cut" || action == "copy") {
4104
- if (clipboard)
4105
- clipboard.writeText(editor.getCopyText());
4106
- else
4107
- document.execCommand("copy");
4108
- }
4109
- editor.execCommand(action);
4110
- }
4111
- contextMenu.firstChild.style.display = "none";
4112
- isOpen = false;
4113
- if (action != "openCommandPalette")
4114
- editor.focus();
4115
- };
4116
- contextMenu = dom.buildDom(["div",
4117
- {
4118
- class: "ace_mobile-menu",
4119
- ontouchstart: function (e) {
4120
- mode = "menu";
4121
- e.stopPropagation();
4122
- e.preventDefault();
4123
- editor.textInput.focus();
4124
- },
4125
- ontouchend: function (e) {
4126
- e.stopPropagation();
4127
- e.preventDefault();
4128
- handleClick(e);
4129
- },
4130
- onclick: handleClick
4131
- },
4132
- ["span"],
4133
- ["span", { class: "ace_mobile-button", action: "more" }, "..."]
4134
- ], editor.container);
4135
- }
4136
- function showContextMenu() {
4137
- if (!editor.getOption("enableMobileMenu")) {
4138
- if (contextMenu) {
4139
- hideContextMenu();
4140
- }
4141
- return;
4142
- }
4143
- if (!contextMenu)
4144
- createContextMenu();
4145
- var cursor = editor.selection.cursor;
4146
- var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);
4147
- var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;
4148
- var scrollLeft = editor.renderer.scrollLeft;
4149
- var rect = editor.container.getBoundingClientRect();
4150
- contextMenu.style.top = pagePos.pageY - rect.top - 3 + "px";
4151
- if (pagePos.pageX - rect.left < rect.width - 70) {
4152
- contextMenu.style.left = "";
4153
- contextMenu.style.right = "10px";
4154
- }
4155
- else {
4156
- contextMenu.style.right = "";
4157
- contextMenu.style.left = leftOffset + scrollLeft - rect.left + "px";
4158
- }
4159
- contextMenu.style.display = "";
4160
- contextMenu.firstChild.style.display = "none";
4161
- editor.on("input", hideContextMenu);
4162
- }
4163
- function hideContextMenu(e) {
4164
- if (contextMenu)
4165
- contextMenu.style.display = "none";
4166
- editor.off("input", hideContextMenu);
4167
- }
4168
- function handleLongTap() {
4169
- longTouchTimer = null;
4170
- clearTimeout(longTouchTimer);
4171
- var range = editor.selection.getRange();
4172
- var inSelection = range.contains(pos.row, pos.column);
4173
- if (range.isEmpty() || !inSelection) {
4174
- editor.selection.moveToPosition(pos);
4175
- editor.selection.selectWord();
4176
- }
4177
- mode = "wait";
4178
- showContextMenu();
4179
- }
4180
- function switchToSelectionMode() {
4181
- longTouchTimer = null;
4182
- clearTimeout(longTouchTimer);
4183
- editor.selection.moveToPosition(pos);
4184
- var range = clickCount >= 2
4185
- ? editor.selection.getLineRange(pos.row)
4186
- : editor.session.getBracketRange(pos);
4187
- if (range && !range.isEmpty()) {
4188
- editor.selection.setRange(range);
4189
- }
4190
- else {
4191
- editor.selection.selectWord();
4192
- }
4193
- mode = "wait";
4194
- }
4195
- event.addListener(el, "contextmenu", function (e) {
4196
- if (!pressed)
4197
- return;
4198
- var textarea = editor.textInput.getElement();
4199
- textarea.focus();
4200
- }, editor);
4201
- event.addListener(el, "touchstart", function (e) {
4202
- var touches = e.touches;
4203
- if (longTouchTimer || touches.length > 1) {
4204
- clearTimeout(longTouchTimer);
4205
- longTouchTimer = null;
4206
- touchStartT = -1;
4207
- mode = "zoom";
4208
- return;
4209
- }
4210
- pressed = editor.$mouseHandler.isMousePressed = true;
4211
- var h = editor.renderer.layerConfig.lineHeight;
4212
- var w = editor.renderer.layerConfig.lineHeight;
4213
- var t = e.timeStamp;
4214
- lastT = t;
4215
- var touchObj = touches[0];
4216
- var x = touchObj.clientX;
4217
- var y = touchObj.clientY;
4218
- if (Math.abs(startX - x) + Math.abs(startY - y) > h)
4219
- touchStartT = -1;
4220
- startX = e.clientX = x;
4221
- startY = e.clientY = y;
4222
- vX = vY = 0;
4223
- var ev = new MouseEvent(e, editor);
4224
- pos = ev.getDocumentPosition();
4225
- if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {
4226
- clickCount++;
4227
- e.preventDefault();
4228
- e.button = 0;
4229
- switchToSelectionMode();
4230
- }
4231
- else {
4232
- clickCount = 0;
4233
- var cursor = editor.selection.cursor;
4234
- var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;
4235
- var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);
4236
- var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);
4237
- var rect = editor.renderer.scroller.getBoundingClientRect();
4238
- var offsetTop = editor.renderer.layerConfig.offset;
4239
- var offsetLeft = editor.renderer.scrollLeft;
4240
- var weightedDistance = function (x, y) {
4241
- x = x / w;
4242
- y = y / h - 0.75;
4243
- return x * x + y * y;
4244
- };
4245
- if (e.clientX < rect.left) {
4246
- mode = "zoom";
4247
- return;
4248
- }
4249
- var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop);
4250
- var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop);
4251
- if (diff1 < 3.5 && diff2 < 3.5)
4252
- mode = diff1 > diff2 ? "cursor" : "anchor";
4253
- if (diff2 < 3.5)
4254
- mode = "anchor";
4255
- else if (diff1 < 3.5)
4256
- mode = "cursor";
4257
- else
4258
- mode = "scroll";
4259
- longTouchTimer = setTimeout(handleLongTap, 450);
4260
- }
4261
- touchStartT = t;
4262
- }, editor);
4263
- event.addListener(el, "touchend", function (e) {
4264
- pressed = editor.$mouseHandler.isMousePressed = false;
4265
- if (animationTimer)
4266
- clearInterval(animationTimer);
4267
- if (mode == "zoom") {
4268
- mode = "";
4269
- animationSteps = 0;
4270
- }
4271
- else if (longTouchTimer) {
4272
- editor.selection.moveToPosition(pos);
4273
- animationSteps = 0;
4274
- showContextMenu();
4275
- }
4276
- else if (mode == "scroll") {
4277
- animate();
4278
- hideContextMenu();
4279
- }
4280
- else {
4281
- showContextMenu();
4282
- }
4283
- clearTimeout(longTouchTimer);
4284
- longTouchTimer = null;
4285
- }, editor);
4286
- event.addListener(el, "touchmove", function (e) {
4287
- if (longTouchTimer) {
4288
- clearTimeout(longTouchTimer);
4289
- longTouchTimer = null;
4290
- }
4291
- var touches = e.touches;
4292
- if (touches.length > 1 || mode == "zoom")
4293
- return;
4294
- var touchObj = touches[0];
4295
- var wheelX = startX - touchObj.clientX;
4296
- var wheelY = startY - touchObj.clientY;
4297
- if (mode == "wait") {
4298
- if (wheelX * wheelX + wheelY * wheelY > 4)
4299
- mode = "cursor";
4300
- else
4301
- return e.preventDefault();
4302
- }
4303
- startX = touchObj.clientX;
4304
- startY = touchObj.clientY;
4305
- e.clientX = touchObj.clientX;
4306
- e.clientY = touchObj.clientY;
4307
- var t = e.timeStamp;
4308
- var dt = t - lastT;
4309
- lastT = t;
4310
- if (mode == "scroll") {
4311
- var mouseEvent = new MouseEvent(e, editor);
4312
- mouseEvent.speed = 1;
4313
- mouseEvent.wheelX = wheelX;
4314
- mouseEvent.wheelY = wheelY;
4315
- if (10 * Math.abs(wheelX) < Math.abs(wheelY))
4316
- wheelX = 0;
4317
- if (10 * Math.abs(wheelY) < Math.abs(wheelX))
4318
- wheelY = 0;
4319
- if (dt != 0) {
4320
- vX = wheelX / dt;
4321
- vY = wheelY / dt;
4322
- }
4323
- editor._emit("mousewheel", mouseEvent);
4324
- if (!mouseEvent.propagationStopped) {
4325
- vX = vY = 0;
4326
- }
4327
- }
4328
- else {
4329
- var ev = new MouseEvent(e, editor);
4330
- var pos = ev.getDocumentPosition();
4331
- if (mode == "cursor")
4332
- editor.selection.moveCursorToPosition(pos);
4333
- else if (mode == "anchor")
4334
- editor.selection.setSelectionAnchor(pos.row, pos.column);
4335
- editor.renderer.scrollCursorIntoView(pos);
4336
- e.preventDefault();
4337
- }
4338
- }, editor);
4339
- function animate() {
4340
- animationSteps += 60;
4341
- animationTimer = setInterval(function () {
4342
- if (animationSteps-- <= 0) {
4343
- clearInterval(animationTimer);
4344
- animationTimer = null;
4345
- }
4346
- if (Math.abs(vX) < 0.01)
4347
- vX = 0;
4348
- if (Math.abs(vY) < 0.01)
4349
- vY = 0;
4350
- if (animationSteps < 20)
4351
- vX = 0.9 * vX;
4352
- if (animationSteps < 20)
4353
- vY = 0.9 * vY;
4354
- var oldScrollTop = editor.session.getScrollTop();
4355
- editor.renderer.scrollBy(10 * vX, 10 * vY);
4356
- if (oldScrollTop == editor.session.getScrollTop())
4357
- animationSteps = 0;
4358
- }, 10);
4359
- }
4360
-};
4361
-
4362
-});
4363
-
4364
-ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/mouse/touch_handler","ace/config"], function(require, exports, module){"use strict";
4365
-var event = require("../lib/event");
4366
-var useragent = require("../lib/useragent");
4367
-var DefaultHandlers = require("./default_handlers").DefaultHandlers;
4368
-var DefaultGutterHandler = require("./default_gutter_handler").GutterHandler;
4369
-var MouseEvent = require("./mouse_event").MouseEvent;
4370
-var DragdropHandler = require("./dragdrop_handler").DragdropHandler;
4371
-var addTouchListeners = require("./touch_handler").addTouchListeners;
4372
-var config = require("../config");
4373
-var MouseHandler = /** @class */ (function () {
4374
- function MouseHandler(editor) { this.$dragDelay; this.$dragEnabled; this.$mouseMoved; this.mouseEvent; this.$focusTimeout;
4375
- var _self = this;
4376
- this.editor = editor;
4377
- new DefaultHandlers(this);
4378
- new DefaultGutterHandler(this);
4379
- new DragdropHandler(this);
4380
- var focusEditor = function (e) {
4381
- var windowBlurred = !document.hasFocus || !document.hasFocus()
4382
- || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement());
4383
- if (windowBlurred)
4384
- window.focus();
4385
- editor.focus();
4386
- setTimeout(function () {
4387
- if (!editor.isFocused())
4388
- editor.focus();
4389
- });
4390
- };
4391
- var mouseTarget = editor.renderer.getMouseEventTarget();
4392
- event.addListener(mouseTarget, "click", this.onMouseEvent.bind(this, "click"), editor);
4393
- event.addListener(mouseTarget, "mousemove", this.onMouseMove.bind(this, "mousemove"), editor);
4394
- event.addMultiMouseDownListener([
4395
- mouseTarget,
4396
- editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner,
4397
- editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner,
4398
- editor.textInput && editor.textInput.getElement()
4399
- ].filter(Boolean), [400, 300, 250], this, "onMouseEvent", editor);
4400
- event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, "mousewheel"), editor);
4401
- addTouchListeners(editor.container, editor);
4402
- var gutterEl = editor.renderer.$gutter;
4403
- event.addListener(gutterEl, "mousedown", this.onMouseEvent.bind(this, "guttermousedown"), editor);
4404
- event.addListener(gutterEl, "click", this.onMouseEvent.bind(this, "gutterclick"), editor);
4405
- event.addListener(gutterEl, "dblclick", this.onMouseEvent.bind(this, "gutterdblclick"), editor);
4406
- event.addListener(gutterEl, "mousemove", this.onMouseEvent.bind(this, "guttermousemove"), editor);
4407
- event.addListener(mouseTarget, "mousedown", focusEditor, editor);
4408
- event.addListener(gutterEl, "mousedown", focusEditor, editor);
4409
- if (useragent.isIE && editor.renderer.scrollBarV) {
4410
- event.addListener(editor.renderer.scrollBarV.element, "mousedown", focusEditor, editor);
4411
- event.addListener(editor.renderer.scrollBarH.element, "mousedown", focusEditor, editor);
4412
- }
4413
- editor.on("mousemove", function (e) {
4414
- if (_self.state || _self.$dragDelay || !_self.$dragEnabled)
4415
- return;
4416
- var character = editor.renderer.screenToTextCoordinates(e.x, e.y);
4417
- var range = editor.session.selection.getRange();
4418
- var renderer = editor.renderer;
4419
- if (!range.isEmpty() && range.insideStart(character.row, character.column)) {
4420
- renderer.setCursorStyle("default");
4421
- }
4422
- else {
4423
- renderer.setCursorStyle("");
4424
- }
4425
- }, //@ts-expect-error TODO: seems mistyping - should be boolean
4426
- editor);
4427
- }
4428
- MouseHandler.prototype.onMouseEvent = function (name, e) {
4429
- if (!this.editor.session)
4430
- return;
4431
- this.editor._emit(name, new MouseEvent(e, this.editor));
4432
- };
4433
- MouseHandler.prototype.onMouseMove = function (name, e) {
4434
- var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;
4435
- if (!listeners || !listeners.length)
4436
- return;
4437
- this.editor._emit(name, new MouseEvent(e, this.editor));
4438
- };
4439
- MouseHandler.prototype.onMouseWheel = function (name, e) {
4440
- var mouseEvent = new MouseEvent(e, this.editor);
4441
- mouseEvent.speed = this.$scrollSpeed * 2;
4442
- mouseEvent.wheelX = e.wheelX;
4443
- mouseEvent.wheelY = e.wheelY;
4444
- this.editor._emit(name, mouseEvent);
4445
- };
4446
- MouseHandler.prototype.setState = function (state) {
4447
- this.state = state;
4448
- };
4449
- MouseHandler.prototype.captureMouse = function (ev, mouseMoveHandler) {
4450
- this.x = ev.x;
4451
- this.y = ev.y;
4452
- this.isMousePressed = true;
4453
- var editor = this.editor;
4454
- var renderer = this.editor.renderer;
4455
- renderer.$isMousePressed = true;
4456
- var self = this;
4457
- var onMouseMove = function (e) {
4458
- if (!e)
4459
- return;
4460
- if (useragent.isWebKit && !e.which && self.releaseMouse)
4461
- return self.releaseMouse();
4462
- self.x = e.clientX;
4463
- self.y = e.clientY;
4464
- mouseMoveHandler && mouseMoveHandler(e);
4465
- self.mouseEvent = new MouseEvent(e, self.editor);
4466
- self.$mouseMoved = true;
4467
- };
4468
- var onCaptureEnd = function (e) {
4469
- editor.off("beforeEndOperation", onOperationEnd);
4470
- clearInterval(timerId);
4471
- if (editor.session)
4472
- onCaptureInterval();
4473
- self[self.state + "End"] && self[self.state + "End"](e);
4474
- self.state = "";
4475
- self.isMousePressed = renderer.$isMousePressed = false;
4476
- if (renderer.$keepTextAreaAtCursor)
4477
- renderer.$moveTextAreaToCursor();
4478
- self.$onCaptureMouseMove = self.releaseMouse = null;
4479
- e && self.onMouseEvent("mouseup", e);
4480
- editor.endOperation();
4481
- };
4482
- var onCaptureInterval = function () {
4483
- self[self.state] && self[self.state]();
4484
- self.$mouseMoved = false;
4485
- };
4486
- if (useragent.isOldIE && ev.domEvent.type == "dblclick") {
4487
- return setTimeout(function () { onCaptureEnd(ev); });
4488
- }
4489
- var onOperationEnd = function (e) {
4490
- if (!self.releaseMouse)
4491
- return;
4492
- if (editor.curOp.command.name && editor.curOp.selectionChanged) {
4493
- self[self.state + "End"] && self[self.state + "End"]();
4494
- self.state = "";
4495
- self.releaseMouse();
4496
- }
4497
- };
4498
- editor.on("beforeEndOperation", onOperationEnd);
4499
- editor.startOperation({ command: { name: "mouse" } });
4500
- self.$onCaptureMouseMove = onMouseMove;
4501
- self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd);
4502
- var timerId = setInterval(onCaptureInterval, 20);
4503
- };
4504
- MouseHandler.prototype.cancelContextMenu = function () {
4505
- var stop = function (e) {
4506
- if (e && e.domEvent && e.domEvent.type != "contextmenu")
4507
- return;
4508
- this.editor.off("nativecontextmenu", stop);
4509
- if (e && e.domEvent)
4510
- event.stopEvent(e.domEvent);
4511
- }.bind(this);
4512
- setTimeout(stop, 10);
4513
- this.editor.on("nativecontextmenu", stop);
4514
- };
4515
- MouseHandler.prototype.destroy = function () {
4516
- if (this.releaseMouse)
4517
- this.releaseMouse();
4518
- };
4519
- return MouseHandler;
4520
-}());
4521
-MouseHandler.prototype.releaseMouse = null;
4522
-config.defineOptions(MouseHandler.prototype, "mouseHandler", {
4523
- scrollSpeed: { initialValue: 2 },
4524
- dragDelay: { initialValue: (useragent.isMac ? 150 : 0) },
4525
- dragEnabled: { initialValue: true },
4526
- focusTimeout: { initialValue: 0 },
4527
- tooltipFollowsMouse: { initialValue: true }
4528
-});
4529
-exports.MouseHandler = MouseHandler;
4530
-
4531
-});
4532
-
4533
-ace.define("ace/mouse/fold_handler",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict";
4534
-var dom = require("../lib/dom");
4535
-var FoldHandler = /** @class */ (function () {
4536
- function FoldHandler(editor) {
4537
- editor.on("click", function (e) {
4538
- var position = e.getDocumentPosition();
4539
- var session = editor.session;
4540
- var fold = session.getFoldAt(position.row, position.column, 1);
4541
- if (fold) {
4542
- if (e.getAccelKey())
4543
- session.removeFold(fold);
4544
- else
4545
- session.expandFold(fold);
4546
- e.stop();
4547
- }
4548
- var target = e.domEvent && e.domEvent.target;
4549
- if (target && dom.hasCssClass(target, "ace_inline_button")) {
4550
- if (dom.hasCssClass(target, "ace_toggle_wrap")) {
4551
- session.setOption("wrap", !session.getUseWrapMode());
4552
- editor.renderer.scrollCursorIntoView();
4553
- }
4554
- }
4555
- });
4556
- editor.on("gutterclick", function (e) {
4557
- var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);
4558
- if (gutterRegion == "foldWidgets") {
4559
- var row = e.getDocumentPosition().row;
4560
- var session = editor.session;
4561
- if (session.foldWidgets && session.foldWidgets[row])
4562
- editor.session.onFoldWidgetClick(row, e);
4563
- if (!editor.isFocused())
4564
- editor.focus();
4565
- e.stop();
4566
- }
4567
- });
4568
- editor.on("gutterdblclick", function (e) {
4569
- var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);
4570
- if (gutterRegion == "foldWidgets") {
4571
- var row = e.getDocumentPosition().row;
4572
- var session = editor.session;
4573
- var data = session.getParentFoldRangeData(row, true);
4574
- var range = data.range || data.firstRange;
4575
- if (range) {
4576
- row = range.start.row;
4577
- var fold = session.getFoldAt(row, session.getLine(row).length, 1);
4578
- if (fold) {
4579
- session.removeFold(fold);
4580
- }
4581
- else {
4582
- session.addFold("...", range);
4583
- editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 });
4584
- }
4585
- }
4586
- e.stop();
4587
- }
4588
- });
4589
- }
4590
- return FoldHandler;
4591
-}());
4592
-exports.FoldHandler = FoldHandler;
4593
-
4594
-});
4595
-
4596
-ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"], function(require, exports, module){"use strict";
4597
-var keyUtil = require("../lib/keys");
4598
-var event = require("../lib/event");
4599
-var KeyBinding = /** @class */ (function () {
4600
- function KeyBinding(editor) {
4601
- this.$editor = editor;
4602
- this.$data = { editor: editor };
4603
- this.$handlers = [];
4604
- this.setDefaultHandler(editor.commands);
4605
- }
4606
- KeyBinding.prototype.setDefaultHandler = function (kb) {
4607
- this.removeKeyboardHandler(this.$defaultHandler);
4608
- this.$defaultHandler = kb;
4609
- this.addKeyboardHandler(kb, 0);
4610
- };
4611
- KeyBinding.prototype.setKeyboardHandler = function (kb) {
4612
- var h = this.$handlers;
4613
- if (h[h.length - 1] == kb)
4614
- return;
4615
- while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler)
4616
- this.removeKeyboardHandler(h[h.length - 1]);
4617
- this.addKeyboardHandler(kb, 1);
4618
- };
4619
- KeyBinding.prototype.addKeyboardHandler = function (kb, pos) {
4620
- if (!kb)
4621
- return;
4622
- if (typeof kb == "function" && !kb.handleKeyboard)
4623
- kb.handleKeyboard = kb;
4624
- var i = this.$handlers.indexOf(kb);
4625
- if (i != -1)
4626
- this.$handlers.splice(i, 1);
4627
- if (pos == undefined)
4628
- this.$handlers.push(kb);
4629
- else
4630
- this.$handlers.splice(pos, 0, kb);
4631
- if (i == -1 && kb.attach)
4632
- kb.attach(this.$editor);
4633
- };
4634
- KeyBinding.prototype.removeKeyboardHandler = function (kb) {
4635
- var i = this.$handlers.indexOf(kb);
4636
- if (i == -1)
4637
- return false;
4638
- this.$handlers.splice(i, 1);
4639
- kb.detach && kb.detach(this.$editor);
4640
- return true;
4641
- };
4642
- KeyBinding.prototype.getKeyboardHandler = function () {
4643
- return this.$handlers[this.$handlers.length - 1];
4644
- };
4645
- KeyBinding.prototype.getStatusText = function () {
4646
- var data = this.$data;
4647
- var editor = data.editor;
4648
- return this.$handlers.map(function (h) {
4649
- return h.getStatusText && h.getStatusText(editor, data) || "";
4650
- }).filter(Boolean).join(" ");
4651
- };
4652
- KeyBinding.prototype.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) {
4653
- var toExecute;
4654
- var success = false;
4655
- var commands = this.$editor.commands;
4656
- for (var i = this.$handlers.length; i--;) {
4657
- toExecute = this.$handlers[i].handleKeyboard(
4658
- this.$data, hashId, keyString, keyCode, e);
4659
- if (!toExecute || !toExecute.command)
4660
- continue;
4661
- if (toExecute.command == "null") {
4662
- success = true;
4663
- }
4664
- else {
4665
- success = commands.exec(toExecute.command, this.$editor, toExecute.args, e);
4666
- }
4667
- if (success && e && hashId != -1 &&
4668
- toExecute["passEvent"] != true && toExecute.command["passEvent"] != true) {
4669
- event.stopEvent(e);
4670
- }
4671
- if (success)
4672
- break;
4673
- }
4674
- if (!success && hashId == -1) {
4675
- toExecute = { command: "insertstring" };
4676
- success = commands.exec("insertstring", this.$editor, keyString);
4677
- }
4678
- if (success && this.$editor._signal)
4679
- this.$editor._signal("keyboardActivity", toExecute);
4680
- return success;
4681
- };
4682
- KeyBinding.prototype.onCommandKey = function (e, hashId, keyCode) {
4683
- var keyString = keyUtil.keyCodeToString(keyCode);
4684
- return this.$callKeyboardHandlers(hashId, keyString, keyCode, e);
4685
- };
4686
- KeyBinding.prototype.onTextInput = function (text) {
4687
- return this.$callKeyboardHandlers(-1, text);
4688
- };
4689
- return KeyBinding;
4690
-}());
4691
-exports.KeyBinding = KeyBinding;
4692
-
4693
-});
4694
-
4695
-ace.define("ace/lib/bidiutil",["require","exports","module"], function(require, exports, module){"use strict";
4696
-var ArabicAlefBetIntervalsBegine = ['\u0621', '\u0641'];
4697
-var ArabicAlefBetIntervalsEnd = ['\u063A', '\u064a'];
4698
-var dir = 0, hiLevel = 0;
4699
-var lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false;
4700
-var impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]
4701
-];
4702
-var impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1]
4703
-];
4704
-var LTR = 0, RTL = 1;
4705
-var L = 0;
4706
-var R = 1;
4707
-var EN = 2;
4708
-var AN = 3;
4709
-var ON = 4;
4710
-var B = 5;
4711
-var S = 6;
4712
-var AL = 7;
4713
-var WS = 8;
4714
-var CS = 9;
4715
-var ES = 10;
4716
-var ET = 11;
4717
-var NSM = 12;
4718
-var LRE = 13;
4719
-var RLE = 14;
4720
-var PDF = 15;
4721
-var LRO = 16;
4722
-var RLO = 17;
4723
-var BN = 18;
4724
-var UnicodeTBL00 = [
4725
- BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN,
4726
- BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S,
4727
- WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS,
4728
- EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON,
4729
- ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,
4730
- L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON,
4731
- ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,
4732
- L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN,
4733
- BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,
4734
- BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,
4735
- CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON,
4736
- ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON
4737
-];
4738
-var UnicodeTBL20 = [
4739
- WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R,
4740
- ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,
4741
- ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS,
4742
- ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,
4743
- ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,
4744
- ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS
4745
-];
4746
-function _computeLevels(chars, levels, len, charTypes) {
4747
- var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = [];
4748
- if (!charTypes) {
4749
- for (i = 0, charTypes = []; i < len; i++) {
4750
- charTypes[i] = _getCharacterType(chars[i]);
4751
- }
4752
- }
4753
- hiLevel = dir;
4754
- lastArabic = false;
4755
- hasUBAT_AL = false;
4756
- hasUBAT_B = false;
4757
- hasUBAT_S = false;
4758
- for (ix = 0; ix < len; ix++) {
4759
- prevState = newState;
4760
- classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix);
4761
- newState = impTab[prevState][newClass];
4762
- action = newState & 0xF0;
4763
- newState &= 0x0F;
4764
- levels[ix] = newLevel = impTab[newState][5];
4765
- if (action > 0) {
4766
- if (action == 0x10) {
4767
- for (i = condPos; i < ix; i++) {
4768
- levels[i] = 1;
4769
- }
4770
- condPos = -1;
4771
- }
4772
- else {
4773
- condPos = -1;
4774
- }
4775
- }
4776
- cond = impTab[newState][6];
4777
- if (cond) {
4778
- if (condPos == -1) {
4779
- condPos = ix;
4780
- }
4781
- }
4782
- else {
4783
- if (condPos > -1) {
4784
- for (i = condPos; i < ix; i++) {
4785
- levels[i] = newLevel;
4786
- }
4787
- condPos = -1;
4788
- }
4789
- }
4790
- if (charTypes[ix] == B) {
4791
- levels[ix] = 0;
4792
- }
4793
- hiLevel |= newLevel;
4794
- }
4795
- if (hasUBAT_S) {
4796
- for (i = 0; i < len; i++) {
4797
- if (charTypes[i] == S) {
4798
- levels[i] = dir;
4799
- for (var j = i - 1; j >= 0; j--) {
4800
- if (charTypes[j] == WS) {
4801
- levels[j] = dir;
4802
- }
4803
- else {
4804
- break;
4805
- }
4806
- }
4807
- }
4808
- }
4809
- }
4810
-}
4811
-function _invertLevel(lev, levels, _array) {
4812
- if (hiLevel < lev) {
4813
- return;
4814
- }
4815
- if (lev == 1 && dir == RTL && !hasUBAT_B) {
4816
- _array.reverse();
4817
- return;
4818
- }
4819
- var len = _array.length, start = 0, end, lo, hi, tmp;
4820
- while (start < len) {
4821
- if (levels[start] >= lev) {
4822
- end = start + 1;
4823
- while (end < len && levels[end] >= lev) {
4824
- end++;
4825
- }
4826
- for (lo = start, hi = end - 1; lo < hi; lo++, hi--) {
4827
- tmp = _array[lo];
4828
- _array[lo] = _array[hi];
4829
- _array[hi] = tmp;
4830
- }
4831
- start = end;
4832
- }
4833
- start++;
4834
- }
4835
-}
4836
-function _getCharClass(chars, types, classes, ix) {
4837
- var cType = types[ix], wType, nType, len, i;
4838
- switch (cType) {
4839
- case L:
4840
- case R:
4841
- lastArabic = false;
4842
- case ON:
4843
- case AN:
4844
- return cType;
4845
- case EN:
4846
- return lastArabic ? AN : EN;
4847
- case AL:
4848
- lastArabic = true;
4849
- hasUBAT_AL = true;
4850
- return R;
4851
- case WS:
4852
- return ON;
4853
- case CS:
4854
- if (ix < 1 || (ix + 1) >= types.length ||
4855
- ((wType = classes[ix - 1]) != EN && wType != AN) ||
4856
- ((nType = types[ix + 1]) != EN && nType != AN)) {
4857
- return ON;
4858
- }
4859
- if (lastArabic) {
4860
- nType = AN;
4861
- }
4862
- return nType == wType ? nType : ON;
4863
- case ES:
4864
- wType = ix > 0 ? classes[ix - 1] : B;
4865
- if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) {
4866
- return EN;
4867
- }
4868
- return ON;
4869
- case ET:
4870
- if (ix > 0 && classes[ix - 1] == EN) {
4871
- return EN;
4872
- }
4873
- if (lastArabic) {
4874
- return ON;
4875
- }
4876
- i = ix + 1;
4877
- len = types.length;
4878
- while (i < len && types[i] == ET) {
4879
- i++;
4880
- }
4881
- if (i < len && types[i] == EN) {
4882
- return EN;
4883
- }
4884
- return ON;
4885
- case NSM:
4886
- len = types.length;
4887
- i = ix + 1;
4888
- while (i < len && types[i] == NSM) {
4889
- i++;
4890
- }
4891
- if (i < len) {
4892
- var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;
4893
- wType = types[i];
4894
- if (rtlCandidate && (wType == R || wType == AL)) {
4895
- return R;
4896
- }
4897
- }
4898
- if (ix < 1 || (wType = types[ix - 1]) == B) {
4899
- return ON;
4900
- }
4901
- return classes[ix - 1];
4902
- case B:
4903
- lastArabic = false;
4904
- hasUBAT_B = true;
4905
- return dir;
4906
- case S:
4907
- hasUBAT_S = true;
4908
- return ON;
4909
- case LRE:
4910
- case RLE:
4911
- case LRO:
4912
- case RLO:
4913
- case PDF:
4914
- lastArabic = false;
4915
- case BN:
4916
- return ON;
4917
- }
4918
-}
4919
-function _getCharacterType(ch) {
4920
- var uc = ch.charCodeAt(0), hi = uc >> 8;
4921
- if (hi == 0) {
4922
- return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);
4923
- }
4924
- else if (hi == 5) {
4925
- return (/[\u0591-\u05f4]/.test(ch) ? R : L);
4926
- }
4927
- else if (hi == 6) {
4928
- if (/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(ch))
4929
- return NSM;
4930
- else if (/[\u0660-\u0669\u066b-\u066c]/.test(ch))
4931
- return AN;
4932
- else if (uc == 0x066A)
4933
- return ET;
4934
- else if (/[\u06f0-\u06f9]/.test(ch))
4935
- return EN;
4936
- else
4937
- return AL;
4938
- }
4939
- else if (hi == 0x20 && uc <= 0x205F) {
4940
- return UnicodeTBL20[uc & 0xFF];
4941
- }
4942
- else if (hi == 0xFE) {
4943
- return (uc >= 0xFE70 ? AL : ON);
4944
- }
4945
- return ON;
4946
-}
4947
-function _isArabicDiacritics(ch) {
4948
- return (ch >= '\u064b' && ch <= '\u0655');
4949
-}
4950
-exports.L = L;
4951
-exports.R = R;
4952
-exports.EN = EN;
4953
-exports.ON_R = 3;
4954
-exports.AN = 4;
4955
-exports.R_H = 5;
4956
-exports.B = 6;
4957
-exports.RLE = 7;
4958
-exports.DOT = "\xB7";
4959
-exports.doBidiReorder = function (text, textCharTypes, isRtl) {
4960
- if (text.length < 2)
4961
- return {};
4962
- var chars = text.split(""), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = [];
4963
- dir = isRtl ? RTL : LTR;
4964
- _computeLevels(chars, levels, chars.length, textCharTypes);
4965
- for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++)
4966
- ;
4967
- _invertLevel(2, levels, logicalFromVisual);
4968
- _invertLevel(1, levels, logicalFromVisual);
4969
- for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width
4970
- if (textCharTypes[i] === AN) {
4971
- levels[i] = exports.AN;
4972
- }
4973
- else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE)
4974
- || textCharTypes[i] === ON || textCharTypes[i] === BN)) {
4975
- levels[i] = exports.ON_R;
4976
- }
4977
- else if ((i > 0 && chars[i - 1] === '\u0644') && /\u0622|\u0623|\u0625|\u0627/.test(chars[i])) {
4978
- levels[i - 1] = levels[i] = exports.R_H;
4979
- i++;
4980
- }
4981
- }
4982
- if (chars[chars.length - 1] === exports.DOT)
4983
- levels[chars.length - 1] = exports.B;
4984
- if (chars[0] === '\u202B')
4985
- levels[0] = exports.RLE;
4986
- for (var i = 0; i < logicalFromVisual.length; i++) {
4987
- bidiLevels[i] = levels[logicalFromVisual[i]];
4988
- }
4989
- return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels };
4990
-};
4991
-exports.hasBidiCharacters = function (text, textCharTypes) {
4992
- var ret = false;
4993
- for (var i = 0; i < text.length; i++) {
4994
- textCharTypes[i] = _getCharacterType(text.charAt(i));
4995
- if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))
4996
- ret = true;
4997
- }
4998
- return ret;
4999
-};
This file is too large to show in full.
webui/vendor/ace/mode-json.js
new
+8
@@ -0,0 +1,8 @@
1
+define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};r.inherits(s,i),t.JsonHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=e("../worker/worker_client").WorkerClient,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*[\{\(\[]\s*$/);i&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/json_worker","JsonWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(f.prototype),t.Mode=f}); (function() {
2
+ window.require(["ace/mode/json"], function(m) {
3
+ if (typeof module == "object" && typeof exports == "object" && module) {
4
+ module.exports = m;
5
+ }
6
+ });
7
+ })();
8
+
\ No newline at end of file
webui/vendor/ace/mode-markdown.js
new
+8
@@ -0,0 +1,8 @@
1
+define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?(?:"+e+"|(?=>))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],processing_instruction:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:t},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../config").$modes,i=e("../lib/oop"),s=e("../lib/lang"),o=e("./text_highlight_rules").TextHighlightRules,u=e("./html_highlight_rules").HtmlHighlightRules,a=function(e){return"(?:[^"+s.escapeRegExp(e)+"\\\\]|\\\\.)*"},f=function(){u.call(this);var e={token:"support.function",regex:/^\s*(```+[^`]*|~~~+[^~]*)$/,onMatch:function(e,t,n,i){var s=e.match(/^(\s*)([`~]+)(.*)/),o=/[\w-]+|$/.exec(s[3])[0];return r[o]||(o=""),n.unshift("githubblock",[],[s[1],s[2],o],t),this.token},next:"githubblock"},t=[{token:"support.function",regex:".*",onMatch:function(e,t,n,i){var s=n[1],o=n[2][0],u=n[2][1],a=n[2][2],f=/^(\s*)(`+|~+)\s*$/.exec(e);if(f&&f[1].length<o.length+3&&f[2].length>=u.length&&f[2][0]==u[0])return n.splice(0,3),this.next=n.shift(),this.token;this.next="";if(a&&r[a]){var l=r[a].getTokenizer().getLineTokens(e,s.slice(0));return n[1]=l.state,l.tokens}return this.token}}];this.$rules.start.unshift({token:"empty_line",regex:"^$",next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(e){return"markup.heading."+e.length},regex:/^#{1,6}(?=\s|$)/,next:"header"},e,{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"}),this.addRules({basic:[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:'^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'},{token:["text","string","text","constant","text"],regex:"(\\[)("+a("]")+")(\\]\\s*\\[)("+a("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\!?\\[)("+a("]")+")(\\]\\()"+'((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)'+'(\\s*"'+a('"')+'"\\s*)?'+"(\\))"},{token:"string.strong",regex:"([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"},{token:"string.emphasis",regex:"([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"},{token:["text","url","text"],regex:"(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"}],allowBlock:[{token:"support.function",regex:"^ {4}.+",next:"allowBlock"},{token:"empty_line",regex:"^$",next:"allowBlock"},{token:"empty",regex:"",next:"start"}],header:[{regex:"$",next:"start"},{include:"basic"},{defaultToken:"heading"}],"listblock-start":[{token:"support.variable",regex:/(?:\[[ x]\])?/,next:"listblock"}],listblock:[{token:"empty_line",regex:"^$",next:"start"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic",noEscape:!0},e,{defaultToken:"list"}],blockquote:[{token:"empty_line",regex:"^\\s*$",next:"start"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{include:"basic",noEscape:!0},{defaultToken:"string.blockquote"}],githubblock:t}),this.normalizeRules()};i.inherits(f,o),t.MarkdownHighlightRules=f}),define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.foldingStartMarker=/^(?:[=-]+\s*$|#{1,6} |`{3})/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?r[0]=="`"?e.bgTokenizer.getState(n)=="start"?"end":"start":"start":""},this.getFoldWidgetRange=function(e,t,n){function l(t){return f=e.getTokens(t)[0],f&&f.type.lastIndexOf(c,0)===0}function h(){var e=f.value[0];return e=="="?6:e=="-"?5:7-f.value.search(/[^#]|$/)}var r=e.getLine(n),i=r.length,o=e.getLength(),u=n,a=n;if(!r.match(this.foldingStartMarker))return;if(r[0]=="`"){if(e.bgTokenizer.getState(n)!=="start"){while(++n<o){r=e.getLine(n);if(r[0]=="`"&r.substring(0,3)=="```")break}return new s(u,i,n,0)}while(n-->0){r=e.getLine(n);if(r[0]=="`"&r.substring(0,3)=="```")break}return new s(n,r.length,u,0)}var f,c="markup.heading";if(l(n)){var p=h();while(++n<o){if(!l(n))continue;var d=h();if(d>=p)break}a=n-(!f||["=","-"].indexOf(f.value[0])==-1?1:2);if(a>u)while(a>u&&/^\s*$/.test(e.getLine(a)))a--;if(a>u){var v=e.getLine(a).length;return new s(u,i,a,v)}}}}.call(o.prototype)}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column<l)return;if(u.column==l){var c=a.stepForward();if(c&&o(c,"attribute-value"))return;a.stepBackward()}}if(/^\s*>/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:"></"+d+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value==="</"?{text:"\n"+v+"\n"+d,selection:[1,v.length,1,v.length]}:{text:"\n"+v}}}}})};r.inherits(u,i),t.XmlBehaviour=u}),define("ace/mode/behaviour/javascript",["require","exports","module","ace/lib/oop","ace/token_iterator","ace/mode/behaviour/cstyle","ace/mode/behaviour/xml"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../token_iterator").TokenIterator,s=e("../behaviour/cstyle").CstyleBehaviour,o=e("../behaviour/xml").XmlBehaviour,u=function(){var e=(new o({closeCurlyBraces:!0})).getBehaviours();this.addBehaviours(e),this.inherit(s),this.add("autoclosing-fragment","insertion",function(e,t,n,r,s){if(s==">"){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:"></>",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/<!-/.test(e.getLine(t))?"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new u;for(var i=0;i<n.length;i++){var s=n[i];if(a(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=a(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value;if(s.value===""){s=n[++i];if(!s)return null;r.tagName=s.value}r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(a(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r-1)continue;if(a(u,"end-tag-open")){u=i[o+1],a(u,"tag-name")&&u.value===""&&(u=i[o+2]);if(u&&u.value==n)return!0}}return!1},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return this.getCommentFoldWidget(e,n)&&e.getCommentFoldRange(n,e.getLine(n).length);var s=e.getMatchingTags({row:n,column:0});if(s)return new i(s.openTag.end.row,s.openTag.end.column,s.closeTag.start.row,s.closeTag.start.column)}}).call(o.prototype)}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.reservedKeywords="!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set|function|declare|readonly",o=t.languageConstructs="[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",u=function(){var e=this.createKeywordMapper({keyword:s,"support.function.builtin":o,"invalid.deprecated":"debugger"},"identifier"),t="(?:(?:[1-9]\\d*)|(?:0))",n="(?:\\.\\d+)",r="(?:\\d+)",i="(?:(?:"+r+"?"+n+")|(?:"+r+"\\.))",u="(?:(?:"+i+"|"+r+")"+")",a="(?:"+u+"|"+i+")",f="(?:&"+r+")",l="[a-zA-Z_][a-zA-Z0-9_]*",c="(?:"+l+"(?==))",h="(?:\\$(?:SHLVL|\\$|\\!|\\?))",p="(?:"+l+"\\s*\\(\\))";this.$rules={start:[{token:"constant",regex:/\\./},{token:["text","comment"],regex:/(^|\s)(#.*)$/},{token:"string.start",regex:'"',push:[{token:"constant.language.escape",regex:/\\(?:[$`"\\]|$)/},{include:"variables"},{token:"keyword.operator",regex:/`/},{token:"string.end",regex:'"',next:"pop"},{defaultToken:"string"}]},{token:"string",regex:"\\$'",push:[{token:"constant.language.escape",regex:/\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/},{token:"string",regex:"'",next:"pop"},{defaultToken:"string"}]},{regex:"<<<",token:"keyword.operator"},{stateName:"heredoc",regex:"(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[4]),[{type:"constant",value:i[1]},{type:"text",value:i[2]},{type:"string",value:i[3]},{type:"support.class",value:i[4]},{type:"string",value:i[5]}]},rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:["keyword","text","text","text","variable"],regex:/(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/},{token:"variable.language",regex:h},{token:"variable",regex:c},{include:"variables"},{token:"support.function",regex:p},{token:"support.function",regex:f},{token:"string",start:"'",end:"'"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:t+"\\b"},{token:e,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"},{token:"punctuation.operator",regex:";"},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]]"},{token:"paren.rparen",regex:"[\\)\\}]",next:"pop"}],variables:[{token:"variable",regex:/(\$)(\w+)/},{token:["variable","paren.lparen"],regex:/(\$)(\()/,push:"start"},{token:["variable","paren.lparen","keyword.operator","variable","keyword.operator"],regex:/(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,push:"start"},{token:"variable",regex:/\$[*@#?\-$!0_]/},{token:["variable","paren.lparen"],regex:/(\$)(\{)/,push:"start"}]},this.normalizeRules()};r.inherits(u,i),t.ShHighlightRules=u}),define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sh_highlight_rules").ShHighlightRules,o=e("../range").Range,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.foldingRules=new u,this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new o(n,r.length-i.length,n,r.length))},this.$id="ace/mode/sh",this.snippetFileId="ace/snippets/sh"}.call(a.prototype),t.Mode=a}),define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./xml_highlight_rules").XmlHighlightRules,u=e("./behaviour/xml").XmlBehaviour,a=e("./folding/xml").FoldMode,f=e("../worker/worker_client").WorkerClient,l=function(){this.HighlightRules=o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(l,s),function(){this.voidElements=i.arrayToMap([]),this.blockComment={start:"<!--",end:"-->"},this.createWorker=function(e){var t=new f(["ace"],"ace/mode/xml_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/xml"}.call(l.prototype),t.Mode=l}),define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/behaviour/cstyle","ace/mode/text","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown","ace/mode/javascript","ace/mode/html","ace/mode/sh","ace/mode/sh","ace/mode/xml","ace/mode/css"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./behaviour/cstyle").CstyleBehaviour,s=e("./text").Mode,o=e("./markdown_highlight_rules").MarkdownHighlightRules,u=e("./folding/markdown").FoldMode,a=function(){this.HighlightRules=o,this.createModeDelegates({javascript:e("./javascript").Mode,html:e("./html").Mode,bash:e("./sh").Mode,sh:e("./sh").Mode,xml:e("./xml").Mode,css:e("./css").Mode}),this.foldingRules=new u,this.$behaviour=new i({braces:!0})};r.inherits(a,s),function(){this.type="text",this.blockComment={start:"<!--",end:"-->"},this.$quotes={'"':'"',"`":"`"},this.getNextLineIndent=function(e,t,n){if(e=="listblock"){var r=/^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(t);if(!r)return"";var i=r[2];return i||(i=parseInt(r[3],10)+1+"."),r[1]+i+r[4]}return this.$getIndent(t)},this.$id="ace/mode/markdown",this.snippetFileId="ace/snippets/markdown"}.call(a.prototype),t.Mode=a}); (function() {
2
+ window.require(["ace/mode/markdown"], function(m) {
3
+ if (typeof module == "object" && typeof exports == "object" && module) {
4
+ module.exports = m;
5
+ }
6
+ });
7
+ })();
8
+
\ No newline at end of file
webui/vendor/ace/theme-github_dark.js
new
+8
@@ -0,0 +1,8 @@
1
+define("ace/theme/github_dark-css",["require","exports","module"],function(e,t,n){n.exports=".ace-github-dark .ace_gutter {\n background: #24292e;\n color: #7388b5\n}\n\n.ace-github-dark .ace_print-margin {\n width: 1px;\n background: #00204b\n}\n\n.ace-github-dark {\n background-color: #24292e;\n color: #FFFFFF\n}\n\n.ace-github-dark .ace_constant.ace_other,\n.ace-github-dark .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-github-dark .ace_marker-layer .ace_selection {\n background: #003F8E\n}\n\n.ace-github-dark.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #24292e;\n}\n\n.ace-github-dark .ace_marker-layer .ace_step {\n background: rgb(127, 111, 19)\n}\n\n.ace-github-dark .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #404F7D\n}\n\n.ace-github-dark .ace_marker-layer .ace_active-line {\n background: #00346E\n}\n\n.ace-github-dark .ace_gutter-active-line {\n background-color: #24292e\n}\n\n.ace-github-dark .ace_marker-layer .ace_selected-word {\n border: 1px solid #003F8E\n}\n\n.ace-github-dark .ace_invisible {\n color: #404F7D\n}\n\n.ace-github-dark .ace_keyword,\n.ace-github-dark .ace_meta,\n.ace-github-dark .ace_storage,\n.ace-github-dark .ace_storage.ace_type,\n.ace-github-dark .ace_support.ace_type {\n color: #ff7b72\n}\n\n.ace-github-dark .ace_keyword.ace_operator {\n color: #79c0ff\n}\n\n.ace-github-dark .ace_constant.ace_character,\n.ace-github-dark .ace_constant.ace_language,\n.ace-github-dark .ace_constant.ace_numeric,\n.ace-github-dark .ace_keyword.ace_other.ace_unit,\n.ace-github-dark .ace_support.ace_constant,\n.ace-github-dark .ace_variable.ace_parameter {\n color: #FFC58F\n}\n\n.ace-github-dark .ace_invalid {\n color: #FFFFFF;\n background-color: #F99DA5\n}\n\n.ace-github-dark .ace_invalid.ace_deprecated {\n color: #FFFFFF;\n background-color: #ff7b72\n}\n\n.ace-github-dark .ace_fold {\n background-color: #BBDAFF;\n border-color: #FFFFFF\n}\n\n.ace-github-dark .ace_entity.ace_name.ace_function,\n.ace-github-dark .ace_support.ace_function,\n.ace-github-dark .ace_variable {\n color: #BBDAFF\n}\n\n.ace-github-dark .ace_support.ace_class,\n.ace-github-dark .ace_support.ace_type {\n color: #FFEEAD\n}\n\n.ace-github-dark .ace_heading,\n.ace-github-dark .ace_markup.ace_heading,\n.ace-github-dark .ace_string {\n color: #9fcef6\n}\n\n.ace-github-dark .ace_entity.ace_name.ace_tag,\n.ace-github-dark .ace_entity.ace_other.ace_attribute-name,\n.ace-github-dark .ace_meta.ace_tag,\n.ace-github-dark .ace_string.ace_regexp,\n.ace-github-dark .ace_variable {\n color: #FF9DA4\n}\n\n.ace-github-dark .ace_comment {\n color: #7285B7\n}\n\n.ace-github-dark .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYJDzqfwPAANXAeNsiA+ZAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-github-dark .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n\n.ace-github-dark .ace_constant.ace_buildin {\n color: #0086B3;\n}\n\n.ace-github-dark .ace_variable.ace_language {\n color: #ffffff;\n}\n "}),define("ace/theme/github_dark",["require","exports","module","ace/theme/github_dark-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-github-dark",t.cssText=e("./github_dark-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() {
2
+ window.require(["ace/theme/github_dark"], function(m) {
3
+ if (typeof module == "object" && typeof exports == "object" && module) {
4
+ module.exports = m;
5
+ }
6
+ });
7
+ })();
8
+
\ No newline at end of file
webui/vendor/ace/worker-json.js
new
+1
@@ -0,0 +1 @@
1
+"no use strict";!function(e){function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")return i+r;if(i)return i.location.replace(/\/*$/,"/")+(r||i.main||i.name);if(i===!1)return"";var s=n.lastIndexOf("/");if(s===-1)break;r=n.substr(s)+r,n=n.slice(0,s)}return e}if(typeof e.window!="undefined"&&e.document)return;if(e.require&&e.define)return;e.console||(e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console),e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,data:i&&i.data,file:t,line:n,col:r,stack:i&&i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(r,i){i||(i=r,r=null);if(!i.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");i=e.normalizeModule(r,i);var s=e.require.modules[i];if(s)return s.initialized||(s.initialized=!0,s.exports=s.factory().exports),s.exports;if(!e.require.tlns)return console.log("unable to load "+i);var o=t(i,e.require.tlns);return o.slice(-3)!=".js"&&(o+=".js"),e.require.id=i,e.require.modules[i]={},importScripts(o),e.require(r,i)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.slice(0,r.length).map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.require.tlns={},e.initBaseUrls=function(t){for(var n in t)this.require.tlns[n]=t[n]},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var n=e.main=null,r=e.sender=null;e.onmessage=function(t){var i=t.data;if(i.event&&r)r._signal(i.event,i.data);else if(i.command)if(n[i.command])n[i.command].apply(n,i.args);else{if(!e[i.command])throw new Error("Unknown command:"+i.command);e[i.command].apply(e,i.args)}else if(i.init){e.initBaseUrls(i.tlns),r=e.sender=e.initSender();var s=this.require(i.module)[i.classname];n=e.main=new s(r)}}}(this),define("ace/lib/oop",[],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),define("ace/apply_delta",[],function(e,t,n){"use strict";function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: "+t}function i(e,t){return t.row>=0&&t.row<e.length&&t.column>=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),define("ace/lib/event_emitter",[],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;this.on(e,function r(){n.off(e,r),t.apply(null,arguments)});if(!t)return new Promise(function(e){t=e})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t)r&&this.setDefaultHandler(e,r.pop());else if(r){var i=r.indexOf(t);i!=-1&&r.splice(i,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){e||(this._eventRegistry=this._defaultHandlers=undefined),this._eventRegistry&&(this._eventRegistry[e]=undefined),this._defaultHandlers&&(this._defaultHandlers[e]=undefined)},t.EventEmitter=r}),define("ace/range",[],function(e,t,n){"use strict";var r=function(){function e(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}}return e.prototype.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},e.prototype.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},e.prototype.contains=function(e,t){return this.compare(e,t)==0},e.prototype.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},e.prototype.comparePoint=function(e){return this.compare(e.row,e.column)},e.prototype.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},e.prototype.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},e.prototype.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},e.prototype.isStart=function(e,t){return this.start.row==e&&this.start.column==t},e.prototype.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},e.prototype.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},e.prototype.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},e.prototype.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},e.prototype.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},e.prototype.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},e.prototype.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},e.prototype.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},e.prototype.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},e.prototype.clipRows=function(t,n){if(this.end.row>n)var r={row:n+1,column:0};else if(this.end.row<t)var r={row:t,column:0};if(this.start.row>n)var i={row:n+1,column:0};else if(this.start.row<t)var i={row:t,column:0};return e.fromPoints(i||this.start,r||this.end)},e.prototype.extend=function(t,n){var r=this.compare(t,n);if(r==0)return this;if(r==-1)var i={row:t,column:n};else var s={row:t,column:n};return e.fromPoints(i||this.start,s||this.end)},e.prototype.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},e.prototype.isMultiLine=function(){return this.start.row!==this.end.row},e.prototype.clone=function(){return e.fromPoints(this.start,this.end)},e.prototype.collapseRows=function(){return this.end.column==0?new e(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new e(this.start.row,0,this.end.row,0)},e.prototype.toScreenRange=function(t){var n=t.documentToScreenPosition(this.start),r=t.documentToScreenPosition(this.end);return new e(n.row,n.column,r.row,r.column)},e.prototype.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t},e}();r.fromPoints=function(e,t){return new r(e.row,e.column,t.row,t.column)},r.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=r}),define("ace/anchor",[],function(e,t,n){"use strict";function o(e,t,n){var r=n?e.column<=t.column:e.column<t.column;return e.row<t.row||e.row==t.row&&r}function u(e,t,n){var r=e.action=="insert",i=(r?1:-1)*(e.end.row-e.start.row),s=(r?1:-1)*(e.end.column-e.start.column),u=e.start,a=r?u:e.end;return o(t,u,n)?{row:t.row,column:t.column}:o(a,t,!n)?{row:t.row+i,column:t.column+(t.row==a.row?s:0)}:{row:u.row,column:u.column}}var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=function(){function e(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof t!="number"?this.setPosition(t.row,t.column):this.setPosition(t,n)}return e.prototype.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},e.prototype.getDocument=function(){return this.document},e.prototype.onChange=function(e){if(e.start.row==e.end.row&&e.start.row!=this.row)return;if(e.start.row>this.row)return;var t=u(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(t.row,t.column,!0)},e.prototype.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},e.prototype.detach=function(){this.document.off("change",this.$onChange)},e.prototype.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},e.prototype.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n},e}();s.prototype.$insertRight=!1,r.implement(s.prototype,i),t.Anchor=s}),define("ace/document",[],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(){function e(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)}return e.prototype.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e||"")},e.prototype.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},e.prototype.createAnchor=function(e,t){return new u(this,e,t)},e.prototype.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},e.prototype.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},e.prototype.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},e.prototype.getNewLineMode=function(){return this.$newLineMode},e.prototype.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},e.prototype.getLine=function(e){return this.$lines[e]||""},e.prototype.getLines=function(e,t){return this.$lines.slice(e,t+1)},e.prototype.getAllLines=function(){return this.getLines(0,this.getLength())},e.prototype.getLength=function(){return this.$lines.length},e.prototype.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},e.prototype.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},e.prototype.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},e.prototype.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},e.prototype.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},e.prototype.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},e.prototype.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},e.prototype.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},e.prototype.clonePos=function(e){return{row:e.row,column:e.column}},e.prototype.pos=function(e,t){return{row:e,column:t}},e.prototype.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},e.prototype.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e<this.getLength()?(t=t.concat([""]),n=0):(t=[""].concat(t),e--,n=this.$lines[e].length),this.insertMergedLines({row:e,column:n},t)},e.prototype.insertMergedLines=function(e,t){var n=this.clippedPos(e.row,e.column),r={row:n.row+t.length-1,column:(t.length==1?n.column:0)+t[t.length-1].length};return this.applyDelta({start:n,end:r,action:"insert",lines:t}),this.clonePos(r)},e.prototype.remove=function(e){var t=this.clippedPos(e.start.row,e.start.column),n=this.clippedPos(e.end.row,e.end.column);return this.applyDelta({start:t,end:n,action:"remove",lines:this.getLinesForRange({start:t,end:n})}),this.clonePos(t)},e.prototype.removeInLine=function(e,t,n){var r=this.clippedPos(e,t),i=this.clippedPos(e,n);return this.applyDelta({start:r,end:i,action:"remove",lines:this.getLinesForRange({start:r,end:i})},!0),this.clonePos(r)},e.prototype.removeFullLines=function(e,t){e=Math.min(Math.max(0,e),this.getLength()-1),t=Math.min(Math.max(0,t),this.getLength()-1);var n=t==this.getLength()-1&&e>0,r=t<this.getLength()-1,i=n?e-1:e,s=n?this.getLine(i).length:0,u=r?t+1:t,a=r?0:this.getLine(u).length,f=new o(i,s,u,a),l=this.$lines.slice(e,t+1);return this.applyDelta({start:f.start,end:f.end,action:"remove",lines:this.getLinesForRange(f)}),l},e.prototype.removeNewLine=function(e){e<this.getLength()-1&&e>=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},e.prototype.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},e.prototype.applyDeltas=function(e){for(var t=0;t<e.length;t++)this.applyDelta(e[t])},e.prototype.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--)this.revertDelta(e[t])},e.prototype.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4?this.$splitAndapplyLargeDelta(e,2e4):(i(this.$lines,e,t),this._signal("change",e))},e.prototype.$safeApplyDelta=function(e){var t=this.$lines.length;(e.action=="remove"&&e.start.row<t&&e.end.row<t||e.action=="insert"&&e.start.row<=t)&&this.applyDelta(e)},e.prototype.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length-t+1,i=e.start.row,s=e.start.column;for(var o=0,u=0;o<r;o=u){u+=t-1;var a=n.slice(o,u);a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}e.lines=n.slice(o),e.start.row=i+o,e.start.column=s,this.applyDelta(e,!0)},e.prototype.revertDelta=function(e){this.$safeApplyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},e.prototype.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:e+n[s-1].length+r}},e.prototype.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column},e.prototype.$split=function(e){return e.split(/\r\n|\r|\n/)},e}();a.prototype.$autoNewLine="",a.prototype.$newLineMode="auto",r.implement(a.prototype,s),t.Document=a}),define("ace/lib/deep_copy",[],function(e,t,n){t.deepCopy=function r(e){if(typeof e!="object"||!e)return e;var t;if(Array.isArray(e)){t=[];for(var n=0;n<e.length;n++)t[n]=r(e[n]);return t}if(Object.prototype.toString.call(e)!=="[object Object]")return e;t={};for(var n in e)t[n]=r(e[n]);return t}}),define("ace/lib/lang",[],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=e("./deep_copy").deepCopy,t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return(""+e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i},t.supportsLookbehind=function(){try{new RegExp("(?<=.)")}catch(e){return!1}return!0},t.skipEmptyMatch=function(e,t,n){return n&&e.codePointAt(t)>65535?2:1}}),define("ace/worker/mirror",[],function(e,t,n){"use strict";var r=e("../document").Document,i=e("../lib/lang"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.delayedCall(this.onUpdate.bind(this)),s=this;e.on("change",function(e){var r=e.data;if(r[0].start)t.applyDeltas(r);else for(var i=0;i<r.length;i+=2){var o,u;Array.isArray(r[i+1])?o={action:"insert",start:r[i],lines:r[i+1]}:o={action:"remove",start:r[i],end:r[i+1]};if((o.action=="insert"?o.start:o.end).row>=t.$lines.length)throw u=new Error("Invalid delta"),u.data={path:s.$path,linesLength:t.$lines.length,start:o.start,end:o.end},u;t.applyDelta(o,!0)}if(s.$timeout)return n.schedule(s.$timeout);s.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(s.prototype)}),define("ace/mode/json/json_parse",[],function(e,t,n){"use strict";var r,i,s={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:" "},o,u=function(e){throw{name:"SyntaxError",message:e,at:r,text:o}},a=function(e){return e&&e!==i&&u("Expected '"+e+"' instead of '"+i+"'"),i=o.charAt(r),r+=1,i},f=function(){var e,t="";i==="-"&&(t="-",a("-"));while(i>="0"&&i<="9")t+=i,a();if(i==="."){t+=".";while(a()&&i>="0"&&i<="9")t+=i}if(i==="e"||i==="E"){t+=i,a();if(i==="-"||i==="+")t+=i,a();while(i>="0"&&i<="9")t+=i,a()}e=+t;if(!isNaN(e))return e;u("Bad number")},l=function(){var e,t,n="",r;if(i==='"')while(a()){if(i==='"')return a(),n;if(i==="\\"){a();if(i==="u"){r=0;for(t=0;t<4;t+=1){e=parseInt(a(),16);if(!isFinite(e))break;r=r*16+e}n+=String.fromCharCode(r)}else{if(typeof s[i]!="string")break;n+=s[i]}}else{if(i=="\n"||i=="\r")break;n+=i}}u("Bad string")},c=function(){while(i&&i<=" ")a()},h=function(){switch(i){case"t":return a("t"),a("r"),a("u"),a("e"),!0;case"f":return a("f"),a("a"),a("l"),a("s"),a("e"),!1;case"n":return a("n"),a("u"),a("l"),a("l"),null}u("Unexpected '"+i+"'")},p,d=function(){var e=[];if(i==="["){a("["),c();if(i==="]")return a("]"),e;while(i){e.push(p()),c();if(i==="]")return a("]"),e;a(","),c()}}u("Bad array")},v=function(){var e,t={};if(i==="{"){a("{"),c();if(i==="}")return a("}"),t;while(i){e=l(),c(),a(":"),Object.hasOwnProperty.call(t,e)&&u('Duplicate key "'+e+'"'),t[e]=p(),c();if(i==="}")return a("}"),t;a(","),c()}}u("Bad object")};return p=function(){c();switch(i){case"{":return v();case"[":return d();case'"':return l();case"-":return f();default:return i>="0"&&i<="9"?f():h()}},function(e,t){var n;return o=e,r=0,i=" ",n=p(),c(),i&&u("Syntax error"),typeof t=="function"?function s(e,n){var r,i,o=e[n];if(o&&typeof o=="object")for(r in o)Object.hasOwnProperty.call(o,r)&&(i=s(o,r),i!==undefined?o[r]=i:delete o[r]);return t.call(e,n,o)}({"":n},""):n}}),define("ace/mode/json_worker",[],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../worker/mirror").Mirror,s=e("./json/json_parse"),o=t.JsonWorker=function(e){i.call(this,e),this.setTimeout(200)};r.inherits(o,i),function(){this.onUpdate=function(){var e=this.doc.getValue(),t=[];try{e&&s(e)}catch(n){var r=this.doc.indexToPosition(n.at-1);t.push({row:r.row,column:r.column,text:n.message,type:"error"})}this.sender.emit("annotate",t)}}.call(o.prototype)})
\ No newline at end of file